2012-03-05 44 views
0
Dim rt As DAO.Recordset 

strSQL = "SELECT DISTINCT A.OBJ FROM " 
strSQL = strSQL & "(SELECT VARBL AS OBJ FROM AGR_1252 WHERE AGR_NAME = '" _ 
    & AGR & "') A LEFT JOIN " 
strSQL = strSQL _ 
    & "(SELECT DISTINCT CONF_USOBT_C_ORG.ORG_OBJECT AS OBJ FROM Role_Content, CONF_USOBT_C_ORG " 
strSQL = strSQL & "WHERE Role_Content.AGR_NAME = '" _ 
    & AGR & "' AND Role_Content.TCode = [CONF_USOBT_C_ORG].[Name] AND Role_Content.TCode <> '" & tc & "') B " 
strSQL = strSQL & "ON A.OBJ = B.OBJ WHERE B.OBJ Is Null" 

Set rt = CurrentDb.OpenRecordset(strSQL) 

    Do While Not rt.EOF 

     DoCmd.RunSQL "DELETE FROM AGR_1252 WHERE AGR_NAME = '" & AGR & "' AND VARBL = '" & rt("OBJ") & "'" ', False 

rt.MoveNext 

    Loop 

rt.Close 
Set rt = Nothing 

我有上面的代码。我不知道为什么,但它在while循环中给我一个超时错误。我不知道如果是因为Recordset,但是在他做出了删除之后表格被阻塞了。记录集与链接表超时

还有另一种方法来选择记录而不使用RecordSet?

在此先感谢。

+0

什么是STRSQL的内容?您应该可以通过单个sql语句来删除记录。 – Fionnuala 2012-03-05 16:47:09

+0

strSQL的内容是:strSQL =“SELECT DISTINCT A.OBJ FROM” strSQL = strSQL&“(SELECT VARBL AS OBJ FROM AGR_1252 WHERE AGR_NAME ='”&AGR&'')LEFT JOIN“ strSQL = strSQL& “(SELECT DISTINCT CONF_USOBT_C_ORG.ORG_OBJECT AS OBJ FROM Role_Content,CONF_USOBT_C_ORG” strSQL = strSQL&“WHERE Role_Content.AGR_NAME ='”&AGR&“'AND Role_Content.TCode = [CONF_USOBT_C_ORG]。[Name] AND Role_Content.TCode <> '“&tc&”')B“ strSQL = strSQL&”ON A.OBJ = B.OBJ WHERE B.OBJ为空“ – user1250171 2012-03-05 16:55:46

+0

该查询是否适合您?我注意到你正在使用两个零长度的字符串('WHERE Role_Content.AGR_NAME ='“')。在Access中获取ZLS通常相当困难,所以我期望'WHERE Role_Content.AGR_NAME为空” – Fionnuala 2012-03-05 17:16:04

回答

0

我想你可能会寻找的东西就行:

DELETE FROM AGR_1252 
WHERE AGR_NAME = Agr 
AND Varbl Not In (
    SELECT c.ORG_OBJECT 
    FROM Role_Content r 
    INNER JOIN CONF_USOBT_C_ORG c 
    ON r.TCode =c.[Name] 
    WHERE r.AGR_NAME Is Null) 
+0

Thaks,但是查询工作正常,因为她删除了firts记录,但是当她尝试删除第二条记录时会提供超时。 您发布的查询以相同的方式工作= | 我认为recordSet阻塞了表。有没有另一种方式来选择数据而不使用RecordSet? – user1250171 2012-03-05 17:56:04

+0

我发布的示例应该在查询设计窗口中运行。它不会一次删除一条记录,而是一次删除所有记录。对真实数据进行测试显然不安全。 – Fionnuala 2012-03-05 18:14:13