2015-06-23 4 views
1

Может ли кто-нибудь помочь мне с нижеследующим кодом для редактирования записей, пожалуйста? Я пытаюсь изменить, но есть ошибка синтаксиса, и я не могу исправить это. См. Ошибку ниже. Ошибка времени выполнения '3075' Ошибка синтаксиса (отсутствует оператор) в запросе expresion 'TypeID ='.Microsoft Access/Update Record

Благодаря

Private Sub oshaadd_Click() 
'On Error Resume Next 

    If (IsNull(Me.oshaID) Or (Me.oshaID = "") And IsNull(Me.oshatype) Or    (Me.oshatype = "")) Then 
    MsgBox "please fill required fields!", vbInformation, "Information" 
     Exit Sub 
    End If 

If Me.oshaID.Tag & "" = "" Then 
    CurrentDb.Execute "INSERT INTO osha(TypeID, OSHA)" & _ 
    "VALUES ('" & Me.oshaID & "', '" & Me.oshatype & "')" 
     If MsgBox("Added", vbOKOnly) Then 
      Me.osha_subform.Form.Requery 
     End If 
    Else 

    CurrentDb.Execute "UPDATE osha " & _ 
    "SET TypeID =" & Me.oshaID & _ 
    ", OSHA = '" & Me.oshatype & "'" & _ 
    "WHERE TypeID =" & Me.oshatype.Tag 
     MsgBox "Updated", vbInformation, "Information" 
     Me.oshaadd.Caption = "Add" 
     Me.oshaedit.Enabled = True 
End If 
Me.osha_subform.Form.Requery 
End Sub 



Private Sub oshaedit_Click() 
On Error Resume Next 
If Not (Me.osha_subform.Form.Recordset.EOF And  Me.osha_subform.Form.Recordset.BOF) Then 
    With Me.osha_subform.Form.Recordset 
     Me.oshaID = .Fields("TypeID") 
     Me.oshatype = .Fields("OSHA") 

     Me.oshaID.Tag = .Fields("TypeID") 
     Me.oshaadd.Caption = "Update" 
     Me.oshaedit.Enabled = False 
    End With 
End If 
End Sub 
+2

Я думаю, вы упускаете '' 'с. –

+2

Поместите SQL-запрос сначала в строку и проверьте строку, например 'strSQL =" UPDATE osha "& ...'. Если 'TypeID' является первичным ключом, то перед обновлением ключа должен быть текущий ключ. Me.oshatype.Tag'. –

+0

Done :) спасибо большое :) –

ответ

2

Вы забыли поставить базу данных единых котировка вокруг Me.oshaID и Me.oshatype.Tag в операторе UPDATE SQL:

CurrentDb.Execute "UPDATE osha " & _ 
    "SET TypeID ='" & Me.oshaID & "'" & _ 
    ", OSHA = '" & Me.oshatype & "'" & _ 
    " WHERE TypeID ='" & Me.oshatype.Tag &"';" 
+0

Paul, теперь его отображение MsgBox как обновлено, но запись по-прежнему остается той же –

1
CurrentDb.Execute "UPDATE osha " & _ 
"SET TypeID =" & Me.oshaID & _ 
", OSHA = '" & Me.oshatype & "'" & _ 
"WHERE TypeID =" & Me.oshatype.Tag 
MsgBox "Updated", vbInformation, "Information" 
Me.oshaadd.Caption = "Add" 
Me.oshaedit.Enabled = True 

В этом блоке кода, где у вас есть "SET TypeID =" и "WHERE TypeID =" попробуйте добавить пробел после знака равенства, так что читает "TypeID =" , Если это не решает попробовать ошибку при добавлении одиночных кавычек вокруг значения, которое вы назначаете TypeID (TypeID = «„& Me.oshaID & _“»,)

+0

Еще не работает –

+0

Если вы положили разрыв в строке CurrentDb.Execute, это значения Me.oshaID, Me.oshatype и Me.oshatype.Tag, что вы ожидаете увидеть ? –

+0

Могу ли я отправить вас по электронной почте, если вы можете проверить его, пожалуйста, Im реально разозлился весь день с этим –

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