with ADOQ_CXJH do
begin
close;
sql.Clear;
sql.Add('update scxt_zzptz set rwh=:rwh,ZPDX=:ZPDX where vin=:lsh');
Parameters.ParamByName('rwh').Value:=cdt_newrwh.text;
Parameters.ParamByName('ZPDX').Value:=dx;
Parameters.ParamByName('lsh').Value:=ADOQ_ZPJHDZ.FieldByName('lsh').AsString;
Prepared;
ExecSQL;
end;
这真是怪事,本语句在我的开发环境下没错,但在别的客户端不执行,是怎么回事???
dm_Data.ADOConn_MANSYS.ConnectionString := 'Provider=MSDAORA.1;Password=scxt;User ID=mansys;Data Source=prod;Persist Security Info=True';
begin
close;
sql.Clear;
sql.Add('update scxt_zzptz set rwh=:rwh,ZPDX=:ZPDX where vin=:lsh');
Parameters.ParamByName('rwh').Value:=cdt_newrwh.text;
Parameters.ParamByName('ZPDX').Value:=dx;
Parameters.ParamByName('lsh').Value:=ADOQ_ZPJHDZ.FieldByName('lsh').AsString;
Prepared;
ExecSQL;
end;
这真是怪事,本语句在我的开发环境下没错,但在别的客户端不执行,是怎么回事???
dm_Data.ADOConn_MANSYS.ConnectionString := 'Provider=MSDAORA.1;Password=scxt;User ID=mansys;Data Source=prod;Persist Security Info=True';
2.我正确连接了服务器
3.客户端和我本机连接的是同一个服务器中的同一个数据库
4.同样的程序,在我本机上没问题,但在其他部门机子上运行
with ADOQ_XGWLBMTZ do
begin
close;
sql.Clear;
sql.Add('update scxt_zzptz set wlbm=:wlbm where rwh=:rwh');
Parameters.ParamByName('wlbm').Value:=cxTextEdit2.text;
Parameters.ParamByName('rwh').Value:=cdt_oldrwh.Text;
Prepared;
ExecSQL;
end;
给cxTextEdit2.text赋值后,wlbm字段值没有变化。
楼主还是没有把错误现象说明白,看来只能瞎猜了。
with ADOQ_XGWLBMTZ do
begin
close;
sql.Clear;
sql.Add('update scxt_zzptz set wlbm=:wlbm where rwh=:rwh');
Parameters.ParamByName('wlbm').Value:=cxTextEdit2.text;
Parameters.ParamByName('rwh').Value:=cdt_oldrwh.Text;
Prepared;
ExecSQL;
end; 改为
with ADOQ_XGWLBMTZ do
begin
close;
sql.Clear;
sql.Add('update scxt_zzptz set wlbm =' + QuotedStr(cxTextEdit2.text) + ' where rwh= ' + Quotedstr(cdt_oldrwh.text));
Prepared;
ExecSQL;
end;
可能原因:
如果用参数列表时,当参数有空值时,即'',可能会出错,如果用ODBC会提示错误的,但用ADO好像不提示错误,但也不执行。所以不用参数列表会消除这个引发的错误。这是我在年前才明白的事情。
可以试一下楼上的方法,我原来也遇到类似的问题,用参数传递,edit的值传递过去出现了乱码,后面改成楼上的方法就不会了.
'lsh' 是什麼類型的??就是字符串還是??