一直在阅读所有相关的线程,但没有发布解决方案来帮助我使用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子句中声明的字段按原样显示在列表框中?
由于
答案 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;