Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2007
fernando1973 fernando1973 is offline
Miembro
 
Registrado: mar 2007
Posts: 32
Poder: 0
fernando1973 Va por buen camino
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]
Responder Con Cita
  #2  
Antiguo 10-05-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
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.

Código Delphi [-]
clientdataset1.close;
sqlquery1.FielByName('identificador').AsInteger = strtoint(edit1.text);
clientdataset1.Open;
La razón es que tú le estás asignando a ese campo el valor edit1.

Espero te sirva.

Saludos
Responder Con Cita
  #3  
Antiguo 10-05-2007
fernando1973 fernando1973 is offline
Miembro
 
Registrado: mar 2007
Posts: 32
Poder: 0
fernando1973 Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 10-05-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
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

Avisas si fue de ayuda

Por cierto, que Manejador de Base de datos utilizas?

Última edición por karlaoax fecha: 10-05-2007 a las 16:42:36.
Responder Con Cita
  #5  
Antiguo 10-05-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Establece el código como parámetro:
Código SQL [-]
 select * from stock
where identificador = :Codigo
Luego asignas el valor de tu parametro:
Código Delphi [-]
with TuQuery do begin;
 if active then close;
 ParamByName('Codigo').AsInteger:=strtoint(edit1.text);
 Open;
 if IsEmpty then
  showmessage('vacio');
 ...
 ...
 Close;
end; //with
__________________

Responder Con Cita
  #6  
Antiguo 10-05-2007
fernando1973 fernando1973 is offline
Miembro
 
Registrado: mar 2007
Posts: 32
Poder: 0
fernando1973 Va por buen camino
Cita:
Empezado por karlaoax
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

Avisas si fue de ayuda

Por cierto, que Manejador de Base de datos utilizas?
karla uso mysql, cuando edito el sqlquery si pongo WHERE campo=:campo // sera pasado como parametro me da un error al activarlo que dice "no value for parameter"
Responder Con Cita
  #7  
Antiguo 10-05-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
¿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...
__________________

Responder Con Cita
  #8  
Antiguo 10-05-2007
fernando1973 fernando1973 is offline
Miembro
 
Registrado: mar 2007
Posts: 32
Poder: 0
fernando1973 Va por buen camino
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'?.
Responder Con Cita
  #9  
Antiguo 10-05-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
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.
__________________

Responder Con Cita
  #10  
Antiguo 10-05-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
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
Responder Con Cita
  #11  
Antiguo 10-05-2007
fernando1973 fernando1973 is offline
Miembro
 
Registrado: mar 2007
Posts: 32
Poder: 0
fernando1973 Va por buen camino
ok, el codigo de karla funciona perfectamente les agradesco infinitamente a todos por la ayuda.
Responder Con Cita
  #12  
Antiguo 10-05-2007
Avatar de karlaoax
karlaoax karlaoax is offline
Miembro
 
Registrado: oct 2003
Ubicación: Monterrey
Posts: 280
Poder: 21
karlaoax Va por buen camino
Ok analiza el codigo y no solo CTRL+C y CTRL+V

Karla
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
busqueda sql Dark Aeris Firebird e Interbase 10 06-06-2006 23:05:20
Busqueda Con Una Sql salvanano SQL 5 05-05-2005 20:59:11
busqueda alachaise Internet 1 31-03-2005 16:57:34
Búsqueda !!! vpepen Conexión con bases de datos 4 26-11-2003 12:48:58
Error en busqueda. kwan Conexión con bases de datos 11 05-09-2003 19:43:54


La franja horaria es GMT +2. Ahora son las 09:09:10.


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