ado的adodataset更新问题? (50分)

  • 主题发起人 主题发起人 ypluo
  • 开始时间 开始时间
Y

ypluo

Unregistered / Unconfirmed
GUEST, unregistred user!
我在Tadodataset中的CommandText中语句为:
select a.*,b.kh_mc,c.cp_mc,c.cp_dw,c.cp_bjg
from khjg a,kh b,cp c
where a.kh_dm =b.kh_dm and a.cp_dm =c.cp_dm and a.kh_dm=:p_dm

当我增加一个记录,选择相应的cp,kh后,使用POST出错,提示:
kh表的kh_dm不能为空,应该输入一个值。
我主要是想在khjg表中插入数据,其它表不用更新数据。


 
难道我说的不够明白?

这个应该和kh与khlb差不多,当增加KH记录时,其中的khlb_dm,khlb_mc的字段
是不是会出现以上问题。
 
这主要是组合查询的缘故,改用单表试试。
 
单表当然可以,可是在应用软件中,不可能总是处理单表的。
在组合查询中也要用到插入记录
 
我在网上看到一位朋友的问题与我一样的问题,他说的更详细如下:
数据库是sql server7,前端用ADO控件连接。
有两个表,数据分别是:
hp(货品表)
id name
1 A
2 B
3 C
4 D

cgd(采购单,idhp与hp的id关联)
id idhp sl
1 1 2
2 2 3
3 3 4
4 4 5

在Tadoquery1的sql写:
select a.id,b.name,a.sl from cgd a,hp b where a.idhp=b.id

Tadoquery1.LockType:=itBatchOptimistic
Tadoquery1的Afterdelete写:
adoquery1.UpdateBatch;

在Button1的Onclick写:
adoquery1.delete;

那么Tdbgrid显示:
id name sl
1 A 2
2 B 3
3 C 4
4 D 5

假如光标指向表格Tdbgrid的id=2时,一按button1,删除掉id=2的记录。当我打开数据库时,我发现hp的name=B也同时被删除掉,这个问题我已经解决,可以在adoquery1的afteropen事件里就行了:
ADOQuery1.Recordset.Properties.Item['Unique Table'].Value:='cgd';

但是,当adoquery1.insert时,添加一些数据,然后adoquery1.post时,同时也把hp添加了数据,我的问题是,如何避免这个问题?我以前用BDE连接sql server7是没有这个问题的,我知道是由于加这个组件:Tupdatesql,但ado是不能添加这个组件的,那么如何用ADO实现多表连接单表更新的问题?多谢了。

 
大家有没有变通的方法?
 
把表的外健去掉
 
我没有设置外銉
 
问题出在这里 where a.kh_dm =b.kh_dm
你在DATASET中直接赋值时,其实是在一个虚拟表中(即你的Select语句 也就是查询视图)
中工作的,你的添加了一条记录,但这条记录不能满足where a.kh_dm =b.kh_dm
B中没有。也就是说,你就是加了,这个视图中也不会出现的。
所以,你需要 一:在B中也加 二:另写SQL语句 三:用两个DATASET
一个只显示A,一个显示B,然后用 ADODATASET的DATASOUCE属性和MASTERFIELDS属性来
过滤,或者用FIELTER属性也可。但有一点,如果B中kh_dm字段没有该值,根据你的条件
你添加的内容是不会显示出来的。
 
我是从B中选择一个客户的。
 
用两个DATASET吧,这样就随便你干了
 
用两个dataset怎么做
 
一个只显示A,一个显示B,
用Filter来过滤A

另外我想到用jions on() 连接 来实现,不知道行不行
 
更新部分用sql语句inert update等来写,一般不会有问题的!
 
那岂不麻烦死
 
我从别人那里说到一种使用计算字段的方法,解决了这个问题,
但又有新的问题:http://www.delphibbs.com/delphibbs/dispq.asp?lid=1071040
 
這個問題我也想了很久,沒辦法,后來我用查找字段
從表字段不能排序,我過濾,如果這個問題以解決了,請發EAIL:yjt-117@263.net告訴我
謝謝了我QQ8574571,有空找我聊
 
这个问题,我已经解决了, 我自己已经写了一个过程,这个过程能自动处理增加、编辑的操作需要
 
算了,我再问吧
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
后退
顶部