Query!

Hola!
Necesito generar con urgencia una consulta que me seleccione los registros comprendidos entre dos fechas, en la base datos yo tengo la fecha de inicio y de cierre, pero al hora de hacer el siguiente SQL: "Select Servicio.id_servicio,Servicio.ticket,Servicio.fecha_inicio,Servicio.hora_inicio,Servicio.nombre_empleado,Servicio.num_empleado,Servicio.Estado,Servicio.Fecha_salida,Servicio.hora_salida,Servicio.Observacion,Servicio.interval,Servicio.dias,Categoria.nombre_categoria,Cuenta.nombre_cuenta from Servicio,Cuenta,Categoria where Cuenta.id_cuenta=Servicio.cod_cuenta and Categoria.id_categoria=Servicio.cod_categoria and Servicio.fecha_inicio>='" & Trim(txtfechainicio.Text) & "' and Servicio.fecha_salida<= '" & Trim(txtfechacierre.Text) & "' and firstcontact='" & Trim(yes) & "' order by id_servicio", saca registros que no coinciden con las fechas dadas, el tipo de fecha lo manejo como texto en la BD, me puedes ayudar a resolver este incidente please!!!!

2 respuestas

Respuesta
1
Y de que base de datos estas tratando o trabajando tu query.
Estoy utilizando Access 2003!, espero me puedas ayudar, me urge sacar ese reporte... Gracias
Para este tipo de base de datos puedes usar dos formas, la propia de access que es usando el símbolo # entre cada valor de fecha y pasándola en el formato: mm/dd/yyyy o usando el internacional:
Yyymmdd y se usa la comilla sencilla '
SQL: "Select Servicio.id_servicio,Servicio.ticket,Servicio.fecha_inicio,Servicio.hora_inicio,Servicio.nombre_empleado,Servicio.num_empleado,Servicio.Estado,Servicio.Fecha_salida,Servicio.hora_salida,Servicio.Observacion,Servicio.interval,Servicio.dias,Categoria.nombre_categoria,Cuenta.nombre_cuenta from Servicio,Cuenta,Categoria where Cuenta.id_cuenta=Servicio.cod_cuenta and Categoria.id_categoria=Servicio.cod_categoria and Servicio.fecha_inicio>='" & format$(Trim(txtfechainicio.Text),"YYYYMMDD" & "' and Servicio.fecha_salida<= '" & format$(Trim(txtfechacierre.Text),"YYYYMMDD") & "' and firstcontact='" & Trim(yes) & "' order by id_servicio"
o con:
SQL: "Select Servicio.id_servicio,Servicio.ticket,Servicio.fecha_inicio,Servicio.hora_inicio,Servicio.nombre_empleado,Servicio.num_empleado,Servicio.Estado,Servicio.Fecha_salida,Servicio.hora_salida,Servicio.Observacion,Servicio.interval,Servicio.dias,Categoria.nombre_categoria,Cuenta.nombre_cuenta from Servicio,Cuenta,Categoria where Cuenta.id_cuenta=Servicio.cod_cuenta and Categoria.id_categoria=Servicio.cod_categoria and Servicio.fecha_inicio>=#" & format$(Trim(txtfechainicio.Text),"MM/DD/YYYY" & "# and Servicio.fecha_salida<= #" & format$(Trim(txtfechacierre.Text),"MM/DD/YYYY") & "# and firstcontact='" & Trim(yes) & "' order by id_servicio"
Mira tengo un nuevo problema, antes tenía los datos de fecha, como textos en la BD, pero para que funcionara el reporte tuve que pasarlos a Date/Time(fecha corta), pero ahora tengo problemas al insertar registros nuevos, me da un error de tipos, este es el SQL que inserta:
INSERT INTO Servicio(id_servicio,ticket,fecha_inicio,hora_inicio,nombre_empleado,num_empleado,cod_categoria,estado,fecha_salida,hora_salida,cod_cuenta,observacion,lugar,prioridad,username,firstcontact,dias,interval,tipocontacto,netmeeting) VALUES ('" & Trim(txtid_servicio.Text) & "'," & Val(txtticket.Text) & ",'" & txtfechainicio.Text & "','" & CStr(txthorainicio.Text) & "','" & Trim(UCase(txtempleado.Text)) & "','" & Trim(UCase(txtnum_empleado.Text)) & "'," & codigocategoria & ",'" & Trim(UCase(listestado.Text)) & "','" & txtfechasalida.Text & "','" & CStr(txthorasalida) & "'," & codigocuenta & ",'" & Trim(UCase(txtobservacion.Text)) & "','" & Trim(cmblugar.Text) & "','" & Trim(cmbprioridad.Text) & "','" & Trim(LCase(frmmenu.StatusBar.Panels(2))) & "', '" & Trim(UCase(first)) & "'," & Val(d) & ",'" & Trim(h) & "','" & Trim(UCase(listcontacto.Text)) & "','" & net & "')"
Sabes donde pueda estar el error!
Haber si te funciona como sigue:
INSERT INTO Servicio(id_servicio,ticket,fecha_inicio,hora_inicio,nombre_empleado,num_empleado,cod_categoria,estado,fecha_salida,hora_salida,cod_cuenta,observacion,lugar,prioridad,username,firstcontact,dias,interval,tipocontacto,netmeeting) VALUES ('" & Trim(txtid_servicio.Text) & "'," & Val(txtticket.Text) & ",'" & format$(txtfechainicio.Text,"YYYYMMDD") & "','" & CStr(txthorainicio.Text) & "','" & Trim(UCase(txtempleado.Text)) & "','" & Trim(UCase(txtnum_empleado.Text)) & "'," & codigocategoria & ",'" & Trim(UCase(listestado.Text)) & "','" & format$(txtfechasalida.Text,"YYYYMDD") & "','" & CStr(txthorasalida) & "'," & codigocuenta & ",'" & Trim(UCase(txtobservacion.Text)) & "','" & Trim(cmblugar.Text) & "','" & Trim(cmbprioridad.Text) & "','" & Trim(LCase(frmmenu.StatusBar.Panels(2))) & "', '" & Trim(UCase(first)) & "'," & Val(d) & ",'" & Trim(h) & "','" & Trim(UCase(listcontacto.Text)) & "','" & net & "')"
Un favor, me copias la definición de la tabla y los valores que colocas en la sentencia de insert.
Sigue dandome error "Data type mismatch in criteria expresion"!, disculpa que te insista, ¿pero qué otra cosa puede ser?, ya intenté cambiar en BD el tipo a text y si funciona pero si lo dejo así el reporte no va a funcionar!, espero tu respuesta!
La definición de la tabla es:
id_servicio: Text
ticket:Number
fecha_inicio:Date/Time
nombre_empleado:Text
num_empleado:Text
cod_categoria:cod_categoria
Estado:Text
Fecha_salidaDate/Time
hora_salida:Text
cod_cuenta:Number
Observación:Memo
Username:Text
Lugar:Text
Prioridad:Text
firstcontact:Text
interval:Text
Días:Number
tipocontacto:Text
Netmeeting:Text
Los valores son:
'0323'
0
'14/02/2006'
'02:13:00 p.m.'
'DAVID MONTERO'
'700258'
12
'EN PROCESO'
''
''
9
'CONFIGURACION'
'FORUM'
'MEDIUM'
'dcaldero'
'NO'
0
''
'CALL CENTER'
'NO'
Gracias!
El error sigue en el campo de fecha, habías comentado que estaba en dos secciones, fecha y hora en otro campo, por eso te marca error:
INSERT INTO Servicio(id_servicio,ticket,fecha_inicio,hora_inicio,nombre_empleado,num_empleado,cod_categoria,estado,fecha_salida,hora_salida,cod_cuenta,observacion,lugar,prioridad,username,firstcontact,dias,interval,tipocontacto,netmeeting) VALUES ('" & Trim(txtid_servicio.Text) & "'," & Val(txtticket.Text) & ",'" & format$(txtfechainicio.Text,"YYYYMMDD") & " " & format$(CStr(txthorainicio.Text),"HH:MM:SS") & "','" & Trim(UCase(txtempleado.Text)) & "','" & Trim(UCase(txtnum_empleado.Text)) & "'," & codigocategoria & ",'" & Trim(UCase(listestado.Text)) & "','" & format$(txtfechasalida.Text,"YYYYMDD") & "','" & CStr(txthorasalida) & "'," & codigocuenta & ",'" & Trim(UCase(txtobservacion.Text)) & "','" & Trim(cmblugar.Text) & "','" & Trim(cmbprioridad.Text) & "','" & Trim(LCase(frmmenu.StatusBar.Panels(2))) & "', '" & Trim(UCase(first)) & "'," & Val(d) & ",'" & Trim(h) & "','" & Trim(UCase(listcontacto.Text)) & "','" & net & "')"
También, siempre cuenta el número de elementos de tu tabla, y el número de elementos que generas para los datos.
Disculpa que te siga molestando, no funciona el SQL, tal y como me dices el numero de elementos coincide con el numero de campos, el error es de tipos de datos al hacer el Insert, si yo voy a la tabla y cambio fecha_incio y fecha_salida por texto, funciona perfecto, pero el reporte no funciona!, ¿Dime hasta donde sé la fecha se inserta como Strings o no?, ahí digo yo que esta el problem pero no sé como solucionarlo, te incluyo el último SQL, como te dije este funciona siempre y cuando estos dos campos sean texto, de lo contrario si es Date/Time se cae:
INSERT INTO Servicio(id_servicio,ticket,fecha_inicio,hora_inicio,nombre_empleado,num_empleado,cod_categoria,estado,fecha_salida,hora_salida,cod_cuenta,observacion,lugar,prioridad,username,firstcontact,dias,interval,tipocontacto,netmeeting) VALUES ('" & Trim(txtid_servicio.Text) & "'," & Val(txtticket.Text) & ",'" & Format$(txtfechainicio.Text, "MM/DD/YYYY") & "','" & Format$(CStr(txthorainicio.Text), "HH:MM:SS") & "','" & Trim(UCase(txtempleado.Text)) & "','" & Trim(UCase(txtnum_empleado.Text)) & "'," & codigocategoria & ",'" & Trim(UCase(listestado.Text)) & "','" & Format$(txtfechasalida.Text, "MM/DD/YYYY") & "','" & Format$(CStr(txthorasalida.Text), "HH:MM:SS") & "'," & codigocuenta & ",'" & Trim(UCase(txtobservacion.Text)) & "','" & Trim(cmblugar.Text) & "','" & Trim(cmbprioridad.Text) & "','" & Trim(LCase(frmmenu.StatusBar.Panels(2))) & "', '" & Trim(UCase(first)) & "'," & Val(d) & ",'" & Trim(h) & "','" & Trim(UCase(listcontacto.Text)) & "','" & net & "')
Primero, el formato que te copie para las fechas no es el mismo que en la sentencia que me regresas, segundo sugiero que coloques la sentencia armada con los datos que le pasas, no con los controles o variables que usas, ya que así no veo que le estas asignando.
Hola de nuevo!, mira en teoría lo arreglé cambiando un el txtbox de las fechas por un MaskEditBox!, estuvo funcionando bien, pero luego generó error de tipo nuevamente pero sólo en ciertas máquinas!, en otras continuó funcionando normalmente, me dicen un compañero que eso de las fechas es una pulga de Access, ¿qué opinas?, por el momento he decidido cambiar el MaskEditBox por un DataPicker a ver si funciona!
El problema no es el tipo de control, es directamente con el formato que pasas para insertar la fecha, revisa los primeros comentarios y verás los formatos que debes de usar.
Saludos
David Enciso
PD. Por si las dudas revisa la configuración regional de todos los equipos.
Respuesta
1
SQL: "Select Servicio.id_servicio,Servicio.ticket,Servicio.fecha_inicio,Servicio.hora_inicio,Servicio.nombre_empleado,Servicio.num_empleado,Servicio.Estado,Servicio.Fecha_salida,Servicio.hora_salida,Servicio.Observacion,Servicio.interval,Servicio.dias,Categoria.nombre_categoria,Cuenta.nombre_cuenta from Servicio,Cuenta,Categoria where Cuenta.id_cuenta=Servicio.cod_cuenta and Categoria.id_categoria=Servicio.cod_categoria and Servicio.fecha_inicio>=#" & Trim(txtfechainicio.Text) & "# and Servicio.fecha_salida<= #" & Trim(txtfechacierre.Text) & "# and firstcontact='" & Trim(yes) & "'"
Un placer,
Dragonice

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas