如何删除SQL记录在后台数据库,VBA,访问

问题描述 投票:-1回答:3

我想删除表中的客户是在后端(离线)数据库中的字段“途径”的所有记录。

到目前为止,我有这一点,但它不与DELETE语句工作

Sub delpath()

Dim dbinputC As String

dbinputC = "[" & Application.CurrentProject.Path & "\CUSTOMER.accdb" & "]"

DoCmd.RunSQL "DELETE pathway FROM " & dbinputC & ".SPECPATH (WHERE pathway <> Null);"

End Sub

要么

Dim dbinputC As String

dbinputC = "'" & Application.CurrentProject.Path & "\CUSTOMER.accdb" & "'"
DoCmd.RunSQL "DELETE pathway FROM SPECPATH (WHERE pathway <> Null) IN " & dbinputC & ";"
vba ms-access
3个回答
1
投票
 Private Sub Test_Clear_Data
     Clear_Data "SPECPATH", "Pathway"
 End Sub


 Private Sub Clear_Data(Table_Name as String, Column_Name As String)
 Dim Connection_Path As String
 Dim Source_Recset As Object
 'Assumes "Clear_Data_Query" already exists
   Set Source_Recset = CurrentDB.QueryDefs("Clear_Data_Query")
   Source_Recset.SQL = CStr("Update " & Table_Name & " SET [" & Table_Name & "].[" & Column_Name & "] = NULL WHERE [" & Table_Name & "].[" & Column_Name & "] IS NOT Null" & ";")
   Source_Recset.Execute
   Source_Recset.Close
End Sub

Source_Recset.SQL应该得到 “UPDATE SPECPATH SET [SPECPATH] [路径] = NULL其中[SPECPATH] [路径] IS NOT NULL;”如果表是SPECPATH和列名是途径既然你引用一个离线数据库I包含的代码来临时追加的表,如果你留在访问文件中定义的表后,将其删除(无需代码”

Private Sub Clear_Offline_Data(Share_Folder as String, File_Name as String, Table_Name as String, Column_Name As String)
Dim Connection_Path As String
Dim Source_Recset As Object
Dim Destination_Recset As Object

'Create Table To Network Data
   Set Destination_Recset = currentDB.CreateTableDef("Offline_Data_Table")
   Connection_Path = ";DATABASE=" & ShareFolder & "\" & File_Name
   Destination_Recset.Connect = Connection_Path
   Destination_Recset.SourceTableName = Table_Name

   currentDB.TableDefs.Append Destination_Recset
   currentDB.TableDefs.Refresh
'Create Temp_Data From Network Table
   Set Source_Recset = CurrentDB.CreateQueryDef("Clear_Data_Query")
   Source_Recset.SQL = CStr("Update Offline_Data_Table SET [Offline_Data_Table]." & Column_Name & " = NULL WHERE [Offline_Data_Table]." & Column_Name & " IS NOT Null" & ";")
   Source_Recset.Execute
   Source_Recset.Close
'Remove Table to network data 
   currentDB.TableDefs.Delete "Offline_Data_Table"
   currentDB.TableDefs.Refresh
'Remove Query
   currentDB.QueryDefs.Delete "Clear_Data_Query"
   currentDB.QueryDefs.Refresh
End Sub

0
投票

删除查询删除行,而不是场。

您必须使用更新字段途径更新查询。


0
投票

我猜想,这毕竟工作:

Sub delpath()

Dim dbinputC As String

 dbinputC = "[" & Application.CurrentProject.Path & "\CUSTOMER.accdb" & "]"
 DoCmd.RunSQL "DELETE pathway FROM " & dbinputC & ".SPECPATH WHERE pathway Is Not Null;"

 End Sub
© www.soinside.com 2019 - 2024. All rights reserved.