数据库问题?在线给分,不够再加!!

jessie0327 2004-04-19 08:02:51
想要通过combobox选择一项,进行查询,查询到的表的各项内容添加到dbedit中去,但是
为什么查询只能显示一次结果呢?第二次在combobox中选择,就会出现出错信息:dbedit5找不到!!
窗体上有table1,datasource1,query1,分别设置了table1.name=
table1.active=true
datasource.datase=table1,
急死了,请各位大虾指条明路!!

procedure TForm30.suiComboBox1Change(Sender: TObject);
var
i:integer;
s:string;
begin
suidbmemo1.datafield:='';
with query1 do
begin
s:='select sname from area_information.db'+' where sname="'+ suiComboBox1.text+'"';
sql.Text:=s;
open;
for i:=1 to recordcount do
begin
suiComboBox1.Items.Add(fieldbyname('sname').AsString);
next;
end;
close;
end;
end;


procedure TForm30.suiButton1Click(Sender: TObject);
var
asql:string;
begin
if suiComboBox1.text<>'' then asql:='and (sname="'+suiComboBox1.Text+'") ';
if asql<>'' then
begin
with form30 do
begin
query1.close;
query1.SQL.Text:='select * from area_information.db where sname<>"" '+asql;
datasource1.DataSet:=query1;
query1.open;
end;
if suiComboBox1.text<>'' then
begin
suidbedit1.DataField:='sarea_position';
suidbedit2.DataField:='sarea_temperature';
suidbedit3.DataField:='sarea_climate';
suidbedit4.DataField:='ssoil_humidity';
suidbedit5.DataField:='Ssoil_acid';
suidbmemo1.datafield:='conclusion';

end;
end;

end;

procedure TForm30.suiButton2Click(Sender: TObject);
begin
suidbedit1.Text:='';
suidbedit2.Text:='';
suidbedit3.Text:='';
suidbedit4.Text:='';
suidbedit5.Text:='';
suidbmemo1.Clear;
end;

procedure TForm30.FormCreate(Sender: TObject);
var i:integer;
begin
suiComboBox1.Text:='';
with query1 do
begin
Close;
SQL.Clear;
sql.text:='select Sname from area_information.db';
prepare;
open;
suiComboBox1.Clear;
suiComboBox1.Items.Add('');
for i:= 1 to recordcount do
begin
suiComboBox1.Items.Add(fieldbyname('Sname').asstring);
next;
end;
close;
end;
end;
...全文
13 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hezhiwenyy2008 2004-04-19
  • 打赏
  • 举报
回复
可能是吧,我也不清楚为什么,帮你顶
yyu423 2004-04-19
  • 打赏
  • 举报
回复
dbedit只能显示出一条记录.而且我觉得你的suiComboBox1在onChange编代码时有问题.自己在仔细看一下
hmzgz81 2004-04-19
  • 打赏
  • 举报
回复
procedure TForm30.FormCreate(Sender: TObject);
var i:integer;
begin
suiComboBox1.Text:='';
with query1 do
begin
Close;
SQL.Clear;
sql.text:='select Sname from area_information.db';
prepare;
open;
suiComboBox1.Clear;
suiComboBox1.Items.Append('');
for i:= 1 to recordcount do
begin
suiComboBox1.Items.Append(fieldbyname('Sname').asstring);
next;
end;
close;
end;
end;
夜o猫 2004-04-19
  • 打赏
  • 举报
回复
你的suiComboBox1Change事件中的代码是否写的有问题?
搞不懂你到底想做什么?
for i:=1 to recordcount do
begin
suiComboBox1.Items.Add(fieldbyname('sname').AsString);
next;
end;
上面那段代码是否多余?
qizhanfeng 2004-04-19
  • 打赏
  • 举报
回复
是不是suidbedit5与dbedit5名字起的不对
为什么不在属性面板里指定要连接的字段?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧