应用程序在当前操作中使用了错误类型的值

时间:2021-10-22 08:10:48

DM.qry3.SQL.Add('update cszl set khmc=:khmc where num=:num');
DM.qry3.Parameters.ParamByName('num').Value:=dbtxtnum.Caption;
DM.qry3.Parameters.ParamByName('khmc').Value:=dbedtkhmc.Text;

一直报“应用程序在当前操作中使用了错误类型的值”  请问是什么原因?

8 个解决方案

#1


DM.qry3.Parameters.ParamByName('num').Value:=dbtxtnum.Caption;
或许你的num是个数字,那么试试改成这样
DM.qry3.Parameters.ParamByName('num').Value:=strtoint(dbtxtnum.Caption);
如果还不行,去看看num,khmc这两个字段在数据库中的数据类型。

#2


num是int类型的,khmc是nvarchar类型的
按你的方法修改了之后再其他地方出现了错误
''' is not a valid integer value'

//单击某个按钮
var
  s:String;
begin
    s:=dbgrd1.DataSource.DataSet.Fields[6].AsString;//这个就是我的num字段
    ShowMessage(s);
    DM.qry2.close;
    DM.qry2.SQL.Clear;
    DM.qry2.SQL.add('select * from cszl where num='+QuotedStr(s));
    DM.qry2.open;
    cszlxq.ShowModal;//最后停在了这里
end;



之前用update cszl set 其他字段 where kumc=:khmc是可以的
就是后来添加了一个num字段,int类型,用它来做where的条件就有问题了。

#3



DM.qry2.SQL.add('select * from cszl where num='+QuotedStr(s));
改成
DM.qry2.SQL.add('select * from cszl where num='''+QuotedStr(s)+''' ');

#4


你这一个接一个的问题啊,等下你代码别的地方没写好,又得问了。

#5


照上面改不行啊,报错。。。连cszlxq.ShowModal;都出不来了,直接停在project 的代码里面了。

问题还是由于第一个问题引起的啊。。。

#6


报错报的是什么。

#7


num  khmc两个字段可能不是string类型的,
所以用DM.qry3.Parameters.ParamByName('num').string试试。

#8


谢谢楼上的帮忙。
不懂为什么,我的qry3不灵,我不用num做条件,用khmc做条件修改也不行。虽然程序没有报错,但是运行下来却不能修改数据库中的数据。
后来我就把qry3改为了qry1就能修改了。。。。。一切正常。
qry1是给dbgrid显示数据用的。
搞不清楚啥原因。。。

#1


DM.qry3.Parameters.ParamByName('num').Value:=dbtxtnum.Caption;
或许你的num是个数字,那么试试改成这样
DM.qry3.Parameters.ParamByName('num').Value:=strtoint(dbtxtnum.Caption);
如果还不行,去看看num,khmc这两个字段在数据库中的数据类型。

#2


num是int类型的,khmc是nvarchar类型的
按你的方法修改了之后再其他地方出现了错误
''' is not a valid integer value'

//单击某个按钮
var
  s:String;
begin
    s:=dbgrd1.DataSource.DataSet.Fields[6].AsString;//这个就是我的num字段
    ShowMessage(s);
    DM.qry2.close;
    DM.qry2.SQL.Clear;
    DM.qry2.SQL.add('select * from cszl where num='+QuotedStr(s));
    DM.qry2.open;
    cszlxq.ShowModal;//最后停在了这里
end;



之前用update cszl set 其他字段 where kumc=:khmc是可以的
就是后来添加了一个num字段,int类型,用它来做where的条件就有问题了。

#3



DM.qry2.SQL.add('select * from cszl where num='+QuotedStr(s));
改成
DM.qry2.SQL.add('select * from cszl where num='''+QuotedStr(s)+''' ');

#4


你这一个接一个的问题啊,等下你代码别的地方没写好,又得问了。

#5


照上面改不行啊,报错。。。连cszlxq.ShowModal;都出不来了,直接停在project 的代码里面了。

问题还是由于第一个问题引起的啊。。。

#6


报错报的是什么。

#7


num  khmc两个字段可能不是string类型的,
所以用DM.qry3.Parameters.ParamByName('num').string试试。

#8


谢谢楼上的帮忙。
不懂为什么,我的qry3不灵,我不用num做条件,用khmc做条件修改也不行。虽然程序没有报错,但是运行下来却不能修改数据库中的数据。
后来我就把qry3改为了qry1就能修改了。。。。。一切正常。
qry1是给dbgrid显示数据用的。
搞不清楚啥原因。。。