在Delphi7中如何查询SQL中的数据,用的是adoquery组件和DBEdit组件
beginwithADOQuery1dobeginClose;Sql.Clear;SQL.Add('select*fromxscj');ifDBEdit1.Text=''...
begin
with ADOQuery1 do
begin
Close;
Sql.Clear;
SQL.Add('select * from xscj');
if DBEdit1.Text ='' then
begin
showmessage('请输入学号');
exit;
end
else
if DBEdit1.Text<>'' then
begin
SQL.Add('and xscj Like 学号') ;
DBEdit1.Text :=(fieldbyname('学号').asstring);
open;
end;
if DBEdit2.Text ='' then
begin
showmessage('请输入学期');
exit;
end;
if DBEdit2.Text<>'' then
begin
SQL.Add('and xscj Like 学期') ;
DBEdit2.Text :=(fieldbyname('学期').asstring);
open;
end;
我在写上以上代码后,DBEdit组件不能输入任何文字,去掉一个DBEdit组件就行,但是也只能输一次,即使能输入文字也不能实现查询,谢谢
我改啦,不过还是不能实现查询,怎么实现呢? 其中like后面的好想有错误我也改啦, 谢谢
我们课本上就是那样做的啊,有什么不正确的吗? 展开
with ADOQuery1 do
begin
Close;
Sql.Clear;
SQL.Add('select * from xscj');
if DBEdit1.Text ='' then
begin
showmessage('请输入学号');
exit;
end
else
if DBEdit1.Text<>'' then
begin
SQL.Add('and xscj Like 学号') ;
DBEdit1.Text :=(fieldbyname('学号').asstring);
open;
end;
if DBEdit2.Text ='' then
begin
showmessage('请输入学期');
exit;
end;
if DBEdit2.Text<>'' then
begin
SQL.Add('and xscj Like 学期') ;
DBEdit2.Text :=(fieldbyname('学期').asstring);
open;
end;
我在写上以上代码后,DBEdit组件不能输入任何文字,去掉一个DBEdit组件就行,但是也只能输一次,即使能输入文字也不能实现查询,谢谢
我改啦,不过还是不能实现查询,怎么实现呢? 其中like后面的好想有错误我也改啦, 谢谢
我们课本上就是那样做的啊,有什么不正确的吗? 展开
3个回答
展开全部
看来楼主是没弄明白什么是数据感知组件。
数据感知组件有个特点:
如果设置数据感知组件的datasource与datafield属性,那么只要与datasource相关联的dataset一打开,数据感知组件就会自动获取相应的字段值(由datafield属性指定);反之,如果用户修改了数据感知组件中的字段值,那么,只要执行dataset.post; 就可以将用户的修改存回到数据库中。
如果你使用了数据感知组件(如:DBEdit),但又没有设置它的datasource与datafield属性,或者即使设置了,但与datasource相关联的dataset没有指定或没有打开,那么,你这个DBEdit中就无法输入数据!(你的毛病正在这里)
Delphi中所有“DB”开关的组件,都是数据感知组件。
所以,如果理解了上面我说的这些话,那么,只要将你程序中DBEdit改成普通的Edit就行了。
数据感知组件有个特点:
如果设置数据感知组件的datasource与datafield属性,那么只要与datasource相关联的dataset一打开,数据感知组件就会自动获取相应的字段值(由datafield属性指定);反之,如果用户修改了数据感知组件中的字段值,那么,只要执行dataset.post; 就可以将用户的修改存回到数据库中。
如果你使用了数据感知组件(如:DBEdit),但又没有设置它的datasource与datafield属性,或者即使设置了,但与datasource相关联的dataset没有指定或没有打开,那么,你这个DBEdit中就无法输入数据!(你的毛病正在这里)
Delphi中所有“DB”开关的组件,都是数据感知组件。
所以,如果理解了上面我说的这些话,那么,只要将你程序中DBEdit改成普通的Edit就行了。
展开全部
很多书,写得挺垃圾的。
可以联系我一下。
用DELPHI开发,写不了多少代码的。
这个在用法上有问题。
我不太清楚你要实现的具体内容,
但我想这个需求,大我写5行代码。
可以联系我一下。
用DELPHI开发,写不了多少代码的。
这个在用法上有问题。
我不太清楚你要实现的具体内容,
但我想这个需求,大我写5行代码。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DBEdit1.Text :=(fieldbyname('学号').asstring);
DBEdit2.Text :=(fieldbyname('学期').asstring);
你这两句是什么意思?
怎么都在Open之前就赋值了?Open之前是没有查询获取值的。
而且你也不应该用DBEdit来进行查询,用建议用Edit,DBEdit只要绑定到AdoQuery的Datasource就可以返回值。
DBEdit2.Text :=(fieldbyname('学期').asstring);
你这两句是什么意思?
怎么都在Open之前就赋值了?Open之前是没有查询获取值的。
而且你也不应该用DBEdit来进行查询,用建议用Edit,DBEdit只要绑定到AdoQuery的Datasource就可以返回值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询