Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Insertando texto en un campo BLOB (https://www.clubdelphi.com/foros/showthread.php?t=85173)

mRoman 10-02-2014 06:42:22

Insertando texto en un campo BLOB
 
Hola Amigos... USO Firebird 2.0 y Delphi6

Como puedo seguir agregando texto a un campo blob EN UN PROCEDIMIENTO ALMACENADO??

Estoy haciendo esto:
Código SQL [-]
             for select b.consec,
                        b.cantidad_surtida,
                        b.unidad_producto,
                        c.descripcion,
                        substr(c.cve_producto,8,11) as codificacion
                  from registro_e_s_detalle b,
                       producto c
                  where b.folio=:vfolio
                    and b.cve_producto=c.cve_producto
                  order by b.consec
                  into :vconsec,
                       :vcantidad,
                       :vunidad,
                       :vdescripcion,
                       :vcodificacion do
                  begin
                       if (vConsec=1) then
                       begin
                            vdetalle=String2Blob(lpad(:vcantidad,5,' ')||' '||
                                                 lpad(:vunidad,10,' ')||' '||
                                                 lpad(:vdescripcion,60,' ')||' '||
                                                 lpad(:vcodificacion,10,' ')||ascii_char(13));
                       end else
                       begin
                            vdetalle=String2Blob(:vdetalle)||
                                     string2blob(lpad(:vcantidad,5,' ')||' '||
                                                 lpad(:vunidad,10,' ')||' '||
                                                 lpad(:vdescripcion,60,' ')||' '||
                                                 lpad(:vcodificacion,10,' ')||ascii_char(13));
                       end
                  end
             insert into REPORTE_PASO_E_S(MOVIMIENTO_E_S,
                                          FOLIO         ,
                                          FECHA_FOLIO   ,
                                          NOMBRE_RECIBE ,
                                          RECIBI_DE     ,
                                          ID_DOCUMENTO  ,
                                          NOMBRE_AUTORIZO,
                                          NOMBRE_SOLICITA,
                                          NOMBRE_ENTREGADO,
                                          ID_CONCEPTO_E_S,
                                          OBSERVACIONES,
                                          DETALLE,
                                          DOCUMENTO      )
                                  values (:iformato,
                                          :vfolio,
                                          :vfecha_movto,
                                          :vnombre_recibe,
                                          :vrecibi_de,
                                          :vid_documento,
                                          :vnombre_autorizo,
                                          :vnombre_solicita,
                                          :vnombre_entregado,
                                          :vid_concepto_es,
                                          :vobservaciones,
                                          :vdetalle,
                                          :vdocumento);

Como puedo estar agregando (por ejemplo) el detalle de una factura en campo blob???....estoy tratando de hacer algo como esto:

contador=contador+1..

Firebird no marca error en esto:
Código SQL [-]
                            vdetalle=String2Blob(:vdetalle)||
                                     string2blob(lpad(:vcantidad,5,' ')||' '||
                                                 lpad(:vunidad,10,' ')||' '||
                                                 lpad(:vdescripcion,60,' ')||' '||
                                                 lpad(:vcodificacion,10,' ')||ascii_char(13));
Pero no hace nada....

Me pudieran ayudar....GRACIAS !

Casimiro Notevi 10-02-2014 09:54:43

Primero de todo, ¿por qué guardas eso en un campo blob de esa manera?, no es práctico ni funcional.
Y segundo, el campo blob ¿es de tipo binario o texto?

mRoman 10-02-2014 17:43:36

Es de tipo de TEXTO....
Y lo guardo asi por una razón de impresión......te platico rapidamente. Tengo que imprimir en una hoja tamaño carta 2 formatos que son de media carta. En la hoja carta deseo imprimir el original y la copia en una sola impresión......
Teniendo una tabla maestro y una tabla detalle (Factura y Factura_detalle por ej.) como imprimirias en una sola impresión en una hoja tamaño carta.... EL ORIGINAL Y LA COPIA ????... Yo no tengo idea si en quickreport la banda DETAIL la puedes colocar 2 veces dentro de un QuickReport...1 de ellas quede "arriba" en la primera mitad de la hoja y la otra "abajo" en la otra mitad de la hoja carta....

Sé que se puede resolver imprimiendo 2 veces y listo....pero se pretende AHORRAR IMPRESIONES PORQ LE CUESTA A LA IMPRESA CADA IMPRESION...entonces como el formato original es media carta....pretendo que en una sola impresion y en una sola hoja se impriman AMBOS FORMATO....EL ORIGINAL Y LA COPIA.

A mi se me ocurrio colocar la banda DETAIL...que abarque toda la hoja tamaños carta...sin ninguna otra banda mas....y despues crear una tabla con los encabezados mas 1 campo BLOB de tipo texto para en ese campo almacenar el DETALLE del formato.....

Es por esta razón que pregunto lo que amablemente tu leiste....O tu como le harias....conoces otra forma menos complicada !!???

Gracias por contestar Casimiro.

Casimiro Notevi 10-02-2014 17:56:41

Para hacer lo que quieres es muy fácil con un generador de informes.
El quickreport no lo conozco, pero estoy convencido totalmente que debe ser facilísimo. Te recomiendo que mires o preguntes sobre eso. No te compliques la vida con campos blob y procedimientos almacenados para hacer algo que con quickreport debe ser tan simple como elegir una opción de la configuración.

mRoman 11-02-2014 05:27:41

Ok...gracias Casimiro por contestar. Saludos.

Seguiré buscando.


La franja horaria es GMT +2. Ahora son las 17:04:15.

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