送分来了! Identify 问题(50分)

  • 主题发起人 主题发起人 7nt
  • 开始时间 开始时间
7

7nt

Unregistered / Unconfirmed
GUEST, unregistred user!
TTable 控件;
对应的表有一字段是 Identify 属性.
用 Insert 方法, POST 时提示 '流水号'(Identify)不能为空;
加上 FieldByName('流水号').AsInteger = SomeInteger;
显示SQL 出错。
Identify 属性的列是系统自增的,应该不是由程序去写。但为什么出错呢?
 
不知你的sql语句怎么写的,给个例子,另外,identify字段的字段名是什么?
 
在Delphi中把Identity字段的属性Required改为False即可。
 
你在设计时,打开Table或Query的字段列表,即Field editor,把那个字段删掉,就可以了,
程序中如果是用Append或Insert 插入数据时,不要理它.

Good luck!
 
你已经解决了,不是吗?
 
hnzgf is say a right way
 
我先是把 属性Required改为False,不行。
又把那个字段删掉,结果还出错.wu~~wu.那里不对呢?


 
7nt:
如果还出错,应该不是delphi table的问题,你单步调试一下,看还执行了那些语句。
另外,你检查一下,对应数据库的表有没有触发器,也可能触发器的错误。
 
发现用TQuery + TUpdateSQL 可以插入。
TTable,还是不行。
不知有没有TTable+ TUpdateSQL 的用法。
aimin: 我自己做一个简单的测试,没有其它代码。
如下:
Table1.Open
Table1.Insert;
Table1.FieldByName('用户编号').AsInteger := 1;
......
Table1.FieldByName('经办人').AsString := 'Operator';
Table1.FieldByName('收费日期').AsDateTime := StrToDateTime('2001-3-15');
Table1.Post;
Table.Close;
数据库里也没有触发器.如果有的话会有影响吗?什么情况下影响。

 
用Table1.CachedUpdates试试
用TQuery + TUpdateSQL就不错;
没有TTable+ TUpdateSQL
 
可以插入了,但是这样以来就没有"流水号"这一项显示了到DBGrid上了。
是否在做TTable时没有考虑到Identify属性的问题吗?
接收答案了
 
简单办法:
TQuery + TUpdateSQL
在TUpdateSQL选择更新字段时不要选择Identity即可
ApplyUPdate后从新Open一下即可
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
844
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部