DELPHI 用 ADO 查询的结果填充列表框

DELPHI Fill a listbox with the results of ADO Query

一直在通读所有相关主题,但没有发布解决方案来帮助我 Delphi。

很简单,我有一个名为 Story 的 MySQL table,我想从中提取特定字段 - 从而填充列表框。

在其他帖子中,我使用了以下...

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;

这只给了我第一个字段...grr。很简单,我该如何更改它,以便 SELECT 子句中所述的字段按原样显示在列表框中?

谢谢

您只看到一个字段,因为您只读出一个字段 (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;

根据您的实际需要(您没有解释),vsReport 模式下的多列 TListView 可能比 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;