Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-04-2010
aanil aanil is offline
Miembro
 
Registrado: abr 2006
Posts: 155
Poder: 18
aanil Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 29-04-2010
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
- 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.
Responder Con Cita
  #3  
Antiguo 29-04-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Qué tipo de variable es parameters?

// Saludos
Responder Con Cita
  #4  
Antiguo 29-04-2010
aanil aanil is offline
Miembro
 
Registrado: abr 2006
Posts: 155
Poder: 18
aanil Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 29-04-2010
aanil aanil is offline
Miembro
 
Registrado: abr 2006
Posts: 155
Poder: 18
aanil Va por buen camino
Hola

Sobre la pregunta que componente es Query1.

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

Saludos.
Responder Con Cita
  #6  
Antiguo 29-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Qué bien, me alegro de que funcione bien

Creo que no has respondido algunas cuestiones que te han preguntado, por cierto, qué base de datos usas?
Responder Con Cita
  #7  
Antiguo 29-04-2010
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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.
Responder Con Cita
  #8  
Antiguo 29-04-2010
aanil aanil is offline
Miembro
 
Registrado: abr 2006
Posts: 155
Poder: 18
aanil Va por buen camino
Hola Duilioisola

Gracias, lo hice asi y esta corriendo bien.

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

Saludos.
Responder Con Cita
  #9  
Antiguo 29-04-2010
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
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...
Responder Con Cita
  #10  
Antiguo 30-04-2010
aanil aanil is offline
Miembro
 
Registrado: abr 2006
Posts: 155
Poder: 18
aanil Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Porque este código me da error (adjunto código) David JAVA 1 12-03-2009 21:07:27
Lo que nos produce la Tecnología... REHome Humor 7 23-07-2008 21:45:43
que evento se produce...? clanmilano Varios 7 10-11-2005 19:58:47
cuando se produce un Debugger simon OOP 6 28-06-2004 16:54:44
Reintentar cuando se produce un error senpiterno Varios 1 14-04-2004 06:37:45


La franja horaria es GMT +2. Ahora son las 21:06:22.


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