[Lazarus-es] Error al intentar abrir un TSQLQuery

Maxi maximiliano.duarte en gmail.com
Jue Sep 5 15:54:06 CEST 2013


Ya te hago un demo, y te lo envio. Usas firebird?
si es asi, recordá crear estos indices individuales, asi los aprovecha
si está la base en el motor, si es local o en memoria da igual.

El día 5 de septiembre de 2013 09:50, Ismael L. Donis Garcia
<ismael en citricos.co.cu> escribió:
> Campos creados? No nunca en tiempo de diseño le he agregado campos. Siempre
> lo he trabajado de la forma que explico más abajo.
>
> No, yo solo inserte los objetos  TIBConnection, TSQLTransaction y TSQLQuery
> en un DataModule y san se acabo.
>
> Después los uso con procedimientos púbicos de la siguiente manera.
>
> 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.IndexFieldNames:=''; //Esta propiedad se la puse ahora pero hace
> caso omiso de ella donde quiera que la ponga.
>
>   rssc3.Filter:='';
>   rssc3.SQL.Clear;
>   rssc3.SQL.Text := sqlstr;
>   rssc3.ReadOnly := blnread;
>   trasc3.StartTransaction;
>   rssc3.Open;
> end;
>
> Repito que si no uso la propiedad IndexFieldNames, pero me es necesaria para
> mostrar un reporte. Si no muestro ese reporte todo funciona bien. Y si le
> quito dicha propiedad al reporte también todo funciona bien menos el reporte
> que no me sale de la forma correcta. Ya que al LastReport hay que pasarle
> los datos organizados porque carece de una propiedad IndexFieldNames. Porque
> si la tuviera podría hacer:
>
> TfrDBDataSet.DataSet.IndexFieldNames:='xxxxxx';
>
> Y no tendría que usar la propiedad IndexFieldNames del TSQLQuery. Pero aun
> así creo que eso es un bug del TSQLQuery. Pero por sierto que me tiene
> trancado de tal forma que no se como resolverlo.
>
> Esta tarde trataré de mirar el código del TSQLQuery a ver si puedo dar con
> el problema. O talves Maxi que tu también dominas más este lenguaje le
> podrías hechar una miradita. Porque la verdad que ya no se porque vía mirar
> desde un usuario normal, ósea sin urgar en el código de los componenetes de
> Lazarus.
>
> Saludos Reiterados
> ========
> | ISMAEL |
> ========
> ----- Original Message -----
>
> From: Maxi
> To: Spanish version of Lazarus List
> Sent: Wednesday, September 04, 2013 7:10 PM
> Subject: Re: [Lazarus-es] Error al intentar abrir un TSQLQuery
>
> Tenes campos creados en el.objeto?
>
> El 04/09/2013 17:33, "Ismael L. Donis Garcia" <ismael en citricos.co.cu>
> escribió:
>>
>> 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
>>
>>
>> _______________________________________________
>> 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
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>



-- 
El que pregunta aprende, y el que contesta aprende a responder.

No a la obsolecencia programada:
http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml

Linux User #495070
http://domonetic.com/blog




More information about the Lazarus-es mailing list