SoloCodigo
Programación General => C/C++ => C++ Builder => Mensaje iniciado por: ambarrerar en Viernes 5 de Mayo de 2006, 16:28
-
Hola
Tengo un problema muy grande en una consulta de SQL.
Resulta que estoy haciendo un programa que haga una consulta que devuelva los datos que hay entre una fecha y otra. La idea es que el usuario ingresa las 2 fechas mediante un DateTimePicker, el problema es que me sale un error y no se como arreglarlo.
Este es el codigo que estoy utilizando
AnsiString consulta;
String fecha1, fecha2;
TDate FechaInicial, FechaFinal;
FechaInicial=fechain->Date;
FechaFinal=fechafin->Date;
Word an, mn, dn;
Word ahoy, mhoy, dhoy ;
DecodeDate(FechaInicial, an, mn, dn);
DecodeDate(FechaFinal, ahoy, mhoy, dhoy);
fecha1= IntToStr(dn) + '.' + IntToStr(mn)+ '.' + IntToStr(an) ;
fecha2= IntToStr(dhoy)+ '.' + IntToStr(mhoy) + '.' + IntToStr(ahoy);
ShowMessage(fecha1);
ShowMessage(fecha2);
consulta = "SELECT * FROM RIPS.db WHERE FechaProced >=fecha1 AND FechaProced <=fecha2 AND CodigoEntidad='EPS016'";
consulta = consulta + "order by FechaProced";
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add(consulta);
Query1->Open();
El error es este
'Invalid field name, fecha1'
Porfa si alguien sabe como puedo hacer que me funcione la consulta le agradeceria mucho.
-
Prueba a hacer:
consulta="SELECT * FROM rips.db WHERE fechaproced>="+AnsiString(fecha1)+" AND fechaproced<="+AnsiString(fecha2)+" AND CodigoEntidad=\"EPS016\"";
consulta=consulta+" order by fechaproced;";
Nota: Ten cuidado con los espacios, y he supuesto que EPS016 es un varchar;
Espero que te sea de ayuda.
-
Hola!
No mira que no me funcionó
-
Quiza si publicas la tabla en donde quieres hacer la consulta yo pueda ayudarte, al parecer no es un problema tan grande o revisa que los nombres de tus campos estan bien escritos porque el error que pones si no me equivoco solo sale cuando un campo está mal escrito.
Suerte!..
-
Hola
Mira este es el programa que estoy tratando de hacer.
Si me puedes ayudar te lo agradeceria.
Muchas gracias!
Me falto un archivo aqui lo vuelvo a mandar
-
Bueno, ya revisé tu tabla (disculpa que sea hasta ahora, lo que pasa es que ese día tuve que ser hospitalizado de urgencia por una infección en una herida de una cirugía reciente) y dejame ´preguntarte ¿Cómo diablos piensas hacer esa consulta si en tu tabla no existen algunos campos que tratas de utilizar?, por ejemplo el campo "fechaproced" no existe en la tabla, por lo tanto SQL no puede encontrar ese campo. O si entendí mal pues vuelveme a explicar.
Precisamente el error que te sale dice "Nombre de campo inválido, fecha1". Significa que no existe o tiene otro nombre.
-
hola!
Espero que estes mejor de tu salud.
Mira yo no te entiendo bien, porque revise la tabla y si hay cun campo que se llama FechaProced, entonces no se bien que es lo que pasa.
Lo que yo quiero hacer es esto:
Se abre el programa, hay dos DataTimePicker uno es para que escojan la fecha inicial y el otro la feha final.
El programa deberia hacer una busqueda y dar como resultados los datos que se encuentren entre esas 2 fechas.
En el programa yo cogi las fechas de los DataTime Picker y las separe para poder ponerlas de esta forma 02.04.2006 que es como supuestamente SQL acepta las fechas.
En el codigo SQL le digo que muestre todos los campos de la tabla RIPS donde la FechaProced este entre fecha1 y fecha2.
Mira yo he estado probando y si yo en vez de poner fecha1 y fecha 2 pongo por ejemplo '02.05.2006' y '30.05.2006' ejemplo:
consulta = "SELECT * FROM RIPS.db WHERE FechaProced >= ''02.05.2006' AND FechaProced <= '30.05.2006' AND CodigoEntidad='EPS016'";no me genera ningun error y hace bien la busqueda, entonces yo pienso que lo que estoy haciendo mal es la adquisicion de las fechas por medio del DataTimePicker, o tambien como los estoy declarando, la verdad he probado muchas cosas y nada, siempre me sale un error, porfa necesito mucha ayuda.
Gracias!
Espero que te mejores...
Te vuelvo a mandar la tabla.
-
Pues bien my friend, ya revise tu código y en realidad era solo un detalle, lo correcto es así, todo lo demás esta bién (creo), lo correcto es:
Word an, mn, dn;
Word ahoy, mhoy, dhoy ;
DecodeDate(FechaInicial, an, mn, dn);
DecodeDate(FechaFinal, ahoy, mhoy, dhoy);
fecha1= IntToStr(dn) + '.' + IntToStr(mn)+ '.' + IntToStr(an) ;
fecha2= IntToStr(dhoy)+ '.' + IntToStr(mhoy) + '.' +IntToStr(ahoy);
ShowMessage(fecha1);
ShowMessage(fecha2);
consulta = "SELECT * FROM RIPS WHERE FechaProced >= '" + fecha1 + "' AND FechaProced <= '" + fecha2 + "' AND CodigoEntidad='CA1309'";
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add(consulta);
Query1->Open();
Si no te funciona publica otro mensaje, por cierto la última tabla que enviaste no es la misma que publicaste junto con el proyecto.
PD. Estoy mejor, solo tengo una herida como de 4 cm de largo, 0.5 de ancho y 1cm de profundo, es para hacer las curaciones (que por cierto duelen un p...), los médicos dicen que en unas tres semanas el tejido se regenerará y la herida cerrará por si sola, solo tengo que estar bajo estricto control médico. Gracias por la buena suerte.
Suerte!..
-
Hola!!
Si me funciono!!!
Muchas gracias por tu ayuda!!!
Espero que te mejores pronto...
-
Ok, por nada, si necesitas algo más no dudes en preguntar, por supuesto que este dentro de mis posibilades.