VB 6 + Sql Server. ¿Cómo guardar fecha?
Como lo dice el titulo: Tengo problemas para guardar en una base de datos Sql Server una fecha ingresada en un text.
Te paso el código que uso a ver si puedes decirme en que le estoy errando.
Private Sub cmdGuardar_Click()
Dim ConsultaSql As String
Dim x As Integer
Set base = New ADODB.Connection
AbrirBase
Set rstvoluntario = New ADODB.Recordset
ConsultaSql = "INSERT INTO Voluntarios("
ConsultaSql = ConsultaSql & "NumVoluntario, "
'ConsultaSql = ConsultaSql & "NumSocio, "
'ConsultaSql = ConsultaSql & "NumDador, "
ConsultaSql = ConsultaSql & "ApeVol, "
ConsultaSql = ConsultaSql & "NomVol, "
ConsultaSql = ConsultaSql & "FNacVol, "
ConsultaSql = ConsultaSql & "TipoDocumento, "
ConsultaSql = ConsultaSql & "NumDocumento, "
ConsultaSql = ConsultaSql & "DomicilioParticular, "
ConsultaSql = ConsultaSql & "TelefonoParticular, "
ConsultaSql = ConsultaSql & "Celular, "
ConsultaSql = ConsultaSql & "EMail, "
ConsultaSql = ConsultaSql & "Profesion, "
ConsultaSql = ConsultaSql & "Tipo_Contribucion "
ConsultaSql = ConsultaSql & ")values ("
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(0).Text) & ", " 'Num Voluntario
'ConsultaSql = ConsultaSql & Val(Trim(txtVoluntario(1).Text)) & ", " 'Num Socio
'ConsultaSql = ConsultaSql & Val(Trim(txtVoluntario(2).Text)) & "," ''Num Dador
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(1).Text) & ", " 'Apellido
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(2).Text) & ", " 'Nombre
ConsultaSql = ConsultaSql & SQLDate(txtVoluntario(3).Text) & ", " 'FechaNacimiento
ConsultaSql = ConsultaSql & Val(cmbTipoDoc.Text) & ", " 'TipoDocumento
ConsultaSql = ConsultaSql & Val(txtVoluntario(4).Text) & ", " 'NumeroDocumento
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(5).Text) & ", " 'Domicilio
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(6).Text) & ", " 'Teléfono particular
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(7).Text) & ", " 'Celular
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(8).Text) & ", " 'E-mail
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(9).Text) & ", " 'Profesión
ConsultaSql = ConsultaSql & Val(cmbTipoContribucion) & ");" 'Tipo Contribución
base.Execute (ConsultaSql)
base.Close
End Sub
En un módulo .VAS tengo esta función la cual la utilizo para darle formato a la fecha ingresada en el text:
Public Function SQLDate(Fecha) As String
If Not IsNull(Fecha) Then
If IsDate(Fecha) Then
SQLDate = "#" & Format(Fecha, "mm/dd/yyyy") & "#"
Else
SQLDate = "Null"
End If
Else
SQLDate = "Null"
End If
El error que me tira el sistema es:
Error '-2147217900 (80040e14)' en tiempo de ejecución : el nombre #20# no es válido en este contexto. Las expresiones válidas son constantes, expresiones de constantes y, en algunos contextos, varialbes. No se permiten nombres de columna.
(El número 20 que está entre los numerales es el día de la semana de la fecha que quiero ingresar)
Cabe aclarar que el campo fecha de la tabla a la que quiero agregar el campo es de tipo datetime.
El tema es que cuando utilizo este código en Access no tengo inconvenientes
Bueno.
Te paso el código que uso a ver si puedes decirme en que le estoy errando.
Private Sub cmdGuardar_Click()
Dim ConsultaSql As String
Dim x As Integer
Set base = New ADODB.Connection
AbrirBase
Set rstvoluntario = New ADODB.Recordset
ConsultaSql = "INSERT INTO Voluntarios("
ConsultaSql = ConsultaSql & "NumVoluntario, "
'ConsultaSql = ConsultaSql & "NumSocio, "
'ConsultaSql = ConsultaSql & "NumDador, "
ConsultaSql = ConsultaSql & "ApeVol, "
ConsultaSql = ConsultaSql & "NomVol, "
ConsultaSql = ConsultaSql & "FNacVol, "
ConsultaSql = ConsultaSql & "TipoDocumento, "
ConsultaSql = ConsultaSql & "NumDocumento, "
ConsultaSql = ConsultaSql & "DomicilioParticular, "
ConsultaSql = ConsultaSql & "TelefonoParticular, "
ConsultaSql = ConsultaSql & "Celular, "
ConsultaSql = ConsultaSql & "EMail, "
ConsultaSql = ConsultaSql & "Profesion, "
ConsultaSql = ConsultaSql & "Tipo_Contribucion "
ConsultaSql = ConsultaSql & ")values ("
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(0).Text) & ", " 'Num Voluntario
'ConsultaSql = ConsultaSql & Val(Trim(txtVoluntario(1).Text)) & ", " 'Num Socio
'ConsultaSql = ConsultaSql & Val(Trim(txtVoluntario(2).Text)) & "," ''Num Dador
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(1).Text) & ", " 'Apellido
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(2).Text) & ", " 'Nombre
ConsultaSql = ConsultaSql & SQLDate(txtVoluntario(3).Text) & ", " 'FechaNacimiento
ConsultaSql = ConsultaSql & Val(cmbTipoDoc.Text) & ", " 'TipoDocumento
ConsultaSql = ConsultaSql & Val(txtVoluntario(4).Text) & ", " 'NumeroDocumento
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(5).Text) & ", " 'Domicilio
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(6).Text) & ", " 'Teléfono particular
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(7).Text) & ", " 'Celular
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(8).Text) & ", " 'E-mail
ConsultaSql = ConsultaSql & SQLText(txtVoluntario(9).Text) & ", " 'Profesión
ConsultaSql = ConsultaSql & Val(cmbTipoContribucion) & ");" 'Tipo Contribución
base.Execute (ConsultaSql)
base.Close
End Sub
En un módulo .VAS tengo esta función la cual la utilizo para darle formato a la fecha ingresada en el text:
Public Function SQLDate(Fecha) As String
If Not IsNull(Fecha) Then
If IsDate(Fecha) Then
SQLDate = "#" & Format(Fecha, "mm/dd/yyyy") & "#"
Else
SQLDate = "Null"
End If
Else
SQLDate = "Null"
End If
El error que me tira el sistema es:
Error '-2147217900 (80040e14)' en tiempo de ejecución : el nombre #20# no es válido en este contexto. Las expresiones válidas son constantes, expresiones de constantes y, en algunos contextos, varialbes. No se permiten nombres de columna.
(El número 20 que está entre los numerales es el día de la semana de la fecha que quiero ingresar)
Cabe aclarar que el campo fecha de la tabla a la que quiero agregar el campo es de tipo datetime.
El tema es que cuando utilizo este código en Access no tengo inconvenientes
Bueno.
1 Respuesta
Respuesta de pclemares
1