Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод данных из таблицы в ListBox,работа с записям 
:(
    Опции темы
Berliner
Дата 10.4.2006, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Например такая задача есть данные в таблице
Дно Размер Цена

В ListBox будет отображаться только Размер. Мне нужно чтобы когда я стал на запись. в TlistBox то можно было бы оперировать с данными (например переменой s:= присвоить значения цены, Размер и Цена которые относятся к данной записи. Подскажите плиз, очень нужно
PM   Вверх
Foley
Дата 10.4.2006, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фсемба Яцца
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 31.1.2006
Где: Россия, Арх.обл

Репутация: нет
Всего: 7



есть компанента ДБЛистБокс, настрой у него значения ДатаСоурце и ФилдНэйм и работай с ним, а если ты хочешь добавить записи в обычный листбокс то это делается так:
Код

if ListBox1.Items.IndexOF(Text) = -1 then    
  ListBox1.Items.Add(Text);



Цитата(Berliner @ 10.4.2006, 12:07 Найти цитируемый пост)
В ListBox будет отображаться только Размер. Мне нужно чтобы когда я стал на запись. в TlistBox то можно было бы оперировать с данными (например переменой s:= присвоить значения цены, Размер и Цена которые относятся к данной записи. Подскажите плиз, очень нужно

поподробней можно?
Добавлено @ 22:27
техт - это текст который тебе надо вставить в листбох
PM MAIL ICQ   Вверх
ТоляМБА
Дата 11.4.2006, 06:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Цитата(Berliner @ 10.4.2006, 12:07 Найти цитируемый пост)
В ListBox будет отображаться только Размер.
Ну добавлять-то в ListBox наверное знаешь как?
Код

ListBox1.Items.Add();

Цитата(Berliner @ 10.4.2006, 12:07 Найти цитируемый пост)
Мне нужно чтобы когда я стал на запись. в TlistBox то можно было бы оперировать с данными
Когда заполнишь ListBox обкатай след. процедуру:
Код

procedure TForm1.ListBox1Click(Sender: TObject);
var
   i:Integer;
   s:String;
begin
   i:=ListBox1.ItemIndex;
   s:=ListBox1.Items.Strings[i];
   ShowMessage(s);
end;
Ну а по значению переменной s делай SQL запрос для поиска в табле.
ЗЫ. Если что - пиши, нарисую полный пример.
PM   Вверх
Berliner
Дата 12.4.2006, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Спасиб за советы - вот написал код

Код

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
 dbListBox1.Items.BeginUpdate;
//  try
    DBListBox1.Items.Clear;
    for i := 0 to Table1.Fields.Count - 1 do
      DBListBox1.Items.Add(Table1.Fields[1].AsString); //

 // finally
    DBListBox1.Items.EndUpdate;

 //end;

end;

procedure TForm1.Button2Click(Sender: TObject);
var k:integer;
    s:string;

begin

   k:=DBListBox1.ItemIndex;
   s:=DbListBox1.Items.Strings[k];
   Query1.SQl.Clear;
   Query1.ParamByName('toppingParam').AsString:=s;
   Query1.SQL.Add('select topping,base,size from package.db where topping=toppingParam');
   Query1.Open;
Тут хочу внести результат выполенения запроса в текстовое поле.
end;



Только не работет нормально в Table1 есть 2 записи. А показывает 5
записей и все одинаковые. И я хочу результат запроса присвоить текстовому полю. Подправте код пожалуста ,и подскажите как присвоить результат текстовому полю.



PM   Вверх
Tror
Дата 12.4.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

Репутация: нет
Всего: 4



Код

   k:=DBListBox1.ItemIndex;
   s:=DbListBox1.Items.Strings[k];
   Query1.Close;
   Query1.SQl.Clear;
   Query1.SQL.Add('select topping,base,size from package.db where topping=:toppingParam');
   Query1.ParamByName('toppingParam').AsString:=s;
   Query1.Open;

   str := Query1.Fields[0].AsString + '  ';
   str := Query1.Fields[1].AsString + '  ';
   str := Query1.Fields[2].AsString;   
   EdResult := str;


это если у тебя в результате вернулась одна запись,
если несколько, то делаешь цикл. кол-во записей, которые возвратил Query
находится в Query.RecordCount

Удачиsmile
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
Berliner
Дата 12.4.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Спасиб за ответ а может надо наоборот вместо
Код

Query1.SQL.Add('select topping,base,size from package.db where topping=:toppingParam');
   Query1.ParamByName('toppingParam').AsString:=s;


Код

Query1.ParamByName('toppingParam').AsString:=s;
Query1.SQL.Add('select topping,base,size from package.db where topping=:toppingParam');

так как вроде мы задаем параметр ,а потом с этим параметром будем работать.

и подскажите плиз че у меня одна и таже запись несколько раз вылазит(5 раз)
вместо двух разных записей? что не так

Код

    
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
 dbListBox1.Items.BeginUpdate;
//  try
    DBListBox1.Items.Clear;
    for i := 0 to Table1.Fields.Count - 1 do
      DBListBox1.Items.Add(Table1.Fields[1].AsString); //
 // finally
    DBListBox1.Items.EndUpdate;
 //end;
end;


PM   Вверх
Tror
Дата 12.4.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

Репутация: нет
Всего: 4



Цитата(Berliner @ 12.4.2006, 11:16 Найти цитируемый пост)
Спасиб за ответ а может надо наоборот

нет, именно как у меня и между этими двумя строками надо еще добавить
одну
Код

Query1.SQL.Add('select topping,base,size from package.db where topping=:toppingParam');
Query1.Params.ParseSQL(Query1.Text, True);
Query1.ParamByName('toppingParam').AsString:=s;


Цитата(Berliner @ 12.4.2006, 11:16 Найти цитируемый пост)
и подскажите плиз че у меня одна и таже запись несколько раз вылазит(5 раз)


вот так все будет работать

Код

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
 dbListBox1.Items.BeginUpdate;
//  try
        DBListBox1.Items.Clear;
        Table1.First;

        for i := 0 to Table1.RecordCount - 1 do
        begin
            DBListBox1.Items.Add(Table1.Fields[1].AsString);
            Table1.Next;
        end;

 // finally
        DBListBox1.Items.EndUpdate;
 //end;
end;


Это сообщение отредактировал(а) Tror - 12.4.2006, 11:35
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
Berliner
Дата 13.4.2006, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Спасибо за ответы
Вроде как бы работает ,но вылазит ошибка List of bounds -1 подскажите пожалуста ,где нужно ошибку исправить

Код

begin
  ListBox1.Items.BeginUpdate;
//  try
        ListBox1.Items.Clear;
        Table1.First;
        for i := 0 to Table1.RecordCount - 1 do
        begin
            ListBox1.Items.Add(Table1.Fields[0].AsString);
            Table1.Next;
        end;
 // finally
        ListBox1.Items.EndUpdate;


        k:=ListBox1.ItemIndex;
        s:=ListBox1.Items.Strings[k];
// вот тут ошибка лезит

            Query1.Close;
            Query1.SQl.Clear;
            Query1.SQL.Add('select topping,base,size from package.db where topping=:toppingParam');
            Query1.Params.ParseSQL(Query1.Text, True);
            Query1.ParamByName('toppingParam').AsString:=s;


        code:=Query1.Fields[0].AsString + '  ';
        topping:=Query1.Fields[1].AsString + '  ';
        price:=Query1.Fields[2].AsString;
        AddResult:=code+topping+price;   


 //end;


end;




PM   Вверх
Tror
Дата 13.4.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

Репутация: нет
Всего: 4



Цитата

TCustomStringList.ItemIndex
Specifies the ordinal number of the selected item in the list box’s item list.


т.е ItemIndex указывает на выделенный элемент листбокса,
а у тебя получается, что после заполнения списка ни один элемент не выделен.
Таким образом напрашивается следующее решение:
заполнять листбокс на нажатие кнопки, а производить поиск
в обработчике OnClick листбокса.
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
Berliner
Дата 13.4.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



ок Спасиб
PM   Вверх
Berliner
Дата 13.4.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



ок а в этом куске кода пишет Param Toppings not found? может параметр еще гдето надо будет прописывать? в query в инспекторе объектов TParam свойство править надо? подскажите плиз.

Код

Query1.Close;
            Query1.SQl.Clear;
            Query1.SQL.Add('select topping,base,size from package.db where topping=:toppingParam');
            Query1.Params.ParseSQL(Query1.Text, True);
            Query1.ParamByName('toppingParam').AsString:=s;
        code:=Query1.Fields[0].AsString + '  ';
        topping:=Query1.Fields[1].AsString + '  ';
        price:=Query1.Fields[2].AsString;
        AddResult:=code+topping+price; 



Это сообщение отредактировал(а) Berliner - 13.4.2006, 15:12
PM   Вверх
Berliner
Дата 14.4.2006, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Может кто нибудь знает?
PM   Вверх
Tror
Дата 14.4.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

Репутация: нет
Всего: 4



Код

   Query1.Close;
   Query1.SQl.Clear;
   Query1.SQL.Add('select topping,base,size from package.db where topping=:toppingParam');

Query1.Params.ParseSQL(Query1.SQL.Text, True);
Код

   Query1.ParamByName('toppingParam').AsString:=s;


Query1.Open;

Код

   code:=Query1.Fields[0].AsString + '  ';
   topping:=Query1.Fields[1].AsString + '  ';
   price:=Query1.Fields[2].AsString;
   AddResult:=code+topping+price; 


Это сообщение отредактировал(а) Tror - 14.4.2006, 11:35
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
Berliner
Дата 14.4.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



а тут после topping:=Query1.Fields[1].AsString + ' '; -пишет index out of bounds(1)
если убрать эту строку то пишет пишет index out of bounds(2). Т.Е. рунается на второе поле. Хотя странно вроде все поля наместе и т.д.
интересно че только первую рапись пропускает?
Код

code:=Query1.Fields[0].AsString + '  ';
   topping:=Query1.Fields[1].AsString + '  ';
   price:=Query1.Fields[2].AsString;
   AddResult:=code+topping+price; 



Это сообщение отредактировал(а) Berliner - 14.4.2006, 12:45
PM   Вверх
Berliner
Дата 17.4.2006, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Знатоки помогите отловить ошибку пожалуста. И интересно, что при отладке по шагам - значение переменной code правильное,  а после бьет ошибку. 
code:=Query1.Fields[0].AsString + '  ';
 
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.