2015-01-28 3 views
1

читают все связанные темы, но решение не найдено, чтобы помочь мне с Delphi.DELPHI Заполните Listbox с результатами ADO Query

Проще говоря, у меня есть таблица MySQL, называемая Story, и я хочу извлечь определенные поля из этого - и, следовательно, заполнить список.

Из других сообщений, я использовал следующие ...

adoqMenu.Close; 
adoqMenu.SQL.Text := 'SELECT StoryID, Story Description, Completion Date FROM Story'; 
try 
    adoqMenu.Open; 
    ListBox1.Items.Clear; 
    while not adoqMenu.Eof do 
    begin 
    ListBox1.Items.Add(adoqMenu.Fields[0].AsString); 
    adoqMenu.Next; 
    end; 
finally 
    adoqMenu.Close; 
end; 

Это только дает мне первое поле ... ГРР. Вполне просто, как я могу изменить это, чтобы поля, указанные в предложении SELECT, отображались в списке как есть?

Благодаря

ответ

4

вы видите только одно поле, потому что вы только чтение из одного поля (adoqMenu.Fields[0]). Просто зачитывает другие поля, а также:

adoqMenu.Close; 
adoqMenu.SQL.Text := 'SELECT StoryID, Story Description, Completion Date FROM Story'; 
adoqMenu.Open; 
try 
    ListBox1.Items.Clear; 

    while not adoqMenu.Eof do 
    begin 
    Value1 := adoqMenu.Fields[0].AsString; 
    Value2 := adoqMenu.Fields[1].AsString; 
    Value3 := adoqMenu.Fields[2].AsString; 

    // use Values as needed. Format the ListBox text however 
    // you want to show all three values... 
    ListBox1.Items.Add(...); 

    adoqMenu.Next; 
    end; 
finally 
    adoqMenu.Close; 
end; 

В зависимости от реальных потребностей (которые вы не объяснить), мульти-колонки TListView в режиме vsReport может быть лучшим выбором, чем TListBox:

adoqMenu.Close; 
adoqMenu.SQL.Text := 'SELECT StoryID, Story Description, Completion Date FROM Story'; 
adoqMenu.Open; 
try 
    ListView1.Items.Clear; 

    while not adoqMenu.Eof do 
    begin 
    Item := ListView1.Items.Add; 
    Item.Caption := adoqMenu.Fields[0].AsString; 
    Item.SubItems.Add(adoqMenu.Fields[1].AsString); 
    Item.SubItems.Add(adoqMenu.Fields[2].AsString); 
    adoqMenu.Next; 
    end; 
finally 
    adoqMenu.Close; 
end; 
+0

В вашем первом ответе ... что я вставляю в списокbox1.items.add (...)? Я попробовал listbox1.items.add (value1, value2, value3), но получил ошибку «Вне границ»? – user3396486

+0

@ user3396486 Вы можете присоединить строки к 'ListBox1.Items.Add (Value1 + Value2 + Value3)', но то, что вы написали в своем комментарии, не приведет к ошибке за пределами границ. Действительно, он даже не компилируется. –

+0

Да, он не компилируется. Мой SQL-запрос должен возвращать следующие результаты: 1, Peter & Jane, 12/1/2015; 2, Рассказ мальчика, 25/4/2012; 3, «Испуганная лиса», 23/1/2015; ... я просто пытаюсь показать это в списке. – user3396486

Смежные вопросы