2015-03-06 2 views
0

Я пытаюсь использовать оператор SQL UPDATE для условного заполнения некоторых полей таблицы на основе значения другого поля. По какой-то причине я получаю сообщение об ошибке, в котором говорится, что он не может найти поле | 1. Я проверил ссылку на таблицу и написание полей, но не могу понять, почему она не может их найти. Код (это strUpdateProd линия, которая вызывает ошибку):Почему инструкция sql update не распознает ссылки на поле таблицы

Private Sub btnProduct_Click() 

    Dim dlg As FileDialog 
    Dim strFileName As String 
    Dim strUpdateProd As String 

    Set dlg = Application.FileDialog(msoFileDialogFilePicker) 

    With dlg 
     .Title = "Select Audit File to Import" 
     .AllowMultiSelect = False 
     .Filters.Clear 
     .Filters.Add "Text Files", "*.txt", 1 
     If .Show = -1 Then 
      strFileName = .SelectedItems(1) 
     Else 
      Exit Sub 
     End If 
    End With 

    DoCmd.RunSQL ("DELETE * FROM tblProductImport") 
    DoCmd.TransferText acImportFixed, "Product Import Spec", "tblProductImport", strFileName 

    strUpdateProd = "UPDATE [tblProductImport] " _ 
     & "SET [tblProductImport].[Register] = '" & IIf([tblProductImport].[InvestSplit1] = "R", "RRSP", "TFSA") & "' " _ 
     & "WHERE [tblProductImport].[HolderID] IS NOT NULL;" 

    DoCmd.RunSQL strUpdateProd 
    DoCmd.SetWarnings True 

End Sub 

ответ

0

Попробуйте это:

strUpdateProd = "UPDATE [tblProductImport] " _ 
    & "SET [tblProductImport].[Register] = IIf([tblProductImport].[InvestSplit1] = 'R', 'RRSP', 'TFSA') " _ 
    & "WHERE [tblProductImport].[HolderID] IS NOT NULL;" 
+0

Это работало. Благодарю. Думаю, я все еще смущен тем, где пунктуация требуется при построении SQL-запроса в Access VBA. – Sphere

+0

Ваш оригинальный код попытался связать переменную «снаружи» SQL, которая [tblProductImport]. [InvestSplit1] - нет. – Gustav

Смежные вопросы