一个关于COMBOBOX极简单的问题(50分)

  • 主题发起人 主题发起人 逆水
  • 开始时间 开始时间

逆水

Unregistered / Unconfirmed
GUEST, unregistred user!
我想将一个数据库表某字段下的内容赋予COMBOBOX1的ITEMS,可这段程序为什么运行后没反应。
运行后,下拉COMBOBOX的小三角,没有出现数据表中字段的值。
procedure TForm1.Button1Click(Sender: TObject);
begin
combobox.items.clear;
while not query1.eof do
begincombobox.items.add(query1.fieldbyname('name').asstring);
query1.next;
end;

end;
end;
我用了一个QUERY一个DATASOURCE。
QUERY的DATABASENAME指向数据表名。
DATASOURCE的DATASET指向QUERY。
 
procedure TForm1.Button1Click(Sender: TObject);
begin
combobox.items.clear;
query1.First; //试试
while not query1.eof do
begincombobox.items.add(query1.fieldbyname('name').asstring);
query1.next;
end;

end;
end
 
你的语法没有问题,我感觉不是加不进去的问题,是你的数据没有取出来。

你直接加一个特定的字符串试一下,譬如“abc”。




 
WiseNow的用法是一样的。
我同意天与地
 
还是不行,为了那句后,运行时提示不能在关闭的DATABASE中进行操作。
 
你调试一下,看你是否查询出了相应的数据?
 
哈哈 老大 你根本就没有打开表呀
 
程序肯定是没有问题
可能是你的query 中没有 记录 或 query.eof=true
你可用 query.first;
你可试试以下:
procedure TForm1.Button1Click(Sender: TObject);
begin
combobox.items.clear;
showmessage(inttostr(query.recordcount)) ;//看看记录数 如果不为0 哪应该就是对的
query1.First;

while not query1.eof do
begincombobox.items.add(query1.fieldbyname('name').asstring);
query1.next;
end;

end;
end

 
建议你先放个dbgrid进去,确认查出了数据,
>>运行时提示不能在关闭的DATABASE中进行操作。
这是query没有打开的提示,没打开怎么能有数据呢?
 
我试过了,可以查出数据。
下面是我改过了程序,为了说明表格打开的。
procedure TForm1.Button1Click(Sender: TObject);
begin
if query1.active then
query1.active:=false;
query1.SQL.clear;
combobox1.items.clear;
while not query1.eof do
begin
combobox1.items.add(query1.fieldbyname('name').asstring);

query1.active:=true;
query1.next;

end;

end;
可运行后还是没反应。为什么,我如何改才好啊。
 

怎么会这样呢,有没有搞错?
你的代码我改了一下。
procedure TForm1.Button1Click(Sender: TObject);
begin
if not query1.active then
query1.open:=true;
combobox1.items.clear;
while not query1.eof do
begin
combobox1.items.add(query1.fieldbyname('name').asstring);
query1.next;
end;
end;
另外,需要重申几点:
1。你的query到底有不有查找到数据记录。
2。你的combobox1是不是你运行后看到的下拉框,不要张冠李戴。搞错了下拉框。
3。即使有数据记录,你相应的name字段到底有没有值。
4。检查一下你的combobox的其它事件过程,是不是不注意而删除了它的item
5。还是不行的话,你何不重新放一个上去。这肯定可以的。
 
老大,别急。
1、先确认是否取出了数据。
2、在不跟数据库发生关系的情况下,你能加进combobox吗?
你上面的程序怎么先添加后打开数据库啊?试试pcc_mmz1兄的办法。





 
PCC_MZZL老兄的程序我试了,编译通不过,我将下面这句改了:
query1.open:=true;(改为:QUERY1。OPEN;)
编译通过,可执行时,点击BUTTON1出现提示:没有SQL声明可用到,为什么?????
 
procedure TForm1.Button1Click(Sender: TObject);
begin
combobox1.items.clear;
with query1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM tableName');
Open;
while not Eof do
begin
combobox1.items.add(fieldbyname('name').asstring);
next;
end;
end;
end;
 
Query的databasename你指向的是什么名字呀。
不应该是一个表名,应该是你建立的BDE别名或者ODBC数据源的名字的。
 
多谢大家的热心帮助了,HUAWDG老兄的方法可以了,谢谢了。其它朋友的方法我还没有领会清,
我会在好好想想试一试的,谢谢啦。
 
很简单的问题啊!我一下子就搞定了啊。
我做了个例子,如果要就发给你。D5通过。
procedure TForm1.Button1Click(Sender: TObject);
begin
query1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
combobox1.Clear ;
query1.First ;
while not query1.Eof do
begin
//这句跟上面不一样的。我习惯这样用的。
combobox1.Items.Add(query1.fieldvalues['FieldName']);
query1.Next ;
end;
combobox1.Text :='这不就行了?';
end;
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部