首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

combox通过adoquery读取数据库不显示数据,该怎么处理

2012-04-18 
combox通过adoquery读取数据库不显示数据刚使用delphi问一下各位大人,怎么我用combox通过adoquery读取数据

combox通过adoquery读取数据库不显示数据
刚使用delphi
问一下各位大人,怎么我用combox通过adoquery读取数据库不显示数据
我的代码如下:
var
  i : integer;
begin
  cb_gpmc.Clear;
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select 公司名称 from 公司信息');
  adoquery1.ExecSQL;
  adoquery1.Open;
  begin for i := 0 to adoquery1.recordcount - 1
  do
  cb_gpmc.items.Add(adoquery1.fieldbyname('公司名称').asstring);
  adoquery1.Next;
  end;
end;
好像是adoquery1没有返回数据给combox,谢谢各位大侠;
还问一下,adoquery1执行的sql语句是 adoquery1.SQL.Add('select 公司名称 from 公司信息');
还是adoquery1中sql属性的语句?
非常感谢

[解决办法]

Delphi(Pascal) code
var  i : integer;begin  cb_gpmc.Clear;  adoquery1.Close;  adoquery1.SQL.Clear;  adoquery1.SQL.Add('select 公司名称 from 公司信息');//有数据集返回要用open; adoquery1.ExecSQL;  adoquery1.open;  adoquery1.first;  while not adoquery1.eof do  begin    cb_gpmc.items.Add(adoquery1.fieldbyname('公司名称').asstring);    adoquery1.Next;  end;end
[解决办法]
设置断点跟踪一下就是了。看来楼主是个新手吧。
--
另一个问题:adoquery1执行的sql语句是 adoquery1.SQL.Add('select 公司名称 from 公司信息');
还是adoquery1中sql属性的语句?

这两句话指的是同一个意思 。都是执行的SQL的语句.adoquery1.sql.add(),指不过是TAdoquery的一个方法而已。
[解决办法]
1、检查是否设置ADOQuery的Connection;
2、还问一下,adoquery1执行的sql语句是 adoquery1.SQL.Add('select 公司名称 from 公司信息');
还是adoquery1中sql属性的语句?
ADOQuery执行的是SQL属性中的语句。不过,你通过adoquery1.Close;
adoquery1.SQL.Clear;这两句后,SQL中原来的语句已经被清除了;然后再执行adoquery1.SQL.Add('select 公司名称 from 公司信息');
之后,ADOQuery就执行你新添加到SQL属性中的语句"select 公司名称 from 公司信息"了。
3、adoquery1.ExecSQL;
adoquery1.Open;
这两句,只用一句。如一楼所述,有数据集返回时使用open方法,如果不需要返回查询结果,调用ExecSQL,在调用Open或ExecSQL之前,最好先调用Prepare通知服务器作好准备。
4、使用select时,要注意去除重复记录:对于单表唯一查询用:distinct,多表的唯一查询用:group by


以下是一段示例代码:
procedure TFmAddr.FormCreate(Sender: TObject);
begin
QryAddr.DatabaseName:=ExTractFilePath(Application.ExeName);
with QryAddr do
begin
Close;
SQL.Clear;
SQL.Add('Select distinct 开发公司名称 from "addr.db" addr order by 开发公司名称');
Prepare;
Open;
end;
while (not QryAddr.EOF) do
begin
CbxName.Items.Add(QryAddr.Fields[0].AsString);
QryAddr.Next;
end;
end;
[解决办法]
试试这段代码:
begin
CbxName.Clear;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select 开发公司名称 from test');
try
adoquery1.Open;
while not AdoQuery1.Eof do
begin
CbxName.Items.Add(AdoQuery1.FieldValues['开发公司名称']);
AdoQuery1.Next;
end;
except
showmessage('错误');
end;
end;
[解决办法]
关键在于 open与 execsql 用法 错误了
[解决办法]
begin
cb_gpmc.Clear;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select 公司名称 from 公司信息');
adoquery1.Open;
while not adoquery1.eof do
begin
cb_gpmc.items.Add(adoquery1.fieldbyname('公司名称').asstring);
adoquery1.Next;
end;
end;
[解决办法]
去掉adoquery1.ExecSQL;这行看看。。好像那个循环的BEGIN。。END 也有问题。。

热点排行