这句代码哪里错了?(5分)

  • 主题发起人 主题发起人 juexing
  • 开始时间 开始时间
J

juexing

Unregistered / Unconfirmed
GUEST, unregistred user!
with DM.DataModule2.tbl1 do
begin
Append ;
FieldByName('123').AsString :=Edt1.Text ;
Post ;
end;
Showmessage('数据提交成功');
edt1.Text :='';
edt1.SetFocus;
tbl1是Tadotable组件
123字段是char字符型,长度30
编译产生错误信息:Project1.exe raised exception class EVariantTypeCastError with message ' Could not convert varant of type(NULL) into type (String)'.Process stopped.
这是什么意思?
 
有的字段不能为空,或者不能插入Null值
你的数据表中有多个字段,但你添加记录只添加了一个字段的值,其他字段不能为NULL
你可以这样操作:
DM.DataModule2.tbl1.AppendRecord(['value1','','']);
 
edit1.text的内容是空值. 空值不能转化为string类型. 试试 .value .
最好用拼接sql语句插入, 或者用 传入参数的形式. 比较安全.
 
FieldByName('123').value :=Edt1.Text ;
 
FieldByName('123').value :=Edt1.Text ;用这句产生的错误也一样。
请问这句要怎么操作?我的字段是123,数据表里有两个字段。
DM.DataModule2.tbl1.AppendRecord(['value1','','']);
 
自已顶先!
 
如果有两个字段,且123是第一个字段的话:
DM.DataModule2.tbl1.AppendRecord([edit1.text,'']);
这句在程序中直接调用就行了。其他代码,什么也不用加。
 
123是第二个字段
不行呢,还是出现错误:Project1.exe raised exception class EVariantTypeCastError with message ' Could not convert varant of type(NULL) into type (String)'.Process stopped.
怎么办呀?我弄不好了!
 
FieldByName('123').value :=Edt1.Text ;
 
其它非空的字段,也要像下面一样赋值才行
FieldByName('123').AsString :=Edt1.Text ;
 
首先判断edit1.text是否为空,是的话就不用插入了.不是在post.
 
with DM.DataModule2.tbl1 do
begin
Append;//这个改为insert;
FieldByName('123').AsString :=Edt1.Text ;
Post ;
 
begin
Append;//这个改为insert;首先应该把table设置为插入状态
FieldByName('123').AsString :=Edt1.Text ;
Post ;
 
关键是下边一句
// FieldByName('123').AsString :=Edt1.Text ;
Parameters.ParamByName('你的字段名').AsString :=Edt1.Text ;
看你等意思是追加纪录,即此时'123'应该是你的变量名,应该上句一样
作为SQL的变量处理;
 
不好意思,没说清楚
// FieldByName('123').AsString :=Edt1.Text ;
Parameters.ParamByName('你的字段名').AsString :=Edt1.Text ;
看你等意思是追加纪录,即此时'123'应该是你的要插入数据库的字段名,应该用上句
^^^^^^^^^^^^^^^^^^^^
作为SQL的变量来处理;
 
好惨呀!我的帐户号已经用了有一年的时间了。今天上来看到(其实从昨天就开始了):“请确认帐号”。我那里还记得验证码了!
我的邮箱里也没有了。
我试着又输入一个备用邮箱。可使,没有验证码发送!
我该怎么办?
我的积分已经有将近1500分了。。。
分,倒是不重要,总要的的是我的问题!不能提问题,也不能看以前的问题了!
 
发我邮箱,帮你确认下
 
你的123字段应该设置为不允许NULL就可以了
 
我又发现了一个问题。我现在想通过button1来实现尾数00001的自动加1,下面这条语句要怎么改下才好?
Edit1.Text:=FormatDateTime('SG-YYYY-MM-DD-00001',Now);
 
接受答案了.
 
后退
顶部