三层中我在DataSetProvider里的BeforeUpdateRecord里写了向更一个表的Insert Into,在客户端新增一条就ApplayUpda

  • 主题发起人 主题发起人 am2001
  • 开始时间 开始时间
A

am2001

Unregistered / Unconfirmed
GUEST, unregistred user!
三层中我在DataSetProvider里的BeforeUpdateRecord里写了向更一个表的Insert Into,在客户端新增一条就ApplayUpdates时是好的,新增多条记录后再ApplayUpdates就程序没反映了,怎么回事啊?(50分)<br />如题
 
你的表有没有主键啊
 
都有主键的
 
不如写触发器!
 
我找是找到在哪错了,把以下这段代码去掉就好了,就想不明白怎么会不行呢
sTemp := 'SELECT COUNT(*) AS RowsCount FROM rydmb WHERE gsid = '
+ IntToStr(DeltaDs.FieldByName('gsid').AsInteger) + ' AND ygBh = '''
+ Trim(DeltaDs.FieldByName('ygBh').AsString) + ''' AND ygId <> '
+ IntToStr(DeltaDs.FieldByName('ygId').AsInteger);
if GetRowCount(sTemp) > 0 then
////停在这里的,过程里就打开数据集取回RowsCount字段值
begin
raise Exception.Create('该员工工号已存在!');
Exit;
end;
 
又试了试,点保存后我就等着,过很长时间(二三十秒)了可是可以保存进去,为什么要那么长时间呢?各位有没遇到过这情况
 
这个问题好像跟http://www.delphibbs.com/delphibbs/dispq.asp?lid=1027504的差不多
 
刚又试了试,发现把SQL中的Where条件中的字符形字段的就那么慢,去掉了就很正常
 
sTemp := 'SELECT COUNT(*) AS RowsCount FROM rydmb WHERE gsid = '
+ IntToStr(DeltaDs.FieldByName('gsid').AsInteger) + ' AND ygBh = '''
+ Trim(DeltaDs.FieldByName('ygBh').AsString) + ''' AND ygId <> '
+ IntToStr(DeltaDs.FieldByName('ygId').AsInteger);
---------------------------
先把上面生成的sql语句放到查询分析器上运行一下,看看是数据库的问题还是程序的问题。
 
请问楼主,我用的是DELPHI7,我怎么就找到了DataSetProvider控件呀,帮忙了[:D]
 
解决了,在BeforeUpdateRecord里自己写SQL保存就可以了
 
后退
顶部