Quisiera que me ayudes en una sentencia sql con fecha

Tengo una bd access y tengo un campo fecha lo que quiero hacer es una sentencia que me busque el rango del año es decir yo coloco 012001 en un texbox y este me busque en mi tabla dicho rango en un año en especifico por el campo fecha o orientarme al respecto

1 respuesta

Respuesta
1
Lo que debes hacer es tomar de alguna forma el año (sino sabes como hacer te puedo ayudar) y con el mismo realizar una consulta que busqué según el año que le pases los datos a mostrar:
Select *
From Tabla
Where NombreCampoFecha= unaFecha



Debes pasarle el parámetro unaFecha que es la que va a buscar, de esta forma estarías mostrando todos los registros que contengan el año indicado.
PD: no comprendo lo del rango, ¿entre un año y otro? ¿O entre un mes y otro?
Gracias por tu respuesta en verdad tengo problemas mi bd access tengo ciertos campo fechas y me da error si los dejo como fechas te explico bien es una aplicación en vb6.0 y ella me guarda en una tabla llamada datos y tengo un formulario aparte que genera reportes en archivos planos y este tiene un textbox llamado fecha y allí debería introducir el mes y el año del reporte que voy a generar por darte un ejemplo 012001 pero me da error te voy a enviar la sentencia que utilizo para ejecutar el archivo:
Esto no hace nada porque si los campos relacionados los coloco como fea no hace la búsqueda y no se porque la parte que tiene el format me da un error de sentencia en verdad ya estoy desesperado y agradecería tu ayuda
Private Sub Command1_Click()
On Error GoTo Errores
Dim RsTabla As New ADODB.Recordset
Dim sArchivo As String
Dim Texto As String
Dim Campo As String
Dim sQuery As String
Dim campo2 As Date
Dim campo10 As Date
Dim campo17 As Date
If fecha.Text = "" Then
Exit Sub
End If
sQuery = "SELECT * FROM datos where mid(campo73,4,5)='" & fecha.Text & "' Order by campo73"
RsTabla.Open sQuery, Conexion, adOpenDynamic, adLockOptimistic
If RsTabla.BOF = True And RsTabla.EOF = True Then
MsgBox "No existen registro para esa Fecha...", vbInformation
fecha.Text = ""
Exit Sub
End If
sArchivo = "FONGAR 4101_" & fecha.Text & ".TXT"
Open "c:\Sifoga-TxT\" & sArchivo For Output As #1
RsTabla.MoveFirst
Campo = " "
Do While Not RsTabla.EOF
Texto = Texto + RsTabla.Fields(0)
Texto = Texto + Espacios(Format(campo2, "ddmmyyyy"), RsTabla.Fields(1), 8, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(2), 4, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(3), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(4), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(5), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(6), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(7), 9, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(8), 1, 0, " ")
Texto = Texto + Espacios(Format(campo10, "ddmmyyyy"), RsTabla.Fields(9), 8, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(10), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(11), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(12), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(13), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(14), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(15), 9, 1, "0")
Texto = Texto + Espacios(Format(campo17, "ddmmyyyy"), RsTabla.Fields(16), 8, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(17), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(18), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(19), 15, 0, " ")
'--prestatario1
Texto = Texto + Espacios(RsTabla.Fields(20), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(21), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(22), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(23), 9, 1, "0")
Texto = Texto + Espacios(Format(campo25, "ddmmyyyy"), RsTabla.Fields(24), 8, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(25), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(26), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(27), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(28), 9, 1, "0")
'--prestatario2
Texto = Texto + Espacios(RsTabla.Fields(29), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(30), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(31), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(32), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(33), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(34), 9, 1, "0")
Texto = Texto + Espacios(Format(campo36, "ddmmyyyy"), RsTabla.Fields(35), 8, 0, "0")
Texto = Texto + Espacios(RsTabla.Fields(36), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(37), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(38), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(39), 9, 1, "0")
'--prestatario3
Texto = Texto + Espacios(RsTabla.Fields(40), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(41), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(42), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(43), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(44), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(45), 9, 1, "0")
Texto = Texto + Espacios(Format(campo47, "ddmmyyyy"), RsTabla.Fields(46), 8, 0, "0")
Texto = Texto + Espacios(RsTabla.Fields(47), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(48), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(49), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(50), 9, 1, "0")
'--prestatario4
Texto = Texto + Espacios(RsTabla.Fields(51), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(52), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(53), 15, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(54), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(55), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(56), 9, 1, "0")
Texto = Texto + Espacios(Format(campo58, "ddmmyyyy"), RsTabla.Fields(57), 8, 0, "0")
Texto = Texto + Espacios(RsTabla.Fields(58), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(59), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(60), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(61), 9, 1, "0")
'--Tipo de Inmueble
Texto = Texto + Espacios(RsTabla.Fields(62), 1, 0, " ")
Texto = Texto + Espacios(RsTabla.Fields(63), 6, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(64) * 100, 14, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(65) * 100, 14, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(66), 1, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(67) * 100, 5, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(68), 1, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(69), 1, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(70), 1, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(71) * 100, 14, 1, "0")
Texto = Texto + Espacios(Format(campo73, "ddmmyyyy"), RsTabla.Fields(72), 8, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(73), 3, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(74), 2, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(75) * 100, 4, 1, "0")
Texto = Texto + Espacios(Format(campo77, "ddmmyyyy"), RsTabla.Fields(76), 8, 1, "0")
'--Area de Asistencia
Texto = Texto + Espacios(RsTabla.Fields(77), 1, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(78), 10, 1, "0")
Texto = Texto + "0" '(rsTabla.Fields(79)
Texto = Texto + Espacios(RsTabla.Fields(80), 20, 0, " ")
Texto = Texto + "0" 'rsTabla.Fields(81)
Texto = Texto + Espacios(RsTabla.Fields(82) * 100, 14, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(83) * 100, 14, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(84) * 100, 14, 1, "0")
Texto = Texto + Espacios(RsTabla.Fields(85), 1, 0, "0")
Texto = Texto + Espacios(RsTabla.Fields(86), 90, 0, " ")
Texto = Texto + Espacios(Campo, 28, 0, " ")
Print #1, Texto
Texto = ""
RsTabla.MoveNext
Loop
Close #1
fecha.Text = ""
fecha.SetFocus
RsTabla.Close
MsgBox "Archivo Generado", vbInformation
Errores:
If Err.Number <> 0 Then
If Err.Number = -2147217900 Then
MsgBox "Archivo AFOGOILP.DBF no existe....", vbCritical
Err.Clear
End If
If Err.Number = -2147467259 Then
MsgBox "El ODBC no existe....", vbCritical
Err.Clear
End If
If Err.Number <> -2147217900 And Err.Number <> -2147467259 Then
MsgBox Err.Description, vbCritical, "Error nro. " & Err.Number
Err.Clear
End If
End If
End Sub
Si quieres pasar el parámetro de una fecha tiene que ser correctamente, ya que 012001 no es una fecha válida. Por eso te está dando un error, te recomendaría que colocaras el primer día de cada mes, y luego lo quites al presentar el reporte, si pones como Fecha el número 012001, te está tomando sólo el 12001 y dejaría como fecha 08/11/1932 .
En esta línea
Texto = Texto + Espacios(Format(campo58, "ddmmyyyy"), RsTabla.Fields(57), 8, 0, "0")
Verifica lo que está en negrita si lo has echo correctamente.
Gracias por responderme tan rapido pero si transformo los campos de mi bd access a fechas me genera un error por que sera dime los dejo como fecha o como texto había pensado en un lost focus y transformarla después que pierda el foco pero el validate cuando voy a modificar un dato me genera borra el text transformado porque no cumple con las especificaciones de fecha como puedo hacer para desactivar el validate cuando este sea una cadena numérica por ejemplo 24-05-2005 y después del lost focus lo transforma 02052005 pero cuando quiero modificar y me agarra el foco de nuevo en los textbox modificado de campo fecha y me da error ejemplo estos son mis validate para fechas
If Not IsDate(TxtCampo17) Then
Cancel = True
MsgBox "Por favor Ingrese fecha (dd-mm-año)"
TxtCampo17 = ""
End If
Como hago para que no me genere este error después de haberlo guardado por favor y gracias tus ayudas han servido de mucho
Si colocas de tipo de dato Fecha/Time en tu base de datos, desde visual la variable debes declararla como Date y no como String. Puede darte errores por varias cosas entre ellas, datos incorrectos o mal colocados, ej. 16/91/2005.


"dime los dejo como fecha o como texto había pensado en un lost focus y
transformarla después que pierda el foco pero el validate cuando voy a
modificar un dato me genera borra el text transformado porque no cumple
con las especificaciones de fecha como puedo hacer para desactivar el
validate cuando este sea una cadena numérica por ejemplo 24-05-2005 y
después del lost focus lo transforma 02052005 pero cuando quiero
modificar y me agarra el foco de nuevo en los textbox modificado de
campo fecha y me da error.."

Bien, te recomendaría que revisaras si la fecha está correcta en el momento de guardar, o sea, para guardar utilizas un botón, ¿verdad?, bueno en ese momento verifiques,

24-05-2005 no lo va a tomar como válido, debes usar 24/05/2005
Para verificar si una cadena o contenido de textbox es numérica verifícalo así:

If IsNumeric(TextBox1.Text) = True Then
   MsgBox "Es numérico"
Else
   MsgBox "No Es numérico"
End If

Muéstrame de la forma en que guardas y dime donde te da error para verificar que es lo que está mal,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas