小
小小东
Unregistered / Unconfirmed
GUEST, unregistred user!
为什么QUERY+UPDATESQL更新时程序会自动关闭
开发环境为WINDWOS2000+DELPHI6
后台数据库为SQL SERVER2000企业版
程序如下:
现在有A.B两个表,如A为进货明细表,B为物资信息表
A的字段为 IN_ID 进货单ID B的字段为 WZ_NO 物资编号
WZ_NO 物资编号 WZ_NAME 物资名称
IN_PRICE 进货单价 WZ_TYPE 规格型号
IN_QTY 进货数量 WZ_TH 技术参数
... ...... ..... ......
QUERY的SQL语句如下:
SELECT A.IN_ID,A.WZ_NO,A.IN_PRICE,A.IN_QTY,B.WZ_NAME,B.WZ_TYPE,B.WZ_TH
FROM A LEFT OUTER JOIN B ON A.WZ_NO = B.WZ_NO
WHERE WZSQ.IN_ID=:TSQ_ID
程序运行时把参数TSQ_ID的值赋为进货主表的ID,与主表关联
QUERY的cachedupdate属性为TRUE
UPDATEOBJECT的属性为UPDATESQL1;
UPDATESQL1的DELETESQL语句如下:
delete from A where IN_ID = :OLD_IN_ID and WZ_NO = :OLD_WZ_NO
INSERTSQL语句如下:
insert into A (IN_ID, WZ_NO, IN_Price, IN_QTY)
values IN_ID, :WZ_NO, :IN_Price, :IN_QTY)
UPDATESQL语句如下:
update A set IN_ID = :IN_ID, WZ_NO = :WZ_NO, IN_Price = :IN_Price,
IN_Qty = :IN_Qty where IN_ID = :OLD_IN_ID and WZ_NO = :OLD_WZ_NO
bitbtn1的事件如下:
其中A、B、C、D、E、F由其他数据集传入;
该BUTTON的功能是在B表增加一条新记录
BITBTN2的事件如下:
Database1.StartTransaction;
try
query.ApplyUpdates;
Database1.Commit;
query.CommitUpdates;
except
on E:EDBEngineError do
begin
其他一些捕捉错误语句
Database1.Rollback;
raise;
end;
该BUTTON的功能是把缓存数据更新到后台
当插入一条记录,按保存按扭,数据正常
保存后再增加新记录,按保存按扭,数据能更新到后台,但程序自动关闭
在ONUPDATERRROR事件捕捉不到错误,如果在DELPHI下运行提示访问地址无效
望各位大虾指教
开发环境为WINDWOS2000+DELPHI6
后台数据库为SQL SERVER2000企业版
程序如下:
现在有A.B两个表,如A为进货明细表,B为物资信息表
A的字段为 IN_ID 进货单ID B的字段为 WZ_NO 物资编号
WZ_NO 物资编号 WZ_NAME 物资名称
IN_PRICE 进货单价 WZ_TYPE 规格型号
IN_QTY 进货数量 WZ_TH 技术参数
... ...... ..... ......
QUERY的SQL语句如下:
SELECT A.IN_ID,A.WZ_NO,A.IN_PRICE,A.IN_QTY,B.WZ_NAME,B.WZ_TYPE,B.WZ_TH
FROM A LEFT OUTER JOIN B ON A.WZ_NO = B.WZ_NO
WHERE WZSQ.IN_ID=:TSQ_ID
程序运行时把参数TSQ_ID的值赋为进货主表的ID,与主表关联
QUERY的cachedupdate属性为TRUE
UPDATEOBJECT的属性为UPDATESQL1;
UPDATESQL1的DELETESQL语句如下:
delete from A where IN_ID = :OLD_IN_ID and WZ_NO = :OLD_WZ_NO
INSERTSQL语句如下:
insert into A (IN_ID, WZ_NO, IN_Price, IN_QTY)
values IN_ID, :WZ_NO, :IN_Price, :IN_QTY)
UPDATESQL语句如下:
update A set IN_ID = :IN_ID, WZ_NO = :WZ_NO, IN_Price = :IN_Price,
IN_Qty = :IN_Qty where IN_ID = :OLD_IN_ID and WZ_NO = :OLD_WZ_NO
bitbtn1的事件如下:
代码:
begin
with query do
begin
append;
fieldbyname('in_id').value:=a;
fieldbyname('wz_no').value:=b;
fieldbyname('wz_name').value:=c;
fieldbyname('wz_type').value:=d;
fieldbyname('wz_th').value:=e;
fieldbyname('in_price').value:=f;
end;
end;
该BUTTON的功能是在B表增加一条新记录
BITBTN2的事件如下:
Database1.StartTransaction;
try
query.ApplyUpdates;
Database1.Commit;
query.CommitUpdates;
except
on E:EDBEngineError do
begin
其他一些捕捉错误语句
Database1.Rollback;
raise;
end;
该BUTTON的功能是把缓存数据更新到后台
当插入一条记录,按保存按扭,数据正常
保存后再增加新记录,按保存按扭,数据能更新到后台,但程序自动关闭
在ONUPDATERRROR事件捕捉不到错误,如果在DELPHI下运行提示访问地址无效
望各位大虾指教