ms-access

ms access - Error de sintaxis en la inserción en la declaración: ¿cuál es el error?



ms-access (2)

Este es el código completo aquí para un botón para agregar datos a 2 tablas diferentes. Lo extraño es que tengo otra forma con un botón con una función similar y funciona bien con el mismo enunciado Opción Comparar base de datos

Private Sub addbutton_Click() CurrentDb.Execute "INSERT INTO Clients(F_Name,L_Name,Phone_Number,E-mail,Gender,Date_of_Birth) " & "VALUES(" & Me.textfname & ",''" & Me.textlname & "'',''" & Me.textpnumber & "'',''" & Me.textemail & "'',''" & Me.textgender & "'',''-" & Me.textdob & "'')" CurrentDb.Execute "INSERT INTO Accounts(F_Name,L_Name,Username,Password,accounttype) " & "VALUES(" & Me.textfname & ",''" & Me.textlname & "'',''" & Me.textusername & "'',''" & Me.textpassword & "'',''" & Me.textaccountype & "'')" clientssubform.Form.Requery End Sub


Intenta cambiar esta parte del código

"VALUES(" & Me.textfname & ",''" &

a esto

"VALUES(''" & Me.textfname & "'',''" &

en ambas lineas


Primero, Contraseña es una palabra reservada, así que use [Password] .

En segundo lugar, una expresión de fecha debe estar envuelta en octothorpes: #2017/04/24# 2017/04/24 #2017/04/24#

Además, si no va a usar parámetros, aunque sea recomendado, use una función como esta para concatenar sus valores:

'' Converts a value of any type to its string representation. '' The function can be concatenated into an SQL expression as is '' without any delimiters or leading/trailing white-space. '' '' Examples: '' SQL = "Select * From TableTest Where [Amount]>" & CSql(12.5) & "And [DueDate]<" & CSql(Date) & "" '' SQL -> Select * From TableTest Where [Amount]> 12.5 And [DueDate]< #2016/01/30 00:00:00# '' '' SQL = "Insert Into TableTest ( [Street] ) Values (" & CSql(" ") & ")" '' SQL -> Insert Into TableTest ( [Street] ) Values ( Null ) '' '' Trims text variables for leading/trailing Space and secures single quotes. '' Replaces zero length strings with Null. '' Formats date/time variables as safe string expressions. '' Uses Str to format decimal values to string expressions. '' Returns Null for values that cannot be expressed with a string expression. '' '' 2016-01-30. Gustav Brock, Cactus Data ApS, CPH. '' Public Function CSql( _ ByVal Value As Variant) _ As String Const vbLongLong As Integer = 20 Const SqlNull As String = " Null" Dim Sql As String Dim LongLong As Integer #If Win32 Then LongLong = vbLongLong #End If #If Win64 Then LongLong = VBA.vbLongLong #End If Select Case VarType(Value) Case vbEmpty '' 0 Empty (uninitialized). Sql = SqlNull Case vbNull '' 1 Null (no valid data). Sql = SqlNull Case vbInteger '' 2 Integer. Sql = Str(Value) Case vbLong '' 3 Long integer. Sql = Str(Value) Case vbSingle '' 4 Single-precision floating-point number. Sql = Str(Value) Case vbDouble '' 5 Double-precision floating-point number. Sql = Str(Value) Case vbCurrency '' 6 Currency. Sql = Str(Value) Case vbDate '' 7 Date. Sql = Format(Value, " /#yyyy//mm//dd hh/:nn/:ss/#") Case vbString '' 8 String. Sql = Replace(Trim(Value), "''", "''''") If Sql = "" Then Sql = SqlNull Else Sql = " ''" & Sql & "''" End If Case vbObject '' 9 Object. Sql = SqlNull Case vbError '' 10 Error. Sql = SqlNull Case vbBoolean '' 11 Boolean. Sql = Str(Abs(Value)) Case vbVariant '' 12 Variant (used only with arrays of variants). Sql = SqlNull Case vbDataObject '' 13 A data access object. Sql = SqlNull Case vbDecimal '' 14 Decimal. Sql = Str(Value) Case vbByte '' 17 Byte. Sql = Str(Value) Case LongLong '' 20 LongLong integer (Valid on 64-bit platforms only). Sql = Str(Value) Case vbUserDefinedType '' 36 Variants that contain user-defined types. Sql = SqlNull Case vbArray '' 8192 Array. Sql = SqlNull Case Else '' Should not happen. Sql = SqlNull End Select CSql = Sql & " " End Function

Estudie los comentarios en línea para su uso.