Ошибка выполнения VBA при группировке значения str sql - PullRequest
0 голосов
/ 11 января 2020

Я пишу ниже код, но показывая ошибку может кто-нибудь мне помочь

enter image description here

Private Sub cmdShowData_Click()
    'populate Data
    strSQL = "SELECT [OverseasAgent],SUM([Weight]) As [Total] FROM [data$] WHERE  "


    If cmbNetwork.Text <> "" Then
        strSQL = strSQL & " Format([JobDate], 'MMM/YYYY')='" & cmbNetwork.Text & "'"
    End If

    If cmbOrigin.Text <> "" Then
        If cmbNetwork.Text <> "" Then
            strSQL = strSQL & " AND [Branch]='" & cmbOrigin.Text & "'"
        Else
            strSQL = strSQL & " [Branch]='" & cmbOrigin.Text & "'"
        End If
    End If

    If cmbDestination.Text <> "" Then
        If cmbNetwork.Text <> "" Or cmbOrigin.Text <> "" Then
            strSQL = strSQL & " AND [Destn]='" & cmbDestination.Text & "'"
        Else
            strSQL = strSQL & " [Destn]='" & cmbDestination.Text & "'"
        End If
    End If

    If cmdCountry.Text <> "" Then
        If cmbNetwork.Text <> "" Or cmbOrigin.Text <> "" Or cmbDestination.Text <> "" Then
            strSQL = strSQL & " AND [Country]='" & cmdCountry.Text & "'"
        Else
            strSQL = strSQL & " [Country]='" & cmdCountry.Text & "'"
        End If
    End If


    If cmbNetwork.Text <> "" Or cmbOrigin.Text <> "" Or cmbDestination.Text <> "" Or cmdCountry.Text <> "" Then
        'now extract data
        closeRS

        OpenDB

        rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
        If rs.RecordCount > 0 Then
            Sheets("View").Visible = True
            Sheets("View").Select
            Range("dataSet").Select
            Range(Selection, Selection.End(xlDown)).ClearContents

           'Now putting the data on the sheet
            ActiveCell.CopyFromRecordset rs
        Else
            MsgBox "I was not able to find any matching records.", vbExclamation + vbOKOnly
            Exit Sub
        End If 
    End If
End Sub

1 Ответ

1 голос
/ 11 января 2020

Кажется, что "OverseasAgent" находится в SELECT, поскольку запрос начинается с "SELECT [OverseasAgent],SUM([Weight]) As [Total] FROM [data$] WHERE", но он не является частью агрегатной функции SUM().

Попробуйте изменить запрос без SUM() Первоначально, чтобы увидеть, что вы получаете. Затем добавьте его обратно и добавьте часть Group By OversearsAgent. И вообще, попробуйте сначала выполнить жестко запрограммированный запрос без каких-либо условий из формы.

Чтобы точно понять, что не так с запросом, напишите MsgBox strSQL перед rs.Open strSQL и посмотрите, как выглядит запрос. Затем осмотрите дальше.

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