请大家帮着看看这几行程序有什么问题?(50分)

  • 主题发起人 主题发起人 tjming
  • 开始时间 开始时间
T

tjming

Unregistered / Unconfirmed
GUEST, unregistred user!
quryGeneral2.Close;
quryGeneral2.SQL.Clear;
quryGeneral2.SQL.Add('Update general Set 挂失=0 Where 证号=:id_no ');
quryGeneral2.ParamByName('id_no').AsInteger:=xe;
quryGeneral2.ExecSQL;
其中xe已赋值。
 
忘了告诉大家,总提示的错误是General SQL error,
不知道sql那错了?
 
可能parambyname这句话有错,建议改用Parameters[0].asinteger
 
同意楼上
 
肯定是参数那儿错了。建议你设计时强制给query增加一个参数,然后试试!
 
try this:
quryGeneral2.Close;
quryGeneral2.SQL.Clear;
quryGeneral2.SQL.Add('Update general Set 挂失=0 Where 证号='+inttostr(xe));
quryGeneral2.ExecSQL;

还有,你的数据库用的是什么?是不是general是关键字?
 
先在Explore 中验证一下SQL语句是否写错了!
Update general Set 挂失=0 Where 证号=id_no
 
我改成了Parameters[0].asinteger后还是不行,
同样报invalid character
我用的是oracle,general是表名
会不会因为挂失不是索引,所以不行,在
general表中证号是索引。
 
建议先在 SQL_PLUS 中试试~
试过之后立马就会知道哪里出错了! [:D]
 
我怀疑你的xe类型不正确
 
应该不是参数的问题,因为我改成
quryGeneral2.edit;
quryGeneral2.post;
quryGeneral2.Close;
quryGeneral2.SQL.Clear;
quryGeneral2.SQL.Add('Update general Set 挂失=0 Where 证号=2');
quryGeneral2.ExecSQL;
仍有问题,我在query的SQL中设了两个参数
,其中一个是索引,另一个不是,当设了另一个之后,qury的active没办法设成true,
同时,DBEdit中的fieldname也没办法选字段名,这是什么原因?
 
查看一下数据库中字段的类型。
 
检查字段挂失和证号的字段类型。
 
应该是中文字段的问题,改成如下试试:
quryGeneral2.Close;
quryGeneral2.SQL.Clear;
quryGeneral2.SQL.Add('Update general a Set a."挂失"=0 Where a."证号"=:id_no ');
quryGeneral2.ParamByName('id_no').AsInteger:=xe;
quryGeneral2.ExecSQL;
 
Oracle的库? 应该和索引无关!
SQL_PLUS正常的话,SQL语句就没有问题的!

也许是其他方面的问题!
 
我在设query的ACTIVE时,提示invalid use of keyword
请问这是什么意思?
 
把值赋给id_no
quryGeneral2.Close;
quryGeneral2.SQL.Clear;
quryGeneral2.SQL.Add('Update general Set 挂失=0 Where 证号=:id_no ');
quryGeneral2.Parameters.ParamByName('id_no ').Value:=id_no ;
quryGeneral2.ExecSQL;
 
楼上的都越搞越复杂了,其实第一条的语句已经是比较简洁的了,要查一查general
是不是关键字,还有就是xe的类型,希望证件号改成integer而不是number.
 
会不会是因为字段名是中文而不是英文的问题
 
quryGeneral2.ParamByName('id_no').AsInteger:=xe;
错了,应该是
quryGeneral2.ParamByName('id_no').Value:=xe;
 
后退
顶部