Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con el IBDATASET (https://www.clubdelphi.com/foros/showthread.php?t=68536)

ingabraham 19-06-2010 17:26:55

Problema con el IBDATASET
 
Hola tengo una consulta donde tengo campos BLOB , Por tal motivo utilizo un ibdataset

para mostrar el texto de este campo en el evento ongettext
Código Delphi [-]
 Text  :=  IBDataSet1.Fields[2].AsString;

ahora , tengo el sgte codigo , pero la consulta se me pone super lenta y me bloquea el delphi hasta cerrarse, por q, q me falta, como tengo q hacer la consulta

evento onchange del edit de consulta like
Código Delphi [-]
if Ednombre.Text <> '' then
with IBDataSet1 do
begin
 close;
 SelectSQL.Clear;
  if Label1.Caption = 'Forma de Pago' then
  SelectSQL.Add('select FORMA_PAGO,LUGAR_EJECUCION,ACTIVIDADES,OBLIGACIONES_DPTO,GARANTIAS,OBJETO from CONTRATOS where  upper(FORMA_PAGO) Like:nom ');
  if Label1.Caption = 'Lugar de Ejecución' then
    SelectSQL.text:='select FORMA_PAGO,LUGAR_EJECUCION,ACTIVIDADES,OBLIGACIONES_DPTO,GARANTIAS,OBJETO from CONTRATOS where  upper(LUGAR_EJECUCION) Like:nom ';
  if Label1.Caption = 'Actividades' then
    SelectSQL.text:='select FORMA_PAGO,LUGAR_EJECUCION,ACTIVIDADES,OBLIGACIONES_DPTO,GARANTIAS,OBJETO from CONTRATOS where  upper(ACTIVIDADES) Like:nom ';
  if Label1.Caption = 'Obligaciones del Dpto' then
    SelectSQL.text:='select FORMA_PAGO,LUGAR_EJECUCION,ACTIVIDADES,OBLIGACIONES_DPTO,GARANTIAS,OBJETO from CONTRATOS where  upper(OBLIGACIONES_DPTO) Like:nom ';
  if Label1.Caption = 'Garantias' then
    SelectSQL.text:='select FORMA_PAGO,LUGAR_EJECUCION,ACTIVIDADES,OBLIGACIONES_DPTO,GARANTIAS,OBJETO from CONTRATOS where  upper(GARANTIAS) Like:nom ';
  if Label1.Caption = 'Objeto' then
    SelectSQL.text:='select FORMA_PAGO,LUGAR_EJECUCION,ACTIVIDADES,OBLIGACIONES_DPTO,GARANTIAS,OBJETO from CONTRATOS where  upper(OBJETO) Like:nom ';
 

 ParamByName('Nom').AsString := Uppercase( Ednombre.Text+'%');
 open;
end;

rrf 22-06-2010 18:38:56

Hola.

¿Por qué no usas un campo Char o VarChar para guardar texto? Me parece lo más normal.

La verdad es que me parece raro hacer una consulta sobre un campo blob, que supuestamente almacenan datos binarios (pero aclaro que soy un novato en esto).

Lo haces sobre Firebird ¿no?

Ramón.

Casimiro Notevi 22-06-2010 19:28:28

Los campos BLOBs de firebird pueden almacenar también sólo texto si se especifica en la declaración del mismo.
Pero, de todas formas, creo que falta bastante más información para poder ayudar en este tema, porque ¿Qué guardas en el blob, el nombre?

ingabraham 22-06-2010 22:52:11

Hola gracias por su atencion.

Guardo mi campo nombre como Blob , por que es un campo muy grande sin saber q tamaño en longitud podria poseer este.
son grandes parrafos.

Casimiro Notevi 22-06-2010 23:20:30

Pero entonces cuál es el problema, haciendo el qué?

rrf 22-06-2010 23:29:26

Pues, si es así, ¿por qué no lo defines como Varchar (200) (supongo que el nombre no ocupará más de 200 caracteres)?.

Los varchar solo ocupan el tamaño del texto que incluyen.

Y de esa manera, creo que no te dará problemas con las órdenes SQL.

Ramón.


La franja horaria es GMT +2. Ahora son las 08:48:48.

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