MS Access скопировать таблицу в другой код таблицы VBA - PullRequest
2 голосов
/ 30 сентября 2019

У меня есть проблема, мне нужно создать код VBA для MS Access 2016, который будет копировать содержимое таблицы 1 в таблицу 2 с помощью

Если в таблице 2 есть дубликаты, отображается сообщение о дубликатахи вопрос, продолжить или прервать.

У меня есть этот код VBA, но я не знаю, как преобразовать его, чтобы работать так, как я хочу, я получил эту ошибку на изображении

Моя ошибка

Private Sub txtVWI_BeforeUpdate(Cancel As Integer)
On Error GoTo Err_txtVWI_BeforeUpdate
Dim intResponse As Integer
Dim strTable As String
Dim strFind As String
Dim strSQL As String
Dim rst As ADODB.Recordset
Dim Conn As ADODB.Connection
Set Conn = CurrentProject.Connection
Set rst = New ADODB.Recordset
strTable = "Główna"
strSQL = "SELECT Count(Główna.Data/Godzina) AS Duplikaty" & _ " FROM Główna" & _ " GROUP BY Główna.Data/Godzina" & _ " HAVING Count(Główna.Data/Godzina)>1"
Set rs = db.OpenRecordset(strSQL) 
If rs.RecordCount = 0 Then strSQL = "INSERT INTO Główna" & _     " SELECT Tymczasowa.*" & _     " FROM Tymczasowa"     DoCmd.RunSQL (strSQL)
rst.Open strSQL, Conn
If rst(0) > 0 Then ' duplikaty znalezione.
    If Me.NewRecord Then
        intResponse = MsgBox("Ten zestaw danych już istnieje" & vbCrLf & "chcesz zduplikować zestaw danych?", vbYesNo)
            If intResponse = vbNo Then
                Me.Undo
            End If
    End If
End If
Exit_txtVWI_BeforeUpdate:
    Exit Sub

        rst.Close
        Conn.Close
        Set rst = Nothing
        Set Conn = Nothing
Err_txtVWI_BeforeUpdate:
    MsgBox Err.Description
    Resume Exit_txtVWI_BeforeUpdate
End Sub

1 Ответ

1 голос
/ 30 сентября 2019

Если вы собираетесь использовать символ конкатенации и продолжения строки, то фактически следует продолжить на следующей строке.

Имя таблицы имеет специальный символ. Используйте [] для разделения. Может упростить оператор SQL.

Не видит db переменная объявлена ​​и установлена. На самом деле это не нужно для одноразового использования. Должен объявлять rs переменную.

Dim rs As DAO.Recordset
strSQL = "SELECT Count(*) AS Duplikaty" & _ 
          " FROM Główna" & _ 
          " GROUP BY [Data/Godzina]" & _ 
          " HAVING Count(*)>1"
Set rs = CurrentDb.OpenRecordset(strSQL) 
If rs.RecordCount = 0 Then strSQL = "INSERT INTO Główna" & _
         " SELECT Tymczasowa.*" & _
         " FROM Tymczasowa"

Не рекомендуется использовать знаки препинания / специальные символы в соглашении об именах.

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