No te aconsejo que hagas este tipo de insert para la informacion que contiene fechas.
Y menos hacer la conversion directa porque el formato que entrega el CDATE podria no corresponder con el formato que espera el motor de bases de datos.
Que te recomiendo...
Trabajar con SqlParameters
aldo mas o menos asi: (no lo he probado porque no tengo en este momento una maquina de desarrollo, asi que debes verificar la sintaxis)
1. Armas el query
Código:
Dim sql As String = "insert into personal (pers_cod,pers_apel,pers_nom,pers_di,pers_fn) values (@codigo,@apellidos,@nombres,@direccion,@fecha) "
2. Armas el command
Código:
Dim cmd As New SqlCommand(sql, cn)
3. Crear los parametros
Informaicion
Código:
SqlParameter pCodigo = New SqlParameter (revisa las sobrecargas)
pCodigo.Value = txtCodigo.Text
SqlParameter pNombre= New SqlParameter (revisa las sobrecargas)
pNombre.Value = txtNombre.Text
Y asi sucesivamente con todos los campos, entre las sobre cargas de los parametros esta el tipo de dato: SqlDbType.VarChar, SqlDbType.Interger,
SqlDbType.DateTime es muy importante que el tipo corresponda a lo que deseas guardar asi la conversion no te va a fallar para las fechas.
3. Agregar al
cmd los parametros en el mismo orden que los vas a usar en la sentencia INSERT
Código:
cmd.Parameters.Add(pCodigo)
cmd.Parameters.Add(pNombre)
Y asi con cada uno
Una vez tengas esto listo lo ejecutas
Código:
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
Recuerda usar el Try... Cacth para controlar los errores.
Saludos