Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-11-2007
douglas douglas is offline
Miembro
 
Registrado: jul 2007
Posts: 145
Poder: 17
douglas Va por buen camino
error de criterios

buenas chicos quiero hacer una consulta, donde necesito mostrar en un grid, todas las fechas que pertenecen al mes que el usuario elije, pero me da el siguiente error:


no coinciden los tipos de datos en la expresion de criterios

el codigo es el siguiente:
Código Delphi [-]
procedure TForm5.ComboBox1Change(Sender: TObject);
var
a:real;
b,fecha1,fecha2,anio:string;
begin
     anio:=getlocald;
     anio:=copy(anio,7,10);
     a:=combobox1.ItemIndex+1;
     fecha1:='01/'+formatfloat('00',a)+'/'+anio;
     fecha2:='31/'+formatfloat('00',a)+'/'+anio;
     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select total from dia');
     adoquery1.SQL.Add(' where fecha between :Fechain and :Fechafin');
     adoquery1.Parameters.ParamByName('Fechain').Value:=fecha1;
     adoquery1.Parameters.ParamByName('Fechafin').Value:=fecha2;
     adoquery1.Open;
     
end;
Responder Con Cita
  #2  
Antiguo 12-11-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Para mi el problema es que estas poniendo la fecha como un float, cuando es date.
Y en cuanto al parametro lo pones como value y sigue siendo Date.
Saludos
Responder Con Cita
  #3  
Antiguo 12-11-2007
douglas douglas is offline
Miembro
 
Registrado: jul 2007
Posts: 145
Poder: 17
douglas Va por buen camino
pues las tengo en strings, que son las fecha1 y fecha2, ahora lo demas no te lo entendi, perdon que te moleste, me puede explicar otro poquito
Responder Con Cita
  #4  
Antiguo 12-11-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Empecemos desde el principio.
Las Fechas en la tabla se suelen poner en un campo Date osea fecha, no en un string que es tipo texto.
Cuando haces una comparacion con el between lo haces para un campo fecha.
Por eso comentario
Saludos
Responder Con Cita
  #5  
Antiguo 12-11-2007
douglas douglas is offline
Miembro
 
Registrado: jul 2007
Posts: 145
Poder: 17
douglas Va por buen camino
cierto entonces tengo que cambiarlo de tipo string a tipo date.

utilizo este codigo para obtener la fecha:
Código Delphi [-]
anio:=getlocald;
     anio:=copy(anio,7,10);
     a:=combobox1.ItemIndex+1;
     fecha1:='01/'+formatfloat('00',a)+'/'+anio;
     fecha2:='31/'+formatfloat('00',a)+'/'+anio;

pero como puedo hacer eso y luego pasarlo a tipo fecha

con algo asi como:

Código Delphi [-]
strtodate
Responder Con Cita
  #6  
Antiguo 12-11-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Otra vez empecemos.
Para que usas las variable Fecha1 y 2?
por que no sacas los datos de un maskedit o un datetimepicker, en vez de hacer todo ese royo?.
Me explicas cual es la necesidad?, tal vez no la entiendo.
Saludos
Responder Con Cita
  #7  
Antiguo 12-11-2007
douglas douglas is offline
Miembro
 
Registrado: jul 2007
Posts: 145
Poder: 17
douglas Va por buen camino
mira todo ese revoltijo, es para que cuando elijan el mes de ese combobox, coloque el numero del mes, luego la funcion del anio es conseguir el año actual en la computadora, bueno fecha 1 y 2, son para que en la fecha uno que toma el primer dia del mes, y fecha dos que toma el dia 31, como el ultimo dia del mes, solo como para que me tomes todos los datos del mes.

basicamente lo que necesito hacer es una busqueda por mes, de todos los movimientos que tengan.
Responder Con Cita
  #8  
Antiguo 12-11-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Prueba colocando el StrtoDate
Código Delphi [-]
procedure TForm5.ComboBox1Change(Sender: TObject);
var
a:real;
b,fecha1,fecha2,anio:string;
begin
     anio:=getlocald;
     anio:=copy(anio,7,10);
     a:=combobox1.ItemIndex+1;
     fecha1:='01/'+formatfloat('00',a)+'/'+anio;
     fecha2:='31/'+formatfloat('00',a)+'/'+anio;
     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select total from dia');
     adoquery1.SQL.Add(' where fecha between :Fechain and :Fechafin');
     adoquery1.Parameters.ParamByName('Fechain').Value:=StrtoDate(fecha1);
     adoquery1.Parameters.ParamByName('Fechafin').Value:=StrtoDate(fecha2);
     adoquery1.Open;
end;
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela

Última edición por eduarcol fecha: 12-11-2007 a las 18:30:15.
Responder Con Cita
  #9  
Antiguo 12-11-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Como ya te dijeron, sería mejor usar TDateTimePicker en lugar de TEdit

y la función "FormatDateTime" también te puede ser útil.
__________________

Responder Con Cita
  #10  
Antiguo 12-11-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por douglas Ver Mensaje
mira todo ese revoltijo, es para que cuando elijan el mes de ese combobox, coloque el numero del mes, luego la funcion del anio es conseguir el año actual en la computadora, bueno fecha 1 y 2, son para que en la fecha uno que toma el primer dia del mes, y fecha dos que toma el dia 31, como el ultimo dia del mes, solo como para que me tomes todos los datos del mes.

basicamente lo que necesito hacer es una busqueda por mes, de todos los movimientos que tengan.
Hacer esto que quieres te lleva a errores de datos, por ejemplo imaginate esta consulta

fecha1 := '01/02/2007'
fecha2 := '31/02/2007'

Vaya, eso es un error tremendo no?

Salud OS
Responder Con Cita
  #11  
Antiguo 12-11-2007
douglas douglas is offline
Miembro
 
Registrado: jul 2007
Posts: 145
Poder: 17
douglas Va por buen camino
si me tiro error en la fecha 2, pero como puedo realiar mi busqueda pormes en la tabla, cuando la tabal tienen movimientos por dia, como puedo hacer eso, perdon alguien me puede hacer el favor de explicar que es un tdatetimpicker
Responder Con Cita
  #12  
Antiguo 12-11-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
No estoy muy seguro pero aquí debe haber alguien que nos ayude, pero se me ocurre que puedes usar la funcion Extract(month from fecha).

Algo así

Código Delphi [-]
Where Extract(month from Tabla.Fecha) = 2

Depende de la base de datos que uses.

Salud OS
Responder Con Cita
  #13  
Antiguo 12-11-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Como dije anteriormente, yo no me complicaria la vida, lo haria asi:
De la paleta Win32, selecciona el DateTimePicker y coloca dos en el form.
Pones este codigo y ya:
Código Delphi [-]
procedure TForm5.ComboBox1Change(Sender: TObject);
begin
     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Text:= 'select total from dia where Fecha >= '+DateToStr(DateTimePicker1.Date)+' AND Fecha <= '+DateToStr(DateTimePicker2.Date);
     adoquery1.Open;
end;
Como podras ver.
1- NO hay variables
2- NO hay paremetros
3- No hay trasformaciones de ningun tipo.
4- Mucho mas legible.
Saludos
Responder Con Cita
  #14  
Antiguo 12-11-2007
douglas douglas is offline
Miembro
 
Registrado: jul 2007
Posts: 145
Poder: 17
douglas Va por buen camino
perdon egostar pero con el metodo que propones me tira un erro que dice: error no especificado, perdonen tanta molestia chicos
Responder Con Cita
  #15  
Antiguo 12-11-2007
douglas douglas is offline
Miembro
 
Registrado: jul 2007
Posts: 145
Poder: 17
douglas Va por buen camino
ok caral gracias probader de inmediato y lo comento
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formatear Criterios de búsqueda Chris Varios 2 03-09-2007 20:01:28
Error 10093 al ver un informe - Que error es este? URBANO Impresión 1 03-02-2006 18:44:39
¿Por qué me da este error?Error creating cursor manejador nuri SQL 2 01-08-2005 17:30:28
Error: RichEdit line insertation error DarkByte Varios 3 19-07-2004 12:28:09
no coinciden los tipos de datos en la expresion de criterios mainau Conexión con bases de datos 2 14-07-2004 18:04:08


La franja horaria es GMT +2. Ahora son las 23:43:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi