
¿Cómo insertar campo image de sql a tabla access
Publicado por Luis (1 intervención) el 28/06/2014 18:29:19
Hola, necesito urgentemente insertar un campo image de SQL a una tabla access, específicamente a un campo OLE. Estoy ejecutando un procedimiento almacenado de SQL en access pero el campo que contiene la imagen no me lo pasa a la tabla de destino de access.
Este es el procedimiento en SQL para obtener los datos deseados
ALTER PROCEDURE [dbo].[SADSOGESTObtRecorridoRutinaImagenes]
(
@IDInforme int
)
AS
SELECT
IdImagen
,IDInforme
,NomImagen
,Imagen --campo tipo image
,Descripcion
FROM SADSOGESTRecorridoRutinaInfoCompImagenes
WHERE IDInforme = @IDInforme
ORDER BY NomImagen DESC
y este es el procedimiento para almacenar los datos en la tabla access:
Public Static Sub ObtRecorridoRutinaInfoImagenes()
Variables
Set conn = New ADODB.Connection
conn.Open (STRCONNCachi)
Set ObCommand.ActiveConnection = conn
'El procedimiento almacenado en SQL Server es "SADSOGESTObtRecorridoRutinaImagenes"
ObCommand.CommandText = "SADSOGESTObtRecorridoRutinaImagenes"
ObCommand.CommandType = adCmdStoredProc
'DECALRA PARAMETROS
Dim opIDInfo As ADODB.Parameter
Set opIDInfo = ObCommand.CreateParameter("@IDInforme", adInteger, adParamInput, 9)
ObCommand.Parameters.Append opIDInfo
opIDInfo.Value = 38 'Form_RecorridoRutina.tbxNumProyecto
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set rs = ObCommand.Execute
Set rsTablas = CurrentDb.OpenRecordset("Imagenes")
If rsTablas.RecordCount > 0 Then
Do While Not rsTablas.EOF
rsTablas.Delete
rsTablas.MoveNext
Loop
End If
If rs.RecordCount < 0 Then
With rs
Do While Not rs.EOF
rsTablas.AddNew
rsTablas.Fields(0) = 1 'rs.Fields(0)
rsTablas.Fields(1) = .Fields(2)
rsTablas.Fields(2) = .Fields(4)
rsTablas.Fields(3) = "C:\SIGSisRegContSO\ImagenesTemp\" & rs.Fields(2)
rsTablas.Fields(4) = .Fields(1)
rsTablas.Fields(5) = .Fields(0)
rsTablas.Fields(6) = .Fields(3) 'rsTablas.Fields(6) es un campo OLE
rsTablas.Update
rsTablas.MoveLast
rsTablas.MoveNext
.MoveNext
Loop
rsTablas.Close
End With
End If
ObCommand.Parameters.Delete ("@IDInforme")
rs.Close
End Sub
Gracias
Este es el procedimiento en SQL para obtener los datos deseados
ALTER PROCEDURE [dbo].[SADSOGESTObtRecorridoRutinaImagenes]
(
@IDInforme int
)
AS
SELECT
IdImagen
,IDInforme
,NomImagen
,Imagen --campo tipo image
,Descripcion
FROM SADSOGESTRecorridoRutinaInfoCompImagenes
WHERE IDInforme = @IDInforme
ORDER BY NomImagen DESC
y este es el procedimiento para almacenar los datos en la tabla access:
Public Static Sub ObtRecorridoRutinaInfoImagenes()
Variables
Set conn = New ADODB.Connection
conn.Open (STRCONNCachi)
Set ObCommand.ActiveConnection = conn
'El procedimiento almacenado en SQL Server es "SADSOGESTObtRecorridoRutinaImagenes"
ObCommand.CommandText = "SADSOGESTObtRecorridoRutinaImagenes"
ObCommand.CommandType = adCmdStoredProc
'DECALRA PARAMETROS
Dim opIDInfo As ADODB.Parameter
Set opIDInfo = ObCommand.CreateParameter("@IDInforme", adInteger, adParamInput, 9)
ObCommand.Parameters.Append opIDInfo
opIDInfo.Value = 38 'Form_RecorridoRutina.tbxNumProyecto
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set rs = ObCommand.Execute
Set rsTablas = CurrentDb.OpenRecordset("Imagenes")
If rsTablas.RecordCount > 0 Then
Do While Not rsTablas.EOF
rsTablas.Delete
rsTablas.MoveNext
Loop
End If
If rs.RecordCount < 0 Then
With rs
Do While Not rs.EOF
rsTablas.AddNew
rsTablas.Fields(0) = 1 'rs.Fields(0)
rsTablas.Fields(1) = .Fields(2)
rsTablas.Fields(2) = .Fields(4)
rsTablas.Fields(3) = "C:\SIGSisRegContSO\ImagenesTemp\" & rs.Fields(2)
rsTablas.Fields(4) = .Fields(1)
rsTablas.Fields(5) = .Fields(0)
rsTablas.Fields(6) = .Fields(3) 'rsTablas.Fields(6) es un campo OLE
rsTablas.Update
rsTablas.MoveLast
rsTablas.MoveNext
.MoveNext
Loop
rsTablas.Close
End With
End If
ObCommand.Parameters.Delete ("@IDInforme")
rs.Close
End Sub
Gracias
Valora esta pregunta


0