Qué tal amigos del foro?
Soy novatillo en la programación de bases de datos y ADO así que para practicar un poco decidí crearme, en access, una base de datos super simple de una sola tabla. Dicha tabla contiene 3 campos: cedula,nombre y fechanac cuyos tipos son texto, texto y fecha/hora respectivamente. El campo fechanac tiene un formato fecha corta del tipo 19/06/1994.
Para trabajar sobre la base de datos uso una referencia a ADO 2.0 y utilizo los tres objetos disponibles, es decir, un objeto conexion, un objeto command y un objeto recorset.
Ahora bien lo que deseo hacer es que el usuario pueda colocar dos fechas y que se devuelva en el recorset todas las fechas que estén dentro de dicho intervalo. Uso un código similar a este:
'En la parte de declaracione generales
Dim cnnMiCon As ADODB.Connection
Dim cmdCriterio As ADODB.Command
Dim rstTabla As ADODB.Recordset
'
'
'
'En el botón de búsqueda
Private Sub Buscar()
Dim inicial As Date
Dim final As Date
'
If txtFechaInicial.Text <> "" And txtFechaFinal.Text <> "" Then
'
Set rstTabla = Nothing
Set cmdCriterio = Nothing
Set cnnMiCon = Nothing
'
inicial = txtFechaInicial.Text
final = txtFechaFinal.Text
'
Set cnnMiCon = New ADODB.Connection
Set cmdCriterio = New ADODB.Command
Set rstTabla = New ADODB.Recordset
'
cnnMiCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\WINDOWS\Escritorio\ProyectoFechas\fechas97_1.mdb"
cnnMiCon.Open
'
cmdCriterio.CommandText = "SELECT cedula,nombre,fechaNac FROM tabla1 WHERE fechaNac>'" & inicial & "'" And fechaNac < "'" & final & "'"
'
rstTabla.Open cmdCriterio.CommandText, cnnMiCon, adOpenDynamic
'
rstTabla.MoveFirst
txtCedula = rstTabla.Fields("cedula").Value
txtNombre = rstTabla.Fields("nombre").Value
txtFecha = rstTabla.Fields("fechaNac").Value
End If
End Sub
Ahora bien, cuando corro el programa introduzco las fechas y pulso el botón buscar obtengo el error 13 "No coinciden los tipos" en la línea:
cmdCriterio.CommandText = "SELECT cedula,nombre,fechaNac FROM tabla1 WHERE fechaNac>'" & inicial & "'" And fechaNac < "'" & final & "'"
Si coloco directamente en el código por ejemplo:
cmdCriterio.CommandText = "SELECT cedula,nombre,fechaNac FROM tabla1 WHERE fechaNac > #1/1/1960# AND fechaNac < #1/1/1991#"
No obtengo ningún error.
Necesito dos cosas:
1.- Estoy implementando bien el código para trabajar con ADO?
2.- Cómo corrijo el error de tipos?
De antemano muchas gracias por la ayuda.
DiabloRojo