Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ayuda con campos blob (https://www.clubdelphi.com/foros/showthread.php?t=8755)

squenda 31-03-2004 21:09:48

ayuda con campos blob
 
Hola a todos, nuevamente el latoso de squenda jaja, bueno mi problema ahora es:

tengo un campo en donde requiero que mi cliente pueda capturar mas de 255 caracteres, de hecho el necesita capturar aproximadamente una hoja tamaño carta, asi que declare mi campo tipo BLOB SUB_TYPE 1, muy bien pero el problema es que nunca he usado este tipo y no se como hacerlo, de verdad no tengo ni idea, si alguien me pudiera ayudar mandandome algun ejemplo de como insertar y modificar dicho campo, estoy trabajando con interbase que viene con delphi 6, muchas gracias.
saludos.

cahp 01-04-2004 14:28:40

La forma mas sencilla es hacerlo como en principio se trabaja con todos los tipos de datos, asignadole su componente de edicion, es decir un campo de tipo string lo editas con un DBedit, a uno de tipo blob, si es como tu caso para texto, le asignas un DBMemo o DBRichEdit.

Saludos

squenda 01-04-2004 18:55:55

Gracias Cahp pero no utilizo controles DB, alguna vez alguien me comento que se utilizaba algo llamado STREAM o algo asi, no lo recuerdo, asi que por favor aaayyuuuuudaaa!!, gracias.

cahp 01-04-2004 19:06:14

que utilizas para la edicion?
es decir donde escribes el texto?

Si lo dices te puedo ayudar.

Saludos

squenda 02-04-2004 20:29:33

Hola CAHP, de antemano te agradezco tu atencion, mira yo utilizo controles normales, no uso controles db, en lugar de usar un DBEdit, uso un Edit, en lugar de usar un DBMemo uso un Memo, y asi me la llevo, como trabajo con puro query no me gustan los DB, y lo que hago que es que armo los querys al vuelo, ejemplo:

With qry_work, qry_work.SQL do
begin
Close;
Clear;
Add('INSERT INTO clientes (');
Add('Nombre,');
Add('Domicilio,');
Add('Observaciones');
Add('VALUES (');
Add(#39 + edt_nombre.text + #39 + ','); //Edit normal
Add(#39 + edt_domicilio.text + #39 + ','); //Edit normal
Add(#39 + m_observaciones.text + #39); //Memo normal
execSQL;
end;

pero nunca he utilizado tipos BLOB, asi que no se si utilizarlo como utilizaría un memo normal o que? espero que esta informacion te ayude a ayudarme jaja, mucha gracias y saludos

guillotmarc 02-04-2004 20:43:53

Cita:

Empezado por squenda
pero nunca he utilizado tipos BLOB, asi que no se si utilizarlo como utilizaría un memo normal o que?

Un campo Blob es un campo Memo.

En todo caso, no podrás asignar el contenido de un campo Blob en la misma sentencia SQL (como haces en el ejemplo), por lo que tendrás que recurrir a sentencias con parámetros. Entonces en el parámetro puedes asignarle directamente su valor si solo vas a guardar una string, o bien puedes utilizar métodos como el LoadFromFile para cargar datos desde un archivo, e incluso el LoadFromStream para, como te han comentado, cargar datos de un Stream (útil en el caso de que vayas a cargar datos binarios).

Saludos.

cahp 05-04-2004 13:39:47

Suponiendo la query:

Código:

Add('INSERT INTO clientes')
Add('Nombre,');
Add('Domicilio,');
Add('Observaciones');
Add('VALUES (:nombre, :domicilio, :observaciones) ');


seria:

Código:

Query.parambyname('Nombre').AsString :=  EditNombre.Text;
Query.parambyname('Domicilio').AsString :=  EditDomicilio.Text;
Query.parambyname('Observaciones').AsString :=  Memo1.lines.Text;
Query.ExecSQL;

A ver si te sirve eso.

Saludos.

guillotmarc 05-04-2004 14:08:01

Has olvidado cerrar entre paréntesis la lista de campos, ejplo :

Código:

Add('INSERT INTO clientes (Nombre, Domicilio, Observaciones)');
Add('VALUES (:nombre, :domicilio, :observaciones) ');

Saludos.

cahp 05-04-2004 14:21:27

cierto, y puede ser que falte algo mas, lo he hecho de memoria.

Gracias.

Saludos.

Julià T. 05-04-2004 21:34:20

Como SQUENDA me envió un mensaje privado, y he visto el tema, publico aquí la respuesta

Cita:

Hola SQUENDA:

Antes de empezar decirte que los campos Blob de texto les puedes asignar un DBMemo que solitos se encargan del trabajo

En el primer caso casi se podria solucionar poniendo;

Código:

      Add(QuotedStr( m_apuntes.text));//control TMemo
      Add(QuotedStr( m_apuntes.text)+' )' );//control TMemo //aquí te falta cerrar parentesis del insert al final

En el segundo caso
Código:

    Add(':apuntes'+' )');//parametro//aquí te falta cerrar el parentesis del insert al final
    Prepared:=True;//para que se prepare la consulta y se regeneren los parámetros "hechos a mano"
    ParamByName('observaciones').AsBlob:= m_observaciones.text;
    ParamByName('apuntes').AsBlob:= m_apuntes.text;



squenda 08-04-2004 07:12:48

Hola a todos, pues solo quiero agradecer la ayuda para resolver mi problema, un saludo.


La franja horaria es GMT +2. Ahora son las 04:03:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi