Visual Basic - Error de sintaxis Base de datos, Visual "Cliente", Acces "Base de datos"

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Error de sintaxis Base de datos, Visual "Cliente", Acces "Base de datos"

Publicado por Harrison (3 intervenciones) el 29/11/2021 20:30:58
Buenos dias, cree una base detos basandome en un video de youtube, a la cual le realice varias modificaciones una de ellas es insertar VBA.Time a la vez de un VBA.Date, poseo un error de sintaxis, ya que no encuento la manera de unir la linea de codigo "', C.FECHA = #" & Format(Fecha, "mm/dd/yyyy") & "# WHERE (C.Id = " & id & "); con la linea de codigo "', C.HORA = #" & Format(Hora, "hh:mm:ss" "# WHERE (C.Id = " & id & ");"

Estaria demasiado agradecido si alguien me pudiera ayudar, el error unicamente lo presento en el boton de editar, en el boton de eliminar o crear no presento ningun tipo de error.
___________________________________________________________________________________________
Este es el Id que tengo creado para la union de la Matriz de acces. el cual no me ha presentado errores.
Dim señal As Boolean
Dim id As Long
Dim DocumentoAux As String
__________________________________________________________________________________________

Private Sub cmdEditar_Click()

If Not señal Then
MsgBox " Para editar Busque un Documento. "
Else
With Visitantes

If .txtNombre.Text = "" Then
MsgBox "Ingese un nombre"
.txtNombre.SetFocus
Exit Sub
End If

If .lstTipoDocumento.ListIndex = -1 Then
MsgBox "Ingese un Tipo de Documento"
.lstTipoDocumento.SetFocus
Exit Sub
End If

If .txtNumDoc.Text = "" Then
MsgBox "Ingese un Numero de documento"
.txtNumDoc.SetFocus
Exit Sub
End If

If .txtTelef.Text = "" Then
MsgBox "Ingese un Numero de Telefono"
.txtTelef.SetFocus
Exit Sub
End If

If .txtCelu.Text = "" Then
MsgBox "Ingese un Numero de celular"
.txtCelu.SetFocus
Exit Sub
End If

If .lstTipodepersona.ListIndex = -1 Then
MsgBox "Ingese un Tipo de Documento"
.lstTipodepersona.SetFocus
Exit Sub
End If

If .txtEmpresa.Text = "" Then
MsgBox "Ingese nombre de Empresa"
.txtEmpresa.SetFocus
Exit Sub
End If

If .txtcorreo.Text = "" Then
MsgBox "Ingese una direccion de Correo"
.txtcorreo.SetFocus
Exit Sub
End If

If .lstVisita.ListIndex = -1 Then
MsgBox "Ingese una razon de visita"
.lstVisita.SetFocus
Exit Sub
End If
End With

Dim NumerodeDocumento As String
Dim NombreCompleto As String
Dim TipodeDocumento As String
Dim Telefono As String
Dim Celular As String
Dim Tipodepersona As String
Dim Empresa As String
Dim CorreoElectronico As String
Dim Razondevisita As String
Dim Fecha As Date
Dim Hora As Date

With Visitantes
NumerodeDocumento = .txtNumDoc
NombreCompleto = .txtNombre
TipodeDocumento = .lstTipoDocumento
Telefono = .txtTelef
Celular = .txtCelu
Tipodepersona = .lstTipodepersona
Empresa = .txtEmpresa
CorreoElectronico = .txtcorreo
Razondevisita = .lstVisita
End With
Fecha = VBA.Date
Hora = VBA.Time

Dim sqlEditar As String
sqlEditar = "UPDATE VISITANTES AS C SET C.NUMERODEDOCUMENTO = '" & NumerodeDocumento & _
"', C.NOMBRECOMPLETO = '" & NombreCompleto & "', C.TIPODEDOCUMENTO = '" & TipodeDocumento & _
"', C.TELEFONO = '" & Telefono & "', C.CELULAR = '" & Celular & "', C.TIPODEPERSONA = '" & Tipodepersona & _
"', C.EMPRESA = '" & Empresa & "', C.CORREOELECTRONICO = '" & CorreoElectronico & "', C.RAZONDEVISITA = '" & Razondevisita & _
"', C.FECHA = #" & Format(Fecha, "mm/dd/yyyy") & "# WHERE (C.Id = " & id & "); & _
"', C.HORA = #" & Format(Hora, "hh:mm:ss" "# WHERE (C.Id = " & id & ");"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Error de sintaxis Base de datos, Visual "Cliente", Acces "Base de datos"

Publicado por Antoni Masana (558 intervenciones) el 29/11/2021 21:25:11
He puesto el código de esta forma para verlo mejor:

1
2
3
4
5
6
7
8
9
10
11
12
13
sqlEditar = "UPDATE VISITANTES AS C SET C.NUMERODEDOCUMENTO = '" & NumerodeDocumento & _
                                   "', C.NOMBRECOMPLETO = '"     & NombreCompleto & _
                                   "', C.TIPODEDOCUMENTO = '"    & TipodeDocumento & _
                                   "', C.TELEFONO = '"           & Telefono & _
                                   "', C.CELULAR = '"            & Celular & _
                                   "', C.TIPODEPERSONA = '"      & Tipodepersona & _
                                   "', C.EMPRESA = '"            & Empresa & _
                                   "', C.CORREOELECTRONICO = '"  & CorreoElectronico & _
                                   "', C.RAZONDEVISITA = '"      & Razondevisita & _
                                   "', C.FECHA = #"              & Format(Fecha, "mm/dd/yyyy") & "#"_
            " WHERE (C.Id = " & id & "); & _
                                   "', C.HORA = #"               & Format(Hora, "hh:mm:ss" "#" & _
            " WHERE (C.Id = " & id & ");"

En el primer WHERE falta cerrar las comillas después del paréntesis cerrar y el punto y coma.
En el segundo FORMAT falta cerrar el paréntesis y un &
No recuerdo muy bien la sintaxis de SQL pero 2 WHERE en una misma línea lo veo raro.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error de sintaxis Base de datos, Visual "Cliente", Acces "Base de datos"

Publicado por Harrison (3 intervenciones) el 29/11/2021 22:09:54
Muchas gracias por tus aclaraciones cai en cuenta de varios errores.

Tienes mucha razon dos WHERE en SQL no va, ya me da un error diferente. La principal razon del error es que necesito registrar fecha y hora no importa si es en una misma columna, pero no encuento una forma de hacerlo con VBA.Date, no se si habra una manera de poder hacerlo y dejar todo en un solo formato de esta manera.

1
C.FECHA =  "# & Format(Fecha, "mm/dd/yyyy hh:mm:ss tt") & #"  " WHERE (C.Id = " & id & ");"


Sin necesidad de usar otro WHERE como el de C.HORA

Ya que al usar esa linea de codigo con VBA.Date la hora me queda 00:00:00 y no toma la hora del programa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar