200分,老问题(以前的讨论不满意): 如何在C/S模式下实现多表更新?(200分)

  • 主题发起人 主题发起人 吴剑明
  • 开始时间 开始时间

吴剑明

Unregistered / Unconfirmed
GUEST, unregistred user!
查询过了,以前的讨论都没在C/S下解决这个问题。
select 来自多个数据表。
1 requestlive := true
2 Tupdatesql控件
均无法直接完成多表更新工作。
李维的三层倒有讲这个问题的。但我的是两层。
如果用TSTRINGGRID之类的,手工一条一条往数据库里添,效率低,
代码烦琐。
请教高手,谁有快捷方式,解决这个老问题?
我知道很多人都在为这个烦恼。
现在请大家一起来个解决!!!!
 
我们公司就是用STRINGGRID作为数据显示构件的。

我们是自己开发了一个构件,提供类似dbGrid的功能,
但是以stringgrid为数据显示构件。提供增删改查功能。
这就是一次投资(编程),终身受益:)

 
搞不懂! 来听听,
我认为用TUpdate可以的, Tupdate是通过SQL来更新,和三层无关
 
请大家继续讨论,提出更好的建议。
 
痴心求解。
 
我的方法仍然是用 Tupdatesql控件,不过有一点,
可以在Tupdatesql控件的语句中直接写多句Sql语句,甚至可以利用Tupdatesql更新
TQuery 中没有涉及的表的字段,当然包括插入和删除了! ^_^
例如 : Query1.Sql.Text := 'Select Id,Name from tblMan';
updateSql1.UpdateSql := 'Update tblMan set id = :Id,Name=:Name where id=:OldId';
updateSql1.UpdateSql := 'Update tblManDeta set Manid = :Id,ManName=:Name where Manid=:OldId';
updateSql1.UpdateSql := 'Update tblManDeta set Manid = :Id,ManName=:Name where Manid=:OldId';
上面的例子就可以同时更新 tblMan 和 tblManDeta 两个表里的数据
你可以根据自己的 Sql 分配相应的 字段到相应的表


 
>>Query1.Sql.Text := 'Select Id,Name from tblMan';
这是来自一个表的啊!
不过你的意思我明白。你就是这样实现多表更新的吗?
 
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=309491
多表更新小意思
 
李维说的同样适用于C/S啊
在窗体上放几个UpdateSQL(每个UpdateSQL对应一张表),首先利用Query1的UpdateObject
属性,将TUPdateSQL连接上,生成了SQL语句后再清空UpdateObject。一个UpdateSQL更新
一个表,再在Query1的onUpdateRecord事件里写代码:
UpdateSQL1.DataSet:=Query1;
UpdateSQL1.Apply(UpdateKind);
UpdateSQL2.DataSet:=Query1;
UpdateSQL2.Apply(UpdateKind);
UpdateSQL3.DataSet:=Query1;
UpdateSQL3.Apply(UpdateKind);
UpdateAction:=uaApplied;
然后调用
Query1.ApplyUpdates;
Query1.CommitUpdates;就可以了
 
zhuhuan 好野!!
多谢指教!
 
多人接受答案了。
 
这样的情况最好就是先用Query查到数据后,把数据倒到临时表中,
再Insert、Edit,在这里,我隆重推荐TClientDataSet,它除了用在三层
应用中,还有Memory Table的用途,用法跟Table一样,只是不用指定
DatabaseName和TableName,Remote Server也不要。
它可以用以下方法编辑字段(表结构),
ClientDataSet.FieldDefs.AddFieldDef;
当然还可以用以下方法编辑数据,
ClientDataSet.Append;
ClientDataSet.Edit;
ClientDataSet.Post;
用以下方法添加索引,
ClientDataSet.IndexDefs.AddIndexDef;
还可以Filter ......

就跟虚拟表一样,但它更方便,要注意:
1.用ClientDataSet.Close后 ,表结构(虚拟)被清除;
2.不要Refresh,他要Remote Server.

从此,你就可以跟什么虚拟表、内存表、中间表拜拜了。我个人认为,
做复杂报表时,它是最佳选择。
 
后退
顶部