我用如下的 SQL 进行查询:
SELECT Logs.Auto_ID AS 自动编号,  
      oType.cOpTypeName AS 操作类型, Users.cUser_Id AS 用户编码, 
      Users.cUser_Name AS 用户名, Logs.cComputerName AS 客户端计算机名, 
      Logs.cIP AS '客户端 IP 地址', Logs.dtOpDateTime AS 操作日期
FROM dbo.Sys_Logs Logs LEFT OUTER JOIN
      dbo.Sys_Users Users ON Logs.cUser_Id = Users.cUser_Id LEFT OUTER JOIN
      dbo.Sys_OperationType oType ON Logs.cOptype_ID = oType.cOpType_ID数据控件用的是 TADODataSet,
为什么一 Delete,会一同把 Sys_Logs, Sys_Users, Sys_OperationTypev 三张表中的相关记录一并删除掉呢?而我实际上仅仅是想删除 Sys_Logs 中的一条记录而已。
请问有什么办法可以解决?

解决方案 »

  1.   

    你还是把ID记下来,直接用SQL语句删吧!
      

  2.   

    直接用 SQL 语句删除的话,UpdateBatch不就没有意义了?
      

  3.   

    只能说这个问题目前根本就没有办法,除非你自己修改ADODB.PAS文件,也就是自己修改Delphi的VCL库,否则只能使用SQL模式删除。当然,还有一个办法就是通过计算或者查找字段来进行操作,但也要看SQL的复杂程度,SQL太复杂了一样没戏
      

  4.   

    那如果这样子的话,我想,我可能做更改数据库结构算了。
    虽然这样子会有很多冗余数据,但在查询的时候就可以少用甚至不用JOIN了。而且上边的问题也就不存在了。继续等待其他朋友的指点。
      

  5.   

    可以解决的:
     yourAdoDataset.Recordset.Properties.Item['Unique Table'].Value:='Sys_log';