李维Delphi5.x分布式多层应用系统篇第3章中多个数据表的更新(50分)

  • 主题发起人 主题发起人 marry
  • 开始时间 开始时间
M

marry

Unregistered / Unconfirmed
GUEST, unregistred user!
运行原代码,在Client端新增记录后,当更新数据传递到应用程序服务器
会出错误信息框,‘Field Value required' 请问错误出在哪儿,怎样
修改?在书中不介绍新增,所以我将三张表的字段在BeforeUpdataRecord中
手工插入数据可,提交后还会出错,应用哪种方法进行数据更新哪?
 
1。>>在Client端新增记录后,当更新数据传递到应用程序服务器
>>会出错误信息框,‘Field Value required'
因为 应用程序服务器端的数据是从多个表里 Join Select 出来的,
你在Client端新增纪录后,应用程序服务器端并不知道如何将数据
正确的Insert。(正因为如此,书中介绍在BeforeUpdataRecord中处理数据)
2. >> 所以我将三张表的字段在BeforeUpdataRecord中
>> 手工插入数据可,提交后还会出错
现在我没试过,我试试看。
 
To marry: 请把你的详细情况讲一下,因为插入数据和具体表有关。
 
我看了一下,没有出问题,真的。
 
我将InsertUpdate时三张表的索引键和主键均进行插入处理,有时可以新增成功
,有时会报‘Master table Missing’错误,不知怎样处理?
其中表的处理如下,请多帮忙!
insert into "orders.db"
(CustNo, OrderNo, AmountPaid, EmpNo)
values
(1200, :OrderNo, :AmountPaid,4)
insert into employee
(EmpNo,LASTNAME, FIRSTNAME, PHONEEXT, HIREDATE, SALARY)
values
(:EmpNo,:LASTNAME, :FIRSTNAME, :PHONEEXT, :HIREDATE, :SALARY)
insert into customer
(CustNo, Company, City, Country)
values
(:CustNo, :Company, :City, :Country)
 
問題提出這樣久了,可還是沒滿意的回答,我想舊事重提,希望哪位古道熱腸的朋友
幫幫忙活!
 
"Master table Missing"
先从健值所有的MASTER TABLE 中查找是否有该值
 
李维的书中有一些讲的不清楚,但好在有源代码仔细查看一下,如何?
另外请告诉我,那本书哪个例子?谢!
 
当Delta中的字段多于UpdataSQL中的参数时,
UpdataSQL没有找到参数对应的字段,
可以用if (!Field) continue;跳过。
可是……
当Delta中的字段少于UpdateSQL中的参数,
用if (!Field) continue;跳过后,
就会遇到某些UpdataSQL中的参数没有被赋值,
执行UpdataSQL->ExecSQL(UpdateKind);当然会出错喽。
你可以把
if (!Field) Continue;
改成
if (!Field) {
UpdataSQL->Query[AUpdateKind]->SQL->Delete(2+i);
continue;
}
来删除UpdataSQL的SQL语句中的没有被赋值的参数。
不过这里有一个小问题,
删了SQL词句的一部分以后可别忘了恢复,
不然再执行就有bug了。

 
to marry:
借你的地盘问一下
我也正在看这本书,想问你一下,多表修改你是怎么实现的,
我在应用服务器上实现了beforeupdaterecord和setparams,
但在客户程序中不能实现更新,按了按钮,反应都没有,
帮我看一下好吗?他和应用服务器上构件属性的设置有关吗?
我看了随书光碟的例子,但找不出其中的原因???
help me!!!!
 
>>Client端新增记录后,....
我对这个例子的看法是,多个表的更新是指修改,不能新增。
有办法更新,就是在TDATASETPROVIDER或TDATASET的更新前处理,
主从表的主键是不会自己生成的。
请注意TDATASETPROVIDER的RESOLVETODATASET的值。
设定为FALSE的话就可以直接对其的更新前处理。
否则只有对其对应的TDATASET的更新前事件处理了。
 
我查看了一下,是由于有一个字段EMPNo没有输入数据所至!!
 
>>在Client端新增记录后,当更新数据传递到应用程序服务器
>>会出错误信息框,‘Field Value required'
就是在新增记录后,更新数据传递到应用程序服务器时,由于数据库的限制,
有些字段不能为空,但是现在这些字段却空了,所以出错。
 
多人接受答案了。
 
后退
顶部