Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Codigo que produce un error (https://www.clubdelphi.com/foros/showthread.php?t=67670)

aanil 29-04-2010 19:08:57

Codigo que produce un error
 
Hola mis amigos.

Les presento este codigo que en Delphi 7 lo habia hecho y me funcionaba, ahora estoy usando Delphi 2009 y me produce un error.

Codigo.

Código SQL [-]
Query1.Close;
query1.SQL.Text := ('select CARNET, (NOMBRES+  " "   +APELLIDO1+  " "  +APELLIDO2) AS NOMBRES, 
+CEDULA, FECHA_NAC AS NACIMIENTO, CLINICA  FROM SEMMA WHERE CARNET like:variable 
+or nombre like:variable or apellido1 like:variable or apellido2 like:variable or cedula like:variable');
parameters[0].Value := '%'+edit1.Text +'%';
parameters[1].Value := '%'+edit1.Text +'%';
parameters[2].Value := '%'+edit1.Text +'%';
parameters[3].Value := '%'+edit1.Text +'%';
parameters[4].Value := '%'+edit1.Text +'%';

Query1.Open;

El mensaje de error es el siguiente.

[DCC Error] Unit1.pas(48): E2149 Class does not have a default property

A ver donde esta malo.

Saludos.

duilioisola 29-04-2010 19:37:53

- Si vas debugando, en qué línea da el error?

- No entiendo porqué todo el SQL está entre paréntesis.
- ¿No debería haber un espacio entre el like y la variable?
- ¿No deberían tener diferentes nombres cada una de las variables?
Código Delphi [-]
Query1.SQL.Text :=  'select  CARNET, (NOMBRES+  " "   +APELLIDO1+  " "  +APELLIDO2) AS NOMBRES, 
+CEDULA, FECHA_NAC AS NACIMIENTO, CLINICA  FROM SEMMA WHERE CARNET like :variable1 
+or nombre like :variable2 or apellido1 like :variable3 or apellido2 like :variable4 or cedula like :variable5';

- ¿Qué componente es Query1?

Algunos componentes no tienen el metodo Open para los Querys. Tienen uno que se llama ExecQuery.

roman 29-04-2010 19:39:18

¿Qué tipo de variable es parameters?

// Saludos

aanil 29-04-2010 19:42:31

Hola.

Te presente este codigo que funciona bien en Delphi 7

Código Delphi [-]
procedure TForm5.Edit2Change(Sender: TObject);
begin
with query2 do begin
close;
sql.Clear;
sql.Text := ' select * from tabla1 where matricula like:variable or nombres like:variable';
parameters[0].Value := '%'+edit2.Text +'%';
parameters[1].Value := '%'+edit2.Text +'%';
open;
bitbtn5.Enabled := true;
end;
end;

Este corre bien en delphi 7.

Saludos.

aanil 29-04-2010 19:50:06

Hola

Sobre la pregunta que componente es Query1.

Es AdoQuery, lo que pasa que los bautizo como Query.

Saludos.

Casimiro Notevi 29-04-2010 19:50:15

Qué bien, me alegro de que funcione bien :D

Creo que no has respondido algunas cuestiones que te han preguntado, por cierto, qué base de datos usas?

duilioisola 29-04-2010 19:58:07

Creo que lo que te falta es incluir todo dentro de un with xxx do

Código Delphi [-]
with Query1 do
begin
   Close;
   SQL.Text := 'select CARNET, (NOMBRES+  " "   +APELLIDO1+  " "  +APELLIDO2) AS NOMBRES, 
   +CEDULA, FECHA_NAC AS NACIMIENTO, CLINICA  FROM SEMMA WHERE CARNET like :variable1 
   +or nombre like :variable2 or apellido1 like :variable3 or apellido2 like :variable4 or cedula like :variable5';
   parameters[0].Value := '%'+edit1.Text +'%';
   parameters[1].Value := '%'+edit1.Text +'%';
   parameters[2].Value := '%'+edit1.Text +'%';
   parameters[3].Value := '%'+edit1.Text +'%';
   parameters[4].Value := '%'+edit1.Text +'%';
   Open;
end;

También te recomendaría hacer lo que te he comentado antes.
- espacio entre like y variable.
- nombrar cada parámetro con un nombre distinto.

aanil 29-04-2010 20:28:44

Hola Duilioisola

Gracias, lo hice asi y esta corriendo bien.

Lo de la variable siempre lo hago asi y funciona tambien.

Saludos.

luisgutierrezb 29-04-2010 21:08:52

Bueno yo todavia no entro a delphi 2009, pero estoy seguro que ese codigo no compilaria en delphi 7, por cuestion de las comillas, cuando es una cadena, se cierra, se pone el mas se continua en la siguiente linea y se vuelve a abrir y cerrar comillas, y aqui no veo que se haga, a lo mejor es eso...

aanil 30-04-2010 00:56:29

Hola Luis Gutierrez

Hace varios meses en Delphi 7 yo hice este codigo y corre bien.

Veamo:

Código Delphi [-]
with query2 do begin
close;
sql.Clear;
sql.Text := ' select * from tabla1 where matricula like :variable or nombres like variable1';
parameters[0].Value := '%'+edit2.Text +'%';
parameters[1].Value := '%'+edit2.Text +'%';
open;
bitbtn5.Enabled := true;

Aclaro que corre bien en Delphi 2009.

Pero el código que presento en principio tenia un pequeño fallo que consistía en que debía de declara las variables de los parámetros y que tenia paréntesis que no lo lleva, ya lo corregí esta funcionando. Olvida los de las comillas, es correcto lo que dice solo lo puse para que el código no se viera tan extenso.

Son pequeños detalles que se le pasan,

Saludos.


La franja horaria es GMT +2. Ahora son las 22:19:16.

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