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.

1 Respuesta

Respuesta
1
Yo intentaría pasar la fecha como un string, es decir,
donde pones esto:
    ConsultaSql = ConsultaSql & SQLDate(txtVoluntario(3).Text) & ", "  'FechaNacimiento
cambialo por esto
ConsultaSql = ConsultaSql & "'" & SQLDate(txtVoluntario(3).Text) & "', "  'FechaNacimiento
y si es Sql Server, los simbolos # te sobran (eso es para Access)
SQLDate = Format(Fecha, "mm/dd/yyyy")
Estimado amigo. Te pasaste con tu respuesta! Por lo menos ya no me dice nada de la fecha.
Pero ahora tengo otro error:
El campo clave de mi tabla lo puse como Identity
error '-2147217900 (80040e14)' en tiempo de ejecución: No se puede dar un valor explicito en la columna de identidad de la tabla cuando IDENTITI_INSERT es OFF.
El tipo de la columna lo tengo como integer pero en las propiedades de la columna de Sql Server le puse como especificación de identidad.
¿Cómo lo puedo solucionar?
Desde ya muchas gracias por tu pronta respuesta!
Es muy sencillo, el campo identity es un autonumérico que se rellena solo cada vez que insertas un registro. Lo único que tienes que hacer en tu consulta sql es quitarlo. Sql lo rellenará sólito.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas