DELPHI使用ADO Query的结果填充列表框

时间:2015-01-28 22:29:45

标签: mysql delphi ado

一直在阅读所有相关的线程,但没有发布解决方案来帮助我使用Delphi。

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

从其他帖子中,我使用了以下内容......

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子句中声明的字段按原样显示在列表框中?

由于

1 个答案:

答案 0 :(得分: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;