![]() |
error en busqueda sql
hola gente! como estan? yo como tarzan en dia feriado, quisiera saber si pueden ayudarme con una consulta coloque un componente sqlquery al cual edite la propiedad sql asi
select * from stock where identificador = 'xcodigo' luego coloque un boton y en el evento onclick coloque el siguiente codigo clientdataset1.close; sqlquery1.FielByName('xcodigo').AsInteger = strtoint(edit1.text); clientdataset1.Open; pero al cliclear me este error project project1.exe raiced exception class EDatabaseError whith message 'SQLQuery1: 'field 'xcodigo' not found'.process stopped. Use step or run to continue. desde ya agradesco las respuestas. [IMG]file:///C:/DOCUME%7E1/ADMINI%7E1/CONFIG%7E1/Temp/moz-screenshot.jpg[/IMG] |
Hola fernando,
te estás liando un poco, creo yo. xcodigo es un valor que tú le das para filtrar la consulta. No entiendo muy bien que quieres hacer en éste nuevo evento. Creo que quieres modificar el filtro, es decir, que se filtre por el valor que hay en Edit1.text, no es así? Si es así lo deberías dejar de la siguiente manera para que te funcione. La razón es que tú le estás asignando a ese campo el valor edit1. Espero te sirva. Saludos |
si lo que quiero hacer es que me realice la busqueda de acuerdo al valor numerico que se carga en el edit; Entoces le saco xcodigo y le paso al sqlquery directamente al campo identificador con el valor del edit? gracias por la respuesta Bicho.
|
Ok, hecha un vistazo a este ecodigo:
En un Query: // lo llamare qr, o le pones cualquiera SELECT campos FROM tabla WHERE campo=:campo // sera pasado como parametro En tu Boton: clientdataset1.close; qr.SQL.text:='SELECT *FROM tabla WHERE codigo="'+strtoint(edit1.text)+'"'; { es pasado como parametro del query} clientdataset1..Open; Y si necesitas validar si existe o no, X registro en tu tabla, agregas un variable de esta forma: var options:tlocateoptions; y en tu codigo agregas: if not qr.Locate('campo',edit1.text,options) then messagebox(handle,'Algun mensaje que advierta que no existe tu registro','error',mb_ok);; edit1.SetFocus; // Colocas tu foco en el edit edit1.text:=''; // Si deseas borras lo que estuvo mal escrito Espero te sirva. Karla :p Avisas si fue de ayuda :cool: Por cierto, que Manejador de Base de datos utilizas? |
Establece el código como parámetro:
Luego asignas el valor de tu parametro:
|
Cita:
|
¿porque quieres activarlo en tiempo de diseño?
Bueno, de cualquier manera le puedes dar un parametro incial utilizando su propiedad Params Obviamente si lo activas sin haberle dado el valor del parámetro, te mandará ese error... |
ok, otro de los errores que me da en esta linea
sqlquery1.SQL.text:='SELECT *FROM stock WHERE codigo= "'+strtoint(edit1.text)+'"'; dice que es incompatible los tipos 'string' and 'integer', no tendria que sacarle la funcion 'strtoint'?. |
Vamos a ver... no puedes usar los dos métodos al mismo tiempo
O usas la forma de hacerlo por consulta utilizando SQL.Text o utilizas la forma de utilizar parámetros. ¿cuál vas a usar? De cualquier manera, el error que te marca es porque la propiedad SQL.Text solo acepta datos tipo cadena (string) y al utilizar la función strtoint() estas cambiando a tipo entero (integer) y por eso te marca ese error. Si quieres utilizar esta forma simplemente quita la función StrToInt y debería funcionar. |
sorry por la demora:
Query: SELECT campos FROM tabla WHERE campo=campo Bton: qr.close; qr.SQL.text:='SELECT *FROM tabla WHERE campo="'+edit.text+'"'; qr.Open; El codigo funciona al 100% Lo cheque con MyDac y MySQL ;) Avisas si queda ok :D |
ok, el codigo de karla funciona perfectamente les agradesco infinitamente a todos por la ayuda.
|
Ok :D analiza el codigo y no solo CTRL+C y CTRL+V
Karla :p |
La franja horaria es GMT +2. Ahora son las 11:09:43. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi