procedure TtestMain.yi_ado_dbgCellClick(Column: TColumnEh);
var
xuhao: Integer;
begin
xuhao := up_adoq.FieldByName('序号').AsInteger;
{ 当选择dbgrid的时候把下方dbgrid对应的商品信息的Adoquery给对应修改下 }
With down_adoq do
begin
Close;
SQL.Clear;
SQL.Add('select * from down_order WHERE 序号=' + xuhao);
Open;
end;
简介:就是一个界面上有上下两个表(dbgrid),当选中上面的那个表某行的时候,对应的查询下下面这个表中和选中行的序号一样的数据,上面那个表的adoquery是up_adoq,下面这个表的adoquery是down_adoq错误:1.SQL.Add()方法要求里面是字符串,所以上面我那样写是错误的,因为xuhao是integer类型的但是如果改成下面这样:procedure TtestMain.yi_ado_dbgCellClick(Column: TColumnEh);
var
xuhao: string;
begin
xuhao := up_adoq.FieldByName('序号').AsString;
{ 当选择dbgrid的时候把下方dbgrid对应的商品信息的Adoquery给对应修改下 }
With down_adoq do
begin
Close;
SQL.Clear;
SQL.Add('select * from down_order WHERE 序号=' + xuhao);
Open;
end;
还是会错误,错误提示是:标准表达式中数据类型不匹配,原因不解,用的是access数据库,上下两个表中的序号都是"数字"字段求高手解答,我已看了,20多篇文章还是没有找到解决方法,望高手们可以试下,这个错误网上很多人遇到,但是大多数都是.net相关的变通方案,delphi的没有找到一篇,望delphi高手来帮忙
解决方案 »
- vb调用delphi写的dll文件
- delphi ocx自定义事件
- 请问对网络编程熟悉的高手:除了Webbrowser之外,有没有可以下载网页源代码,并且支持UTF8的控件??
- 数字签名不起作用 ,这是为什么?线上等回答就给分。
- 菜鸟急问高手,在线等,立即给分
- RES使用的疑问
- @@@@请进来令分,贴子没有结好,, hejianling305(坚持到底) (: lemonchen(浪迹天涯) ( ,回复人: zblaoshu1979(周博) ( ),谢谢了!!!!!!!!!
- 多线程里用TBlobField上传图片报内存错误。
- 关于swf browser的问题:如何把flash player嵌入自己的软件?
- 白菜继续求助 !!!
- delphi程序问题
- 如果listbox中是对象,那么该怎样正确序列化
//看到底序号是什么类型的,看数据库定义
//字符串型
SQL.Add(Format('select * from down_order WHERE 序号=''%s''',[xuhao]));
//整型
SQL.Add(Format('select * from down_order WHERE 序号='%d',[xuhao]));
你这个过程应该写在up_adoq的AfterScroll中。只有记录移动后再执行。
你现在的的方法可能存在,记录并未定位成功,xuhao := up_adoq.FieldByName('序号').AsString;
xuhao可能是空值,自己看下,你最后生成的的SQL语句吧。procedure TtestMain.yi_ado_dbgCellClick(Column: TColumnEh);
var
xuhao: string;
begin
xuhao := up_adoq.FieldByName('序号').AsString;
{ 当选择dbgrid的时候把下方dbgrid对应的商品信息的Adoquery给对应修改下 }
With down_adoq do
begin
Close;
SQL.Clear;
SQL.Add('select * from down_order WHERE 序号=' + xuhao);
// Open;
self.caption:=sql.text;
end;
var
xuhao: string;
begin
xuhao := up_adoq.FieldByName('序号').AsString;
{ 当选择dbgrid的时候把下方dbgrid对应的商品信息的Adoquery给对应修改下 }
With down_adoq do
begin
Close;
SQL.Clear;
SQL.Add('select * from down_order WHERE 序号=''' + xuhao+'''');
Open;
end;写简单点不好吗?
//整型
SQL.Add(Format('select * from down_order WHERE 序号=%d',[xuhao]));//改一下,这里写错了
SQL.Add('select * from down_order WHERE 序号=' + xuhao);
Open;
1、sql的语法中字符串类型的数据要加引号。SQL.Add(Format('select * from down_order WHERE 序号=''%s''', [xuhao]);
或 SQL.Add('select * from down_order WHERE 序号='+''''+xuhao+'''');2、Open是打开一个数据集,执行sql语句应该用ExecSQL
SQL.Add('select * from down_order WHERE 序号=:a');
ParamByName('a').Value:=xuhao;
1.事件应写在AdoQuery的AfterScroll事件下,实现主从表。
2.用参数实现,用法参见7楼。