我尝试用kbmmw componet删除记录。
我在客户端使用TkbmMWClientQuery。
第一种方式。
功能
TkbmMWClientQuery.Append/Post;
TkbmMWClientQuery.Resolve;
是工作但是
TkbmMWClientQuery.Delete;
TkbmMWClientQuery.Resolve;
不起作用
第二种方式。
我在服务器端使用参数
进行了单独的qSEL_COMP_DEL查询sql代码:
delete from Company_Users Where Phone_main = :PPhone_main and ID_Comp_Users = :PID_Comp_Users
在客户端运行它。
if qSEL_COMP_DEL.Active then
qSEL_COMP_DEL.Close;
qSEL_COMP_DEL.ParamByName['PPhone_Main'].AsString := qSEL_COMP.FieldByName('Phone_main').AsString;
qSEL_COMP_DEL.ParamByName['PID_COMP_USERS'].AsInteger := qSEL_COMP.FieldByName('ID_Comp_Users').AsInteger;
qSEL_COMP_DEL.Query.Text:='@SEL_COMP_DEL';
qSEL_COMP_DEL.Execute; // .Open;
qSEL_COMP_DEL.Resolve;
它也不起作用。
如何解决问题?
答案 0 :(得分:0)
尝试启用服务器端调试,以查看它为delete语句生成的内容。
在服务器上,在您尝试解决之前的某个地方:
kbmMWDebugTypes:=[mwdtDBResolve];
kbmMWDebugWhere:=mwddOneRawTextFile;
kbmMWDebugLevel:=[mwdlAll];
kbmMWDebugFile:='c:\temp\debug.txt';
它将输出生成的SQL和您的解析结果。
还要记住,如果您在客户端查询中插入记录,然后将其删除,则在解析期间不会插入/删除它,因为从服务器视图中看,它从来就不存在。
但是,由于您的手动语句也不起作用,我认为它实际上是您的数据库,阻止您删除。可能已启用参照完整性,并且阻止您在首次删除详细记录之前删除主记录。
最好的问候 金/ C4D