Как удалить запись SQL в серверной базе данных, VBA, Access - PullRequest
0 голосов
/ 22 января 2019

Я хотел бы удалить все записи в поле «путь» в таблице CUSTOMER, которая находится в базе данных (автономной) базы данных.

Пока у меня есть это, но оно не работает с оператором 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 & ";"

Ответы [ 3 ]

0 голосов
/ 22 января 2019

Полагаю, это сработало в конце концов:

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
0 голосов
/ 23 января 2019
 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]. [Pathway] = NULL, где [SPECPATH]. [Pathway] NOT NULL;" Если для таблицы указано SPECPATH, а для имени столбца указан путь Поскольку вы ссылаетесь на автономную базу данных, я включил код для временного добавления таблицы и ее удаления после (код не требуется, если вы оставляете таблицу, определенную в файле доступа "

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 голосов
/ 22 января 2019

A delete запрос удаляет строки, а не поля.

Вы должны использовать запрос update , который обновляет путь к полю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...