三层Midas结构,主从表,多表连接的提交问题。(在线等)(200分)

  • 主题发起人 主题发起人 hugo668
  • 开始时间 开始时间
H

hugo668

Unregistered / Unconfirmed
GUEST, unregistred user!
1、主表使用 AODQuery ,语句如下:(注:SAL_QUOTE 为需要更新的表,其他的 C、T为其他连接的表)
select top 10 A.*,C.C_NAME as CV_NAME,C.C_ADDR,P.P_NAME,T.TP_NAME,PAY.PA_NAME,PAY.PA_DAY,PAY.PA_UNIT,P2.P_NAME as Q_CONF_NAME
from SAL_QUOTE as A
left join (select C.C_CODE,C.C_NAME,C.C_J_NAME,D.C_ADDR from B_CUSTOMERS as C left join B_CUSTOMERS_DT as D on C.ID=D.D_ID) as C
on C.C_CODE=A.Q_CV_CODE
left join B_PERSONAL as P on P.P_CODE=A.Q_MAN
left join B_PERSONAL as P2 on P2.P_CODE=A.Q_CONF_MAN
left join B_TRANSPORT_TYPE as T on T.TP_CODE=A.Q_STAFF_CODE
left join B_PAY as PAY on PAY.PA_CODE=A.Q_PAY_CODE
where A.Q_NO like :aa and A.Q_DATE between cast(:bb as DateTime) and cast(:cc as DateTime)
2、明细表:
select D.*,P.P_NAME,P.P_SPACE,P.P_U_CODE,G.G_NAME
from SAL_QUOTE_DT as D
left join B_PRODUCTS as P on P.P_CODE=D.QD_P_CODE
left join B_PROD_GY as G on G.G_CODE=D.QD_GY_CODE
where QD_D_ID=:Q_ID
order by QD_NO
and A.Q_TYPE=:dd
order by A.LST_DATE DESC,A.Q_NO DESC
3、以下都是 AdoQuery 所有参数使用系统默认参数。
4、增加 TDatasource 并设置 Dataset 为 主表Adoquery 的控件名称。
5、设置 明细表Adoquery 的 Datasource 为 TDatasource 控件,连接成主从表关系。
6、增加 Tdatasetprovider ,并设置 Dataset 为主表Adoquery 的控件名。并设置 Updatemode = upWhereKeyOnly
7、客户端直接按 applyupdate(0) 提并数据。
---------------------------
问题:
1、当 Tdatasetprovider 的 ResolveToDateSet = false 时,
A、客户端的 主表、明细表 新增多笔数据没有问题。
B、客户端的 主表 只修改部分数据,明细表不修改任何数据,提交数据没有问题。
C、客户端的 主表 不修改任何数据,明细表新增或修改任何数据,中间层报错:
"List index out of bounds(0)'
"列名 'CV_NAME ' 无效“
2、当 Tdatasetprovider 的 ResolveToDateSet = True 时,
A、客户端的 主表、明细表都 新增多笔记录时,中间层提示出错:Adoqry_SAL_QUOTE_DT:Cannot perform this operation on a closed dataset'
B、客户端的 主表、明细表 都 修改数据,没有出错。
请教:为什么 设置 ResolveToDateSet = True 只能修改不能新增????
为什么 设置 ResolveToDateSet = False 只能新增不能修改????
请救救我啊。
QQ:17095441 一直在线等待!!!!谢谢!
 
好多字。。 我忙先。
 
[:(]
怎么没有帮我啊!
 
我也没看,
但是你不用这么复杂,
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3502195
看看这个帖子,
我回复的内容,
 
后退
顶部