Re: Guardar Imagenes en Visual Basic

Lists: pgsql-es-ayuda
From: "Luis Vazquez" <luis(dot)vazquez(at)idesa(dot)com(dot)py>
To: "Mario A(dot) Soto Cordones" <mario_soto(at)venezolanadeavaluos(dot)com>, <grover8navia(at)yahoo(dot)es>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Guardar Imagenes en Visual Basic
Date: 2005-01-18 16:28:09
Message-ID: 006b01c4fd7a$b39154a0$1518a8c0@netvision.com.py
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Gracias Mario
a mi me sirve :-D
----- Original Message -----
From: "Mario A. Soto Cordones" <mario_soto(at)venezolanadeavaluos(dot)com>
To: <grover8navia(at)yahoo(dot)es>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Wednesday, January 19, 2005 8:39 AM
Subject: Re: [pgsql-es-ayuda] Guardar Imagenes en Visual Basic

> Este es el sub de visual basic donde cargo la imagen usando un objeto
> tipo Imagen edit. Les repito he cargado imagenes muy grandes en forma
> muy rápida y para guardarlas es igual de facil y rápido:
>
> lA ESTRUCTURA DE LA TABLA es:
>
> CREATE TABLE "public"."imagenes" (
> "id_estado" CHAR(2) DEFAULT 'SA'::bpchar NOT NULL,
> "co_empresa" NUMERIC(6,0) NOT NULL,
> "co_filial" NUMERIC(6,0) NOT NULL,
> "co_activo" VARCHAR(60) NOT NULL,
> "nb_imagen" VARCHAR(255) NOT NULL,
> "id_usuario" VARCHAR(15) NOT NULL,
> "imagen" "public"."lo",
> "sq_serialcolum" SERIAL,
> CONSTRAINT "imagenes_sq_serialcolum_key" UNIQUE("sq_serialcolum"),
> CONSTRAINT "imagenes_fk_activos" FOREIGN KEY ("co_empresa",
> "co_filial",
> "co_activo")
> REFERENCES "public"."activos"("co_empresa", "co_filial",
> "nu_activo_fijo")
> ON DELETE CASCADE
> ON UPDATE CASCADE
> NOT DEFERRABLE
> ) WITH OIDS;
>
> CREATE INDEX "pk_imagenes" ON "public"."imagenes"
> USING btree ("co_empresa", "co_filial", "co_activo", "sq_serialcolum");
>
> El Sub que carga la imagen es este:
>
>
> Private Sub Carga_Foto(codigo)
> On Error GoTo ControlError
> Dim chunk() As Byte
> Dim fd As Integer
> Dim flen As Long
> Dim pat As String
> Dim OUTPUT_FILE_PATH As String
> pat = app.Path + "\imagenes\"
> OUTPUT_FILE_PATH = pat & "foto.jpg"
> picImagen.ClearDisplay
> frmFichaActivos.MousePointer = vbHourglass
> Select Case paso
> Case "Fotografias"
> StatusBar1.Panels(1).Text = "Cargando Fotografías...espere un
> momento por favor"
> stSQL = "select imagen from imagenes where "
> stSQL = stSQL & " sq_serialcolum = " & codigo
> Case "Factura"
> StatusBar1.Panels(1).Text = "Cargando Factura...espere un momento
> por favor"
> stSQL = "select imagen from samafact where sq_serialcolum = " &
> codigo
> Case "Documentos"
> StatusBar1.Panels(1).Text = "Cargando Documentos...espere un
> momento
> por favor"
> stSQL = "select imagen from samaimdo where sq_serialcolum = " &
> codigo
> Case "Planos"
> StatusBar1.Panels(1).Text = "Cargando Planos...espere un momento
> por favor"
> stSQL = "select imagen from samaplac where sq_serialcolum = " &
> codigo
> End Select
>
> Call AbreRS(2, 1, RsGenerico, (stSQL))
>
> If Not RsGenerico.EOF Then
>
> flen = RsGenerico!imagen.ActualSize
> fd = FreeFile
> Open OUTPUT_FILE_PATH For Binary Access Write As fd
> ReDim chunk(1 To flen)
> chunk() = RsGenerico!imagen.GetChunk(flen)
> Put fd, , chunk()
> Close
> picImagen.Enabled = True
> picImagen.Image = OUTPUT_FILE_PATH
> picImagen.Display
> btnDelete.Enabled = True
> btn_zoom_mas.Enabled = True
> btn_zoom_menos.Enabled = True
> btn_atributos.Enabled = True
> btnImprimirImg.Enabled = True
>
> Else
> Set RsGenerico = Nothing
> btnDelete.Enabled = False
> btn_zoom_mas.Enabled = False
> btn_zoom_menos.Enabled = False
> btn_atributos.Enabled = False
> btnImprimirImg.Enabled = False
> End If
> StatusBar1.Panels(1).Text = MSGLISTO
> frmFichaActivos.MousePointer = vbDefault
> Exit Sub
> ControlError:
> Select Case Err.Number
> Case 55
>
> Case Else
>
> End Select
> Resume
>
> End Sub
>
>
> El sub que guarda la imagen es este:
>
> Private Sub btnOk_Click()
> Dim chunk() As Byte
> Dim fd As Integer
> Dim flen As Long
> Dim cmd As ADODB.Command
> Dim co_empresa As ADODB.Parameter
> Dim co_filial As ADODB.Parameter
> Dim co_activo As ADODB.Parameter
> Dim nb_imagen As ADODB.Parameter
> Dim id_usuario As ADODB.Parameter
> Dim imagen As ADODB.Parameter
>
> INPUT_FILE_PATH = CommonDialog1.FileName
> flagAgregar = True: flagBorrar = False
> Set c = New oculta
> c.InhabilitaSmart Me
> btnAdd.Enabled = False
> frmFichaActivos.MousePointer = vbHourglass
> btnCancelar.Enabled = False
>
> Set cmd = New ADODB.Command
> cmd.ActiveConnection = BaseRemota
> Select Case paso
> Case "Fotografias"
> StatusBar1.Panels(1).Text = "Guardando Fotografía... espere un
> momento por favor"
> cmd.CommandText = "insert into imagenes
> (co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
> values ( ?,?,?,?,?,?)"
> Case "Factura"
> StatusBar1.Panels(1).Text = "Guardando Factura... espere un momento
> por favor"
> cmd.CommandText = "insert into samafact
> (co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
> values ( ?,?,?,?,?,?)"
> Case "Documentos"
> StatusBar1.Panels(1).Text = "Guardando Documentos... espere un
> momento por favor"
> cmd.CommandText = "insert into samaimdo
> (co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
> values ( ?,?,?,?,?,?)"
> Case "Planos"
> StatusBar1.Panels(1).Text = "Guardando Planos... espere un momento
> por favor"
> cmd.CommandText = "insert into samaplac
> (co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
> values ( ?,?,?,?,?,?)"
> End Select
>
> cmd.CommandType = adCmdText
>
> Set co_empresa = cmd.CreateParameter("co_empresa", adInteger,
> adParamInput) co_empresa.Value = UserCia
> cmd.Parameters.Append co_empresa
>
> Set co_filial = cmd.CreateParameter("co_filial", adInteger,
> adParamInput) co_filial.Value = UserSede
> cmd.Parameters.Append co_filial
>
> Set co_activo = cmd.CreateParameter("co_activo", adLongVarChar,
> adParamInput, 60)
> co_activo.Value = Trim(txt_nu_activo_fijo.Text)
> cmd.Parameters.Append co_activo
>
> Set nb_imagen = cmd.CreateParameter("nb_imagen", adLongVarChar,
> adParamInput, 60)
> nb_imagen.Value = UCase(Trim(txt_nb_imagen.Text))
> cmd.Parameters.Append nb_imagen
>
> Set id_usuario = cmd.CreateParameter("id_usuario", adLongVarChar,
> adParamInput, 25)
> id_usuario.Value = UserID
> cmd.Parameters.Append id_usuario
>
> '
> fd = FreeFile
> Open INPUT_FILE_PATH For Binary Access Read As fd
> flen = LOF(fd)
> If flen = 0 Then
> Close
> MsgBox "error"
> FlagErr = True
> End
> Else
> FlagErr = False
> End If
>
> Set imagen = cmd.CreateParameter("imagen", _
> adLongVarBinary, _
> adParamInput, flen)
>
> ReDim chunk(1 To flen)
> Get fd, , chunk()
> imagen.AppendChunk chunk()
> cmd.Parameters.Append imagen
> Set RsGenerico = cmd.Execute
> Close
>
> Call inserta_imagen
> btnAdd.Enabled = True
> Set RsGenerico = Nothing
> frmFichaActivos.MousePointer = vbDefault
> End Sub
>
>
> Espero les sirva.
>
> Saludos
>
> Ing. Mario Soto Cordones
>
> >
> > bueno ,en delphi yo lo hice usando base64 me gustaria ver como lo
> > haces con lo.
> > Puedes enviar el codigo q usas para eso?
> > Que clientes usa para trabajar con postgres? Front-End?
> >
> > *-------------------------------------------------------*
> > *-Edwin Quijada
> > *-Developer DataBase
> > *-JQ Microsistemas
> > *-809-747-2787
> > * " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de
> > lo comun"
> > *-------------------------------------------------------*
> >
> >
> >
> >>From: Jaime Casanova <systemguards(at)yahoo(dot)com>
> >>To: pgsql-es-ayuda(at)postgresql(dot)org
> >>Subject: Re: [pgsql-es-ayuda] almacenamiento de binarios
> >>Date: Mon, 27 Dec 2004 14:55:56 -0600 (CST)
> >>
> >> --- "Mario A. Soto Cordones"
> >><mario_soto(at)venezolanadeavaluos(dot)com> escribió:
> >> > Yo utilizo tipo lo para almacenar imagenes, es mucho
> >> > más rápido y más
> >> > eficiente para almacenar por ejemplo imagenes, una
> >> > de las ventajas que le
> >> > he encontrado a diferencia de utilizar base64 es que
> >> > no importa el tamaño
> >> > de la imagen es muy rapido extraerlas.
> >> >
> >> > Saludos
> >> >
> >> >
> >>
> >>Pero no puedes usar eso usando el odbc, o si? Si
> >>puedes seria interesante ver como funciona, yo
> >>sinceramente nunca lo logre.
> >>
> >>Atentamente,
> >>Jaime Casanova
> >>
> >>_________________________________________________________
> >>Do You Yahoo!?
> >>Información de Estados Unidos y América Latina, en Yahoo! Noticias.
> >> Visítanos en http://noticias.espanol.yahoo.com
> >>
> >>---------------------------(end of
> >> broadcast)--------------------------- TIP 7: no olvides aumentar la
> >> configuración del "free space map"
> >
> > _________________________________________________________________
> > Consigue aquí las mejores y mas recientes ofertas de trabajo en
> > América Latina y USA: http://latam.msn.com/empleos/
> >
> >
> > ---------------------------(end of
> > broadcast)--------------------------- TIP 3: si publicas/lees desde
> > Usenet, por favor envía "subscribe-nomail"
> > a majordomo(at)postgresql(dot)org para que tus mensajes puedan llegar
> > a
> > los suscriptores de la lista
>
>
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster


From: "Mario A(dot) Soto Cordones" <mario_soto(at)venezolanadeavaluos(dot)com>
To: <grover8navia(at)yahoo(dot)es>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Guardar Imagenes en Visual Basic
Date: 2005-01-19 12:39:03
Message-ID: 51937.200.35.66.77.1106138343.squirrel@mail.venezolanadeavaluos.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Este es el sub de visual basic donde cargo la imagen usando un objeto
tipo Imagen edit. Les repito he cargado imagenes muy grandes en forma
muy rápida y para guardarlas es igual de facil y rápido:

lA ESTRUCTURA DE LA TABLA es:

CREATE TABLE "public"."imagenes" (
"id_estado" CHAR(2) DEFAULT 'SA'::bpchar NOT NULL,
"co_empresa" NUMERIC(6,0) NOT NULL,
"co_filial" NUMERIC(6,0) NOT NULL,
"co_activo" VARCHAR(60) NOT NULL,
"nb_imagen" VARCHAR(255) NOT NULL,
"id_usuario" VARCHAR(15) NOT NULL,
"imagen" "public"."lo",
"sq_serialcolum" SERIAL,
CONSTRAINT "imagenes_sq_serialcolum_key" UNIQUE("sq_serialcolum"),
CONSTRAINT "imagenes_fk_activos" FOREIGN KEY ("co_empresa",
"co_filial",
"co_activo")
REFERENCES "public"."activos"("co_empresa", "co_filial",
"nu_activo_fijo")
ON DELETE CASCADE
ON UPDATE CASCADE
NOT DEFERRABLE
) WITH OIDS;

CREATE INDEX "pk_imagenes" ON "public"."imagenes"
USING btree ("co_empresa", "co_filial", "co_activo", "sq_serialcolum");

El Sub que carga la imagen es este:

Private Sub Carga_Foto(codigo)
On Error GoTo ControlError
Dim chunk() As Byte
Dim fd As Integer
Dim flen As Long
Dim pat As String
Dim OUTPUT_FILE_PATH As String
pat = app.Path + "\imagenes\"
OUTPUT_FILE_PATH = pat & "foto.jpg"
picImagen.ClearDisplay
frmFichaActivos.MousePointer = vbHourglass
Select Case paso
Case "Fotografias"
StatusBar1.Panels(1).Text = "Cargando Fotografías...espere un
momento por favor"
stSQL = "select imagen from imagenes where "
stSQL = stSQL & " sq_serialcolum = " & codigo
Case "Factura"
StatusBar1.Panels(1).Text = "Cargando Factura...espere un momento
por favor"
stSQL = "select imagen from samafact where sq_serialcolum = " &
codigo
Case "Documentos"
StatusBar1.Panels(1).Text = "Cargando Documentos...espere un
momento
por favor"
stSQL = "select imagen from samaimdo where sq_serialcolum = " &
codigo
Case "Planos"
StatusBar1.Panels(1).Text = "Cargando Planos...espere un momento
por favor"
stSQL = "select imagen from samaplac where sq_serialcolum = " &
codigo
End Select

Call AbreRS(2, 1, RsGenerico, (stSQL))

If Not RsGenerico.EOF Then

flen = RsGenerico!imagen.ActualSize
fd = FreeFile
Open OUTPUT_FILE_PATH For Binary Access Write As fd
ReDim chunk(1 To flen)
chunk() = RsGenerico!imagen.GetChunk(flen)
Put fd, , chunk()
Close
picImagen.Enabled = True
picImagen.Image = OUTPUT_FILE_PATH
picImagen.Display
btnDelete.Enabled = True
btn_zoom_mas.Enabled = True
btn_zoom_menos.Enabled = True
btn_atributos.Enabled = True
btnImprimirImg.Enabled = True

Else
Set RsGenerico = Nothing
btnDelete.Enabled = False
btn_zoom_mas.Enabled = False
btn_zoom_menos.Enabled = False
btn_atributos.Enabled = False
btnImprimirImg.Enabled = False
End If
StatusBar1.Panels(1).Text = MSGLISTO
frmFichaActivos.MousePointer = vbDefault
Exit Sub
ControlError:
Select Case Err.Number
Case 55

Case Else

End Select
Resume

End Sub

El sub que guarda la imagen es este:

Private Sub btnOk_Click()
Dim chunk() As Byte
Dim fd As Integer
Dim flen As Long
Dim cmd As ADODB.Command
Dim co_empresa As ADODB.Parameter
Dim co_filial As ADODB.Parameter
Dim co_activo As ADODB.Parameter
Dim nb_imagen As ADODB.Parameter
Dim id_usuario As ADODB.Parameter
Dim imagen As ADODB.Parameter

INPUT_FILE_PATH = CommonDialog1.FileName
flagAgregar = True: flagBorrar = False
Set c = New oculta
c.InhabilitaSmart Me
btnAdd.Enabled = False
frmFichaActivos.MousePointer = vbHourglass
btnCancelar.Enabled = False

Set cmd = New ADODB.Command
cmd.ActiveConnection = BaseRemota
Select Case paso
Case "Fotografias"
StatusBar1.Panels(1).Text = "Guardando Fotografía... espere un
momento por favor"
cmd.CommandText = "insert into imagenes
(co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
values ( ?,?,?,?,?,?)"
Case "Factura"
StatusBar1.Panels(1).Text = "Guardando Factura... espere un momento
por favor"
cmd.CommandText = "insert into samafact
(co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
values ( ?,?,?,?,?,?)"
Case "Documentos"
StatusBar1.Panels(1).Text = "Guardando Documentos... espere un
momento por favor"
cmd.CommandText = "insert into samaimdo
(co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
values ( ?,?,?,?,?,?)"
Case "Planos"
StatusBar1.Panels(1).Text = "Guardando Planos... espere un momento
por favor"
cmd.CommandText = "insert into samaplac
(co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
values ( ?,?,?,?,?,?)"
End Select

cmd.CommandType = adCmdText

Set co_empresa = cmd.CreateParameter("co_empresa", adInteger,
adParamInput) co_empresa.Value = UserCia
cmd.Parameters.Append co_empresa

Set co_filial = cmd.CreateParameter("co_filial", adInteger,
adParamInput) co_filial.Value = UserSede
cmd.Parameters.Append co_filial

Set co_activo = cmd.CreateParameter("co_activo", adLongVarChar,
adParamInput, 60)
co_activo.Value = Trim(txt_nu_activo_fijo.Text)
cmd.Parameters.Append co_activo

Set nb_imagen = cmd.CreateParameter("nb_imagen", adLongVarChar,
adParamInput, 60)
nb_imagen.Value = UCase(Trim(txt_nb_imagen.Text))
cmd.Parameters.Append nb_imagen

Set id_usuario = cmd.CreateParameter("id_usuario", adLongVarChar,
adParamInput, 25)
id_usuario.Value = UserID
cmd.Parameters.Append id_usuario

'
fd = FreeFile
Open INPUT_FILE_PATH For Binary Access Read As fd
flen = LOF(fd)
If flen = 0 Then
Close
MsgBox "error"
FlagErr = True
End
Else
FlagErr = False
End If

Set imagen = cmd.CreateParameter("imagen", _
adLongVarBinary, _
adParamInput, flen)

ReDim chunk(1 To flen)
Get fd, , chunk()
imagen.AppendChunk chunk()
cmd.Parameters.Append imagen
Set RsGenerico = cmd.Execute
Close

Call inserta_imagen
btnAdd.Enabled = True
Set RsGenerico = Nothing
frmFichaActivos.MousePointer = vbDefault
End Sub

Espero les sirva.

Saludos

Ing. Mario Soto Cordones

>
> bueno ,en delphi yo lo hice usando base64 me gustaria ver como lo
> haces con lo.
> Puedes enviar el codigo q usas para eso?
> Que clientes usa para trabajar con postgres? Front-End?
>
> *-------------------------------------------------------*
> *-Edwin Quijada
> *-Developer DataBase
> *-JQ Microsistemas
> *-809-747-2787
> * " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de
> lo comun"
> *-------------------------------------------------------*
>
>
>
>>From: Jaime Casanova <systemguards(at)yahoo(dot)com>
>>To: pgsql-es-ayuda(at)postgresql(dot)org
>>Subject: Re: [pgsql-es-ayuda] almacenamiento de binarios
>>Date: Mon, 27 Dec 2004 14:55:56 -0600 (CST)
>>
>> --- "Mario A. Soto Cordones"
>><mario_soto(at)venezolanadeavaluos(dot)com> escribió:
>> > Yo utilizo tipo lo para almacenar imagenes, es mucho
>> > más rápido y más
>> > eficiente para almacenar por ejemplo imagenes, una
>> > de las ventajas que le
>> > he encontrado a diferencia de utilizar base64 es que
>> > no importa el tamaño
>> > de la imagen es muy rapido extraerlas.
>> >
>> > Saludos
>> >
>> >
>>
>>Pero no puedes usar eso usando el odbc, o si? Si
>>puedes seria interesante ver como funciona, yo
>>sinceramente nunca lo logre.
>>
>>Atentamente,
>>Jaime Casanova
>>
>>_________________________________________________________
>>Do You Yahoo!?
>>Información de Estados Unidos y América Latina, en Yahoo! Noticias.
>> Visítanos en http://noticias.espanol.yahoo.com
>>
>>---------------------------(end of
>> broadcast)--------------------------- TIP 7: no olvides aumentar la
>> configuración del "free space map"
>
> _________________________________________________________________
> Consigue aquí las mejores y mas recientes ofertas de trabajo en
> América Latina y USA: http://latam.msn.com/empleos/
>
>
> ---------------------------(end of
> broadcast)--------------------------- TIP 3: si publicas/lees desde
> Usenet, por favor envía "subscribe-nomail"
> a majordomo(at)postgresql(dot)org para que tus mensajes puedan llegar
> a
> los suscriptores de la lista


From: "Elvis E(dot) Henriquez A(dot)" <elvish(at)cantv(dot)net>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Guardar Imagenes en Visual Basic
Date: 2005-01-22 02:04:25
Message-ID: 009301c50026$c8a37540$ae74c4a1@henriquez
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Disculpen mi ignorancia, pero el tipo de datos "lo" es un tipo físico o hay
que crearlo ? O está disponible a partir de qué versión de PostgreSQL ?

Tengo la necesidad de almacenar imágenes, y he logrado hacerlo, pero con
archivos pequeños, de hasta unos 20Kb solamente.

Por otra parte, en un Post más reciente se habla sobre el tipo de datos
bytea, que es una mejora. Cuál es el mejor tipo de datos para almacenar
imágenes (u objetos/archivos binarios) ?

Gracias por su atención, y espero me puedan ayudar.

Atte.
Ing. Elvis E. Henríquez A.
INFORMEL, C.A.

P.D.: Actualmente estoy trabajando con PostgreSQL 7.3.2 sobre Red Hat 9 y
aplicaciones desde Visual Basic. Estoy pensando en migrar a la versión 8,
pero hasta ahora, todos los betas me muestran de manera incorrecta los
caracteres hispanos/latinos/europeos. Si alguien sabe cómo configurar
correctamente el ODBC para ello, se lo agradecería también. La base de datos
está en SQL_ASCII, y sobre 7.3.2 funciona de maravilla, pero las pruebas que
he hecho sobre todos los betas de Postgre 8 (sobre Windows) me muestran de
manera incorrecta dichos caracteres, truncando incluso las palabras que los
contienen.

----- Mensaje original -----
De: Luis Vazquez
Para: Mario A. Soto Cordones ; grover8navia(at)yahoo(dot)es
CC: pgsql-es-ayuda(at)postgresql(dot)org
Enviado: Martes, 18 de Enero de 2005 12:28
Asunto: Re: [pgsql-es-ayuda] Guardar Imagenes en Visual Basic

Gracias Mario
a mi me sirve :-D
----- Original Message -----
From: "Mario A. Soto Cordones" <mario_soto(at)venezolanadeavaluos(dot)com>
To: <grover8navia(at)yahoo(dot)es>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Wednesday, January 19, 2005 8:39 AM
Subject: Re: [pgsql-es-ayuda] Guardar Imagenes en Visual Basic

> Este es el sub de visual basic donde cargo la imagen usando un objeto
> tipo Imagen edit. Les repito he cargado imagenes muy grandes en forma
> muy rápida y para guardarlas es igual de facil y rápido:
>
> lA ESTRUCTURA DE LA TABLA es:
>
> CREATE TABLE "public"."imagenes" (
> "id_estado" CHAR(2) DEFAULT 'SA'::bpchar NOT NULL,
> "co_empresa" NUMERIC(6,0) NOT NULL,
> "co_filial" NUMERIC(6,0) NOT NULL,
> "co_activo" VARCHAR(60) NOT NULL,
> "nb_imagen" VARCHAR(255) NOT NULL,
> "id_usuario" VARCHAR(15) NOT NULL,
> "imagen" "public"."lo",
> "sq_serialcolum" SERIAL,
> CONSTRAINT "imagenes_sq_serialcolum_key" UNIQUE("sq_serialcolum"),
> CONSTRAINT "imagenes_fk_activos" FOREIGN KEY ("co_empresa",
> "co_filial",
> "co_activo")
> REFERENCES "public"."activos"("co_empresa", "co_filial",
> "nu_activo_fijo")
> ON DELETE CASCADE
> ON UPDATE CASCADE
> NOT DEFERRABLE
> ) WITH OIDS;
>
> CREATE INDEX "pk_imagenes" ON "public"."imagenes"
> USING btree ("co_empresa", "co_filial", "co_activo", "sq_serialcolum");
>
> El Sub que carga la imagen es este:
>
>
> Private Sub Carga_Foto(codigo)
> On Error GoTo ControlError
> Dim chunk() As Byte
> Dim fd As Integer
> Dim flen As Long
> Dim pat As String
> Dim OUTPUT_FILE_PATH As String
> pat = app.Path + "\imagenes\"
> OUTPUT_FILE_PATH = pat & "foto.jpg"
> picImagen.ClearDisplay
> frmFichaActivos.MousePointer = vbHourglass
> Select Case paso
> Case "Fotografias"
> StatusBar1.Panels(1).Text = "Cargando Fotografías...espere un
> momento por favor"
> stSQL = "select imagen from imagenes where "
> stSQL = stSQL & " sq_serialcolum = " & codigo
> Case "Factura"
> StatusBar1.Panels(1).Text = "Cargando Factura...espere un momento
> por favor"
> stSQL = "select imagen from samafact where sq_serialcolum = " &
> codigo
> Case "Documentos"
> StatusBar1.Panels(1).Text = "Cargando Documentos...espere un
> momento
> por favor"
> stSQL = "select imagen from samaimdo where sq_serialcolum = " &
> codigo
> Case "Planos"
> StatusBar1.Panels(1).Text = "Cargando Planos...espere un momento
> por favor"
> stSQL = "select imagen from samaplac where sq_serialcolum = " &
> codigo
> End Select
>
> Call AbreRS(2, 1, RsGenerico, (stSQL))
>
> If Not RsGenerico.EOF Then
>
> flen = RsGenerico!imagen.ActualSize
> fd = FreeFile
> Open OUTPUT_FILE_PATH For Binary Access Write As fd
> ReDim chunk(1 To flen)
> chunk() = RsGenerico!imagen.GetChunk(flen)
> Put fd, , chunk()
> Close
> picImagen.Enabled = True
> picImagen.Image = OUTPUT_FILE_PATH
> picImagen.Display
> btnDelete.Enabled = True
> btn_zoom_mas.Enabled = True
> btn_zoom_menos.Enabled = True
> btn_atributos.Enabled = True
> btnImprimirImg.Enabled = True
>
> Else
> Set RsGenerico = Nothing
> btnDelete.Enabled = False
> btn_zoom_mas.Enabled = False
> btn_zoom_menos.Enabled = False
> btn_atributos.Enabled = False
> btnImprimirImg.Enabled = False
> End If
> StatusBar1.Panels(1).Text = MSGLISTO
> frmFichaActivos.MousePointer = vbDefault
> Exit Sub
> ControlError:
> Select Case Err.Number
> Case 55
>
> Case Else
>
> End Select
> Resume
>
> End Sub
>
>
> El sub que guarda la imagen es este:
>
> Private Sub btnOk_Click()
> Dim chunk() As Byte
> Dim fd As Integer
> Dim flen As Long
> Dim cmd As ADODB.Command
> Dim co_empresa As ADODB.Parameter
> Dim co_filial As ADODB.Parameter
> Dim co_activo As ADODB.Parameter
> Dim nb_imagen As ADODB.Parameter
> Dim id_usuario As ADODB.Parameter
> Dim imagen As ADODB.Parameter
>
> INPUT_FILE_PATH = CommonDialog1.FileName
> flagAgregar = True: flagBorrar = False
> Set c = New oculta
> c.InhabilitaSmart Me
> btnAdd.Enabled = False
> frmFichaActivos.MousePointer = vbHourglass
> btnCancelar.Enabled = False
>
> Set cmd = New ADODB.Command
> cmd.ActiveConnection = BaseRemota
> Select Case paso
> Case "Fotografias"
> StatusBar1.Panels(1).Text = "Guardando Fotografía... espere un
> momento por favor"
> cmd.CommandText = "insert into imagenes
> (co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
> values ( ?,?,?,?,?,?)"
> Case "Factura"
> StatusBar1.Panels(1).Text = "Guardando Factura... espere un momento
> por favor"
> cmd.CommandText = "insert into samafact
> (co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
> values ( ?,?,?,?,?,?)"
> Case "Documentos"
> StatusBar1.Panels(1).Text = "Guardando Documentos... espere un
> momento por favor"
> cmd.CommandText = "insert into samaimdo
> (co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
> values ( ?,?,?,?,?,?)"
> Case "Planos"
> StatusBar1.Panels(1).Text = "Guardando Planos... espere un momento
> por favor"
> cmd.CommandText = "insert into samaplac
> (co_empresa,co_filial,co_activo, nb_imagen,id_usuario,imagen)
> values ( ?,?,?,?,?,?)"
> End Select
>
> cmd.CommandType = adCmdText
>
> Set co_empresa = cmd.CreateParameter("co_empresa", adInteger,
> adParamInput) co_empresa.Value = UserCia
> cmd.Parameters.Append co_empresa
>
> Set co_filial = cmd.CreateParameter("co_filial", adInteger,
> adParamInput) co_filial.Value = UserSede
> cmd.Parameters.Append co_filial
>
> Set co_activo = cmd.CreateParameter("co_activo", adLongVarChar,
> adParamInput, 60)
> co_activo.Value = Trim(txt_nu_activo_fijo.Text)
> cmd.Parameters.Append co_activo
>
> Set nb_imagen = cmd.CreateParameter("nb_imagen", adLongVarChar,
> adParamInput, 60)
> nb_imagen.Value = UCase(Trim(txt_nb_imagen.Text))
> cmd.Parameters.Append nb_imagen
>
> Set id_usuario = cmd.CreateParameter("id_usuario", adLongVarChar,
> adParamInput, 25)
> id_usuario.Value = UserID
> cmd.Parameters.Append id_usuario
>
> '
> fd = FreeFile
> Open INPUT_FILE_PATH For Binary Access Read As fd
> flen = LOF(fd)
> If flen = 0 Then
> Close
> MsgBox "error"
> FlagErr = True
> End
> Else
> FlagErr = False
> End If
>
> Set imagen = cmd.CreateParameter("imagen", _
> adLongVarBinary, _
> adParamInput, flen)
>
> ReDim chunk(1 To flen)
> Get fd, , chunk()
> imagen.AppendChunk chunk()
> cmd.Parameters.Append imagen
> Set RsGenerico = cmd.Execute
> Close
>
> Call inserta_imagen
> btnAdd.Enabled = True
> Set RsGenerico = Nothing
> frmFichaActivos.MousePointer = vbDefault
> End Sub
>
>
> Espero les sirva.
>
> Saludos
>
> Ing. Mario Soto Cordones
>
> >
> > bueno ,en delphi yo lo hice usando base64 me gustaria ver como lo
> > haces con lo.
> > Puedes enviar el codigo q usas para eso?
> > Que clientes usa para trabajar con postgres? Front-End?
> >
> > *-------------------------------------------------------*
> > *-Edwin Quijada
> > *-Developer DataBase
> > *-JQ Microsistemas
> > *-809-747-2787
> > * " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de
> > lo comun"
> > *-------------------------------------------------------*
> >
> >
> >
> >>From: Jaime Casanova <systemguards(at)yahoo(dot)com>
> >>To: pgsql-es-ayuda(at)postgresql(dot)org
> >>Subject: Re: [pgsql-es-ayuda] almacenamiento de binarios
> >>Date: Mon, 27 Dec 2004 14:55:56 -0600 (CST)
> >>
> >> --- "Mario A. Soto Cordones"
> >><mario_soto(at)venezolanadeavaluos(dot)com> escribió:
> >> > Yo utilizo tipo lo para almacenar imagenes, es mucho
> >> > más rápido y más
> >> > eficiente para almacenar por ejemplo imagenes, una
> >> > de las ventajas que le
> >> > he encontrado a diferencia de utilizar base64 es que
> >> > no importa el tamaño
> >> > de la imagen es muy rapido extraerlas.
> >> >
> >> > Saludos
> >> >
> >> >
> >>
> >>Pero no puedes usar eso usando el odbc, o si? Si
> >>puedes seria interesante ver como funciona, yo
> >>sinceramente nunca lo logre.
> >>
> >>Atentamente,
> >>Jaime Casanova
> >>
> >>_________________________________________________________
> >>Do You Yahoo!?
> >>Información de Estados Unidos y América Latina, en Yahoo! Noticias.
> >> Visítanos en http://noticias.espanol.yahoo.com
> >>
> >>---------------------------(end of
> >> broadcast)--------------------------- TIP 7: no olvides aumentar la
> >> configuración del "free space map"
> >
> > _________________________________________________________________
> > Consigue aquí las mejores y mas recientes ofertas de trabajo en
> > América Latina y USA: http://latam.msn.com/empleos/
> >
> >
> > ---------------------------(end of
> > broadcast)--------------------------- TIP 3: si publicas/lees desde
> > Usenet, por favor envía "subscribe-nomail"
> > a majordomo(at)postgresql(dot)org para que tus mensajes puedan llegar
> > a
> > los suscriptores de la lista
>
>
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster

---------------------------(fin del mensaje)---------------------------
TIP 8: explain analyze es tu amigo