2016-05-10 4 views
0

Получение данных из различных текстовых полей в форме и выполнение обновления базы данных SQL Server. Вот создание SQL:Ошибка синтаксиса в VBA SQL

Dim upDateStr As String 
upDateStr = "UPDATE dbo_Master_Accounts SET dbo_Master_Accounts.FirstName = " & Chr$(34) & Me.disFirstName & Chr$(34) & ", " 
upDateStr = upDateStr + "dbo_Master_Accounts.LastName = " & Chr$(34) & Me.disLastName & Chr$(34) & ", " 
upDateStr = upDateStr + "dbo_Master_Accounts.Address_Line_1 = " & Chr$(34) & Me.disAddr1 & Chr$(34) & ", " 
upDateStr = upDateStr + "dbo_Master_Accounts.City = " & Chr$(34) & Me.disCity & Chr$(34) & ", " 
upDateStr = upDateStr + "dbo_Master_Accounts.State = " & Chr$(34) & Me.disState & Chr$(34) & ", " 
upDateStr = upDateStr + "dbo_Master_Accounts.PostalCode = " & Chr$(34) & Me.disPostalCode & Chr$(34) & ", " 
upDateStr = upDateStr + "dbo_Master_Accounts.Phone_Number_1 = " & Chr$(34) & Me.disHomePhone & Chr$(34) & ", " 
upDateStr = upDateStr + "dbo_Master_Accounts.Phone_Number_2 = " & Chr$(34) & Me.disCellPhone & Chr$(34) & ", " 
upDateStr = upDateStr + "dbo_Master_Accounts.Gender = " & Chr$(34) & Me.disGender & Chr$(34) & ", " 
upDateStr = upDateStr + "dbo_Master_Accounts.Date_Of_Birth = " & Chr$(34) & Me.disDateofBirth & Chr$(34) & ", " 
upDateStr = upDateStr + "dbo_Master_Accounts.Email = " & Chr$(34) & Me.disEmailAddress & Chr$(34) & ", " 
upDateStr = upDateStr + "WHERE (((dbo_Master_Accounts.Master_ID) = " & Chr$(34) & Me.frmoldCardno & Chr$(34) & "" 

Посмотрел на запрос в ближайшее время, и все данные есть, и все выглядит корректно. Вот ближайшее окно.

UPDATE dbo_Master_Accounts 
SET dbo_Master_Accounts.FirstName = "John", 
     dbo_Master_Accounts.LastName = "Handy", 
     dbo_Master_Accounts.Address_Line_1 = "123 From", 
     dbo_Master_Accounts.City = "Somewhere", 
     dbo_Master_Accounts.State = "IL", 
     dbo_Master_Accounts.PostalCode = "50310", 
     dbo_Master_Accounts.Phone_Number_1 = "1234567890", 
     dbo_Master_Accounts.Phone_Number_2 = "", 
     dbo_Master_Accounts.Gender = "M", 
     dbo_Master_Accounts.Date_Of_Birth = "02/14/1967", 
     dbo_Master_Accounts.Email = "[email protected]", 
WHERE (((
      dbo_Master_Accounts.Master_ID 
     ) = "000055" 

Но я получаю синтаксическую ошибку, которую я не вижу. Пробовал работать только с первой и последней двумя строками кода и получить ту же ошибку.

Заранее спасибо

JPL

+4

запятая перед 'where'. Три '(' в вашем месте и только один ')' – Ghost

+2

И вы используете '' 'вместо' '', но это работает, если вы правильно настроили odbc. –

+2

И вам действительно не следует доверять ввод пользователю, открывается сам к атаке впрыска.Используйте параметры – Ghost

ответ

0

Start, пытаясь это увидеть, если он работает (удален запятую перед, где и закрепил скобку), а затем использовать параметры, чтобы сделать это правильно, потому что таким образом вы» re open to SQL injection attack

Dim upDateStr As String 
upDateStr = "UPDATE dbo_Master_Accounts SET dbo_Master_Accounts.FirstName = '" & Me.disFirstName & "', " 
upDateStr = upDateStr + "dbo_Master_Accounts.LastName = '" & Me.disLastName & "', " 
upDateStr = upDateStr + "dbo_Master_Accounts.Address_Line_1 = '" & Me.disAddr1 & "', " 
upDateStr = upDateStr + "dbo_Master_Accounts.City = '" & Me.disCity & "', " 
upDateStr = upDateStr + "dbo_Master_Accounts.State = '" & Me.disState & "', " 
upDateStr = upDateStr + "dbo_Master_Accounts.PostalCode = '" & Me.disPostalCode & "', " 
upDateStr = upDateStr + "dbo_Master_Accounts.Phone_Number_1 = '" & Me.disHomePhone & "', " 
upDateStr = upDateStr + "dbo_Master_Accounts.Phone_Number_2 = '" & Me.disCellPhone & "', " 
upDateStr = upDateStr + "dbo_Master_Accounts.Gender = '" & Me.disGender & "', " 
upDateStr = upDateStr + "dbo_Master_Accounts.Date_Of_Birth = '" & Me.disDateofBirth & "', " 
upDateStr = upDateStr + "dbo_Master_Accounts.Email = '" & Me.disEmailAddress & "' " 
upDateStr = upDateStr + "WHERE (dbo_Master_Accounts.Master_ID) = '" & Me.frmoldCardno & "' " 
+0

Коррекции работали нормально. Но я не уверен, что понимаю, что вы подразумеваете под параметром Query. Я предполагаю, что вы говорите о чем-то большем, чем использование скобок [] в запросе. Спасибо за помощь. – jpl458

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