[Lazarus-es] Error al intentar abrir un TSQLQuery

Ismael L. Donis Garcia ismael en citricos.co.cu
Mie Sep 4 22:21:22 CEST 2013


Si probe poner por todos lados y sin ningún efecto.

Lo puse en las siguientes partes:


procedure Tdm.p_rssc3();
begin
  if trasc3.Active then begin
    rssc3.IndexFieldNames:='';
    trasc3.EndTransaction;
  end;
 rssc3.IndexFieldNames:='';
 rssc3.Close;
end;

procedure Tdm.p_rssc3(sqlstr: string; blnread: boolean);
begin
  p_rssc3();
  rssc3.IndexFieldNames:='';
  rssc3.Filter:='';
  rssc3.IndexFieldNames:='';
  rssc3.SQL.Clear;
  rssc3.IndexFieldNames:='';
  rssc3.SQL.Text := sqlstr;
  rssc3.IndexFieldNames:='';
  rssc3.ReadOnly := blnread;
  rssc3.IndexFieldNames:='';
  trasc3.StartTransaction;
  rssc3.IndexFieldNames:='';
  rssc3.Open;
end;

Sin ningún resultado satisfactorio. Me sigue diciendo que no tiene el campo "empor". Yo se que no está ya que está en la consulta anterior. No en la que quiero realizar cuando me da error.                

No puedo usar order by en la consulta porque es una consulta calculada. Si miras bien en la consulta aparece "where (s.idsa is null)"

Donde "idsa" es la clave primaria de la tabla, por tal motivo la consulta no devuelve ningún registro ya que posteriormente es que se le agrega mediante la instrucción.

dm.rssc3.Append;
...

Como ves lo intentado de todas las formas. Por lo que no se si será un problema del TSQLQuery.

Estoy Usando Firebird 2.5.2 Update 1 como base de datos.
========
| ISMAEL |
========
----- Original Message ----- 
  From: German 
  To: Spanish version of Lazarus List 
  Sent: Wednesday, September 04, 2013 3:47 PM
  Subject: Re: [Lazarus-es] Error al intentar abrir un TSQLQuery


  Hola Ismael

  Probaste de agregar :
  rsc3.IndexFieldNames := ''; 
  dentro de tu procedimiento procedure Tdm.p_rssc3(sqlstr: string; blnread: boolean);  ??

  De cualquier manera no te convendria usar "order by" en tu query?, es decir agregar al final de tu cadena strsql:=strsql+ ' order by cuenta, sctaor, subcta, capor, capitulo, scapor, subcap, eleor, elemento, empor, empresa';
  Luego si necesitas otro orden podes modificar el query ya que de cualquier manera lo cerras y volves a abrir.

  saludos!

  German

  El 04/09/2013 04:35 p.m., Ismael L. Donis Garcia escribió:


    Cuando intento abrir un TSQLQuery que previamente lo había abierto y después le había pasado como parámetro un grupo de índices cuando lo intento abrir de nuevo con otro SQL me dice que un campo no existe. Yo se que no existe porque no está en el SQL, estaba en el SQL con que lo había abierto anteriormente, pero no con el que lo estoy intentando abrir de nuevo. 

    Relizo lo siguiente: 

    strsql := 'select s.cuenta, s.subcta, s.capitulo, s.subcap, s.elemento, s.empresa, s.debe, s.haber, s.saldo, s.nat, s.descripcion, '; 
    strsql := strsql + 's.nota, s.nota1, s.nota2, s.nota3, s.sctaor, s.capor, s.scapor, s.eleor, s.empor from scsal s where (s.idsa is null)'; 
    dm.p_rssc3(strsql, false); 

    después le paso un índice d ela siguiente forma: 

    dm.rssc3.IndexFieldNames:='cuenta; sctaor; subcta; capor; capitulo; scapor; subcap; eleor; elemento; empor; empresa'; 

    Y cuando lo intento abrir de nuevo con: 

    strsql := 'select s.cuenta, s.subcta, s.capitulo, s.subcap, s.elemento, s.empresa, s.saldo, s.descripcion, '; 
    strsql := strsql + 's.sctaor, s.capor, s.scapor, s.eleor from scsal s where (s.idsa is null)'; 
    dm.p_rssc3(strsql, false); 

    Me da error en la línea: rssc3.Open; 
    Me dice que falta el campo empor el cual use en la cunsulta anterior, pero que por supuesto no está en esta. 

    El procedimiento que llamo es: 

    procedure Tdm.p_rssc3(); 
    begin 
     if trasc3.Active then trasc3.EndTransaction; 
     rssc3.Close; 
    end; 

    procedure Tdm.p_rssc3(sqlstr: string; blnread: boolean); 
    begin 
     p_rssc3(); 
     rssc3.Filter:=''; 
     rssc3.SQL.Clear; 
     rssc3.SQL.Text := sqlstr; 
     rssc3.ReadOnly := blnread; 
     trasc3.StartTransaction; 
     rssc3.Open; 
    end; 


    Se que el error me lo está dando por usar: 

    dm.rssc3.IndexFieldNames:=xxxx 

    Pero lo necesito usar. 

    E intentado resetear dicha propiedad por todas las vías antes de decir: rssc3.Open; pero no he encontrado la forma de como hacerlo sin que me de error. 

    Toda ayuda será bien venida. 

    Saludos Cordiales 
    ======== 
    | ISMAEL | 
    ======== 
    Only for the small landowners and Cubans companies 
    Website: www.sisconge.byethost15.com 
                 www.sisconge.hol.es 


    _______________________________________________ 
    Lazarus-es mailing list 
    Lazarus-es en lists.lazarus.freepascal.org 
    http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es 






------------------------------------------------------------------------------


  _______________________________________________
  Lazarus-es mailing list
  Lazarus-es en lists.lazarus.freepascal.org
  http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20130904/489924ca/attachment-0002.html>


More information about the Lazarus-es mailing list