Помощь - Поиск - Пользователи - Календарь
Полная версия: Глупый вопрос по циклу и Listbox
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
cooler
procedure TForm2.ListBox4Click(Sender: TObject);
var sDBItem1,sDBItem2,sDBItem3,sDBItem4,sDBItem5:string;
i,ia:integer;
begin

Memo1.Lines.Clear;

with ADOQuery1 do begin
SQL.Clear;
SQL.Add ('Select event_note,event_site,koeff_p1,koeff_n,koeff_p2 from bet');

Open;
First;
while not eof do



begin
sDBItem1 := String(FieldValues ['event_note']);
sDBItem2 := String(FieldValues ['event_site']);
sDBItem3 := String(FieldValues ['koeff_p1']);
sDBItem4 := String(FieldValues ['koeff_n']);
sDBItem5 := String(FieldValues ['koeff_p2']);
Memo1.lines.Add(sDBItem1);
Memo1.lines.Add(sDBItem2);
Memo1.lines.Add('Коэффициенты: '+ sDBItem3+' - '+sDBItem4+' - '+sDBItem5);
Next;
end;
end;
end;


В листбоксе несколько записей(строк) при нажатии на разные строки должна появляться разная информация в Мемо, которая берется из файла БД access, но сейчас выводится до конца файла всё, а мне надо чтобы выводились записи с номером как у листбокса, как сделать?
Client
Код
select * from bet
where id = listbox.itemIndex
?
или переходом на запись, или по записям по очереди, проверяя номер записи(RecNo) или ID или как ты определишь эту запись smile.gif
cooler
Точно, так и знал что легко, заклинило smile.gif
Только выдаёт что listbox4.itemIndex не имеет значение по умолчанию ....
volvo
Оно и не нужно. Когда кликаешь по ЛистБоксу, какой-то из элементов выделяется. Его номер - это и будет ItemIndex. Скорее всего, ты неправильно создал SQL-запрос.
cooler
Все имена проверил
вот запрос
 SQL.Add ('select event_note,event_site,koeff_p1,koeff_n,koeff_p2 from bet where bet_id = listbox4.itemIndex');
Client
SQL.Add ('select event_note,event_site,koeff_p1,koeff_n,koeff_p2 from bet where bet_id = ' +listbox4.itemIndex);
надо за апострофом писать значение smile.gif (если надо то приведи к строковому типу - inttostr)
можно через параметр
SQL.Add ('select event_note,event_site,koeff_p1,koeff_n,koeff_p2 from bet where bet_id = :pr1');
ADOQuery1.Parameters.ParamValues['pr1'] := listbox.itemindex
Пробуй так smile.gif
volvo
Зависит от того, какой тип у поля bet_id... Если целочисленный - то:
SQL.Add ('select event_note,event_site,koeff_p1,koeff_n,koeff_p2 from bet where bet_id = ' +
IntToStr(listbox4.itemIndex));

, а если строковый - то
SQL.Add ('select event_note,event_site,koeff_p1,koeff_n,koeff_p2 from bet where bet_id = ' +
QuotedStr(IntToStr(listbox4.itemIndex)));
cooler
good.gif Спасибо
Ещё вопросик
Код
Form2.ADOQuery1.Edit;
Form2.ADOQuery1.insert;
Form2.ADOQuery1.FieldByName('event_name').Asstring := Edit1.Text;
Form2.ADOQuery1.FieldByName('bet_id').Asinteger := 5;         //<---------------
Form2.ADOQuery1.Post;

Записывается в БД, как сделать чтобы в bet_id записывалось значение, следующее после того что уже есть в БД
Например, 9 записей, и пишет 10, когда добавляет 10ую
Тоже как-то просто....
volvo
Если поле bet_id объявить в базе как AutoNumber, то это будет делаться автоматически
Feagor
если юзаешь ms sql server, то в режиме редактирования таблицы на bet_id в свойствах ставишь identity specification - yes
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.