Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con Error en Query (https://www.clubdelphi.com/foros/showthread.php?t=87390)

Luigui59 26-12-2014 21:00:11

Ayuda con Error en Query
 
Que tal buenas tardes, pido su ayuda con un problema al correr un Query, ya que al hacer la búsqueda la primera vez lo hace bien, pero al querer generar una nueva búsqueda me marca error "exception class EOleException with message Óbjeto Parameter mal definido. Se proporcionó información incompleta o incoherente'

Pongo la parte del código donde se realiza el Query, ojala me puedan ayudar, soy principiante en la programación con Delphi.

De antemano Gracias¡¡¡
Código Delphi [-]
        bSql := 'SELECT clave, concepto, ' +
                'unidad FROM CATALOGO WHERE CATALOGO.clave = :Clave';
        ADOQuery2.Close;
        ADOQuery2.SQL.Add(bSql);
        ADOQuery2.Parameters[0].DataType := ftstring;
        ADOQuery2.parameters.ParamByName('Clave').value := tclaves;
        ADOQuery2.Open;
        if ADOQuery2.IsEmpty then
          begin
           if ADOQuery2.active then
               ADOQuery2.Close;
//               ADOQuery2 := ADOQuery2.Create(nil);
               bSql      := ' ';
               tclaves   := ' ';
               showmessage('CLAVE NO ENCONTRADA');
               tclave.SetFocus;
           end
        else IF ADOquery2.Fields[1].asstring <> '' THEN
          begin
            descripcion.Text := ADOquery2.Fields[1].asstring;
            unidad.Text      := ADOquery2.Fields[2].asstring;
            ADOQuery2.Close;
            memo1.SetFocus;
          end;

nlsgarcia 26-12-2014 21:19:32

Luigui59,

Te sugiero revisar el Punto #9 de la Guía de Estilo Estándar.

Gracias por tu colaboración :) ^\||/

Nelson.

Luigui59 26-12-2014 22:05:44

Utilizo Delphi 7, la base de datos es en Access 2007

TiammatMX 26-12-2014 22:17:24

Dale un "Clear" entre cada iteración, para que el contenido de las sentencias sea limpia cada vuelta.

Neftali [Germán.Estévez] 28-12-2014 19:46:44

Tal vez en lugar de:
Código Delphi [-]
  ADOQuery2.SQL.Add(bSql);

Deberías utilizar:

Código Delphi [-]
ADOQuery2.SQL.Text := bSql;

Porque si no vas acumulando las sentencias.

Luigui59 29-12-2014 16:05:29

Muchisimas Gracias por su ayuda, si me sirvio el poner "ADOQuery2.SQL.text" en lugar de "ADOQuery2.SQL.ADD", problema resuelto.

Casimiro Notevi 29-12-2014 16:27:43

Cita:

Empezado por Luigui59 (Mensaje 487128)
Muchisimas Gracias por su ayuda, si me sirvio el poner "ADOQuery2.SQL.text" en lugar de "ADOQuery2.SQL.ADD", problema resuelto.

Lo importante es que entiendas la diferencia y el motivo de que ahora funcione.

Luigui59 29-12-2014 16:34:19

Si como me comento Neftali, lo que yo estaba haciendo es ir acumulando las sentencias del Query con "ADD", por eso me marcaba el error, ya que al querer hacer nuevamente la consulta, se juntaban la sentencia anterior y la nueva, osea 2 sentencias y con el "Text" nada mas se utiliza una sentencia con la nueva condición.

Gracias a todos por su ayuda¡¡¡¡

Casimiro Notevi 29-12-2014 16:39:38

^\||/^\||/^\||/


La franja horaria es GMT +2. Ahora son las 11:11:33.

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