SoloCodigo
		Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: sasita en Viernes  4 de Mayo de 2007, 13:29
		
			
			- 
				Estoy desarrollando una aplicación en vb6 con SGBD oracle10g para ficheros bynarios (blob). Con este código fuente da de alta, consulta y escanea (con EZtwain), pero el problema surge al intentar eliminar los registros pues el ejecutar el código muestra un error. Aquí adjunto el código y los comentarios:
 
 
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '===============SE EJECUTA ANTES DE QUE EL FORMULARIO SE CARGUE=======================
 
 
 
 
 Private Sub Form_Load()
 Dim Conn As New ADODB.Connection
 Dim Rs As New ADODB.Recordset
 Dim FileMgr As New FileManager
 Dim doc As Recordset
 Dim SQL As String
 
 'Usa el conector OLEDB
 Conn.Provider = "OraOLEDB.Oracle"
 Conn.Open "fct", "sandra", "oracle"
 
 'Lee todos los datos de la tabla
 SQL = "Select * from blobtest"
 Rs.Open SQL, Conn, 0, 1
 
 'Vuelca todos los registros en los combos
 Rs.MoveFirst
 Do While Not Rs.EOF
 cbid.AddItem Rs("id_doc")
 Rs.MoveNext
 Loop
 
 Rs.MoveFirst
 Do While Not Rs.EOF
 cbfecha.AddItem Rs("fecha")
 Rs.MoveNext
 Loop
 
 Rs.MoveFirst
 Do While Not Rs.EOF
 cbtipo.AddItem Rs("t_doc")
 Rs.MoveNext
 Loop
 
 Rs.MoveFirst
 Do While Not Rs.EOF
 cbdesc.AddItem Rs("desc_doc")
 Rs.MoveNext
 Loop
 
 'Cierra la conexión a la base de datos y a la tabla
 Rs.Close
 Conn.Close
 Set Conn = Nothing
 End Sub
 
 
 
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 'Código generado por la aplicación EZtwain, sirve para controlar las acciones de un escaner
 'En este caso el escaner es un flatbed, pero este software se usará para un escaner ADF
 'En ambos caso se hará para documentación multipágina.
 
 Private Sub Escanear_Click()
 Dim nResult As Long, nRes2 As Long
 nResult = TWAIN_OpenDefaultSource()
 If nResult = 1 Then
 'variable nResult almacena el dato de tipo *.pdf
 TWAIN_SetMultiTransfer (1)
 TWAIN_SetHideUI (1)
 TWAIN_SetUnits (TWUN_INCHES)
 TWAIN_SetResolution (200)
 ' el escaner tendrá una resolucioón de 200
 TWAIN_SelectFeeder (0)
 Call TWAIN_ResetImageLayout
 TWAIN_SetMultipageFormat (MULTIPAGE_PDF) ' se indica que el documento es multipágina
 nResult = TWAIN_BeginMultipageFile("C:\Documents and Settings\Administrador\Escritorio\ESCANER3\prueba1.pdf")
 'ruta en la que se almacena el documento vinculado
 If nResult = 0 Then
 
 Do
 Dim hdib As Long
 hdib = TWAIN_Acquire(Form1.hwnd)
 Call TWAIN_DisableSource
 If (hdib = 0) Then
 Exit Do
 End If
 nResult = TWAIN_DibWritePage(hdib)
 
 If nResult <> 0 Then
 Exit Do
 End If
 If MsgBox("Scan another page?", vbYesNo + vbQuestion) <> vbYes Then
 Exit Do
 End If
 
 Loop
 
 nRes2 = TWAIN_EndMultipageFile()
 
 If nResult = 0 Then nResult = nRes2
 
 End If
 TWAIN_SetMultiTransfer (0)
 TWAIN_SetHideUI (0)
 Call TWAIN_CloseSource
 If nResult = 0 Then
 Call MsgBox("Scan completed and saved to file.", vbOKOnly + vbInformation)
 Else
 Call MsgBox("Scan failed with result code " + Str(nResult), vbOKOnly + vbExclamation)
 End If
 End If
 End Sub
 
 
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '===============CONSULTAR Y VOLCAR LOS DATOS DE UN ÚNICO REGISTRO=====================
 
 Private Sub consultar_Click()
 Dim Conn As New ADODB.Connection
 Dim Rs As New ADODB.Recordset
 Dim FileMgr As New FileManager
 Dim SQL As String
 Dim DocTitle As String
 Dim DocDesc As String
 
 'Conexión creada con OLEDB
 Conn.Provider = "OraOLEDB.Oracle"
 Conn.Open "fct", "sandra", "oracle"
 
 'Lectura de todos los datos de la tabla
 SQL = "Select * from blobtest"
 Rs.Open SQL, Conn, 0, 1
 
 
 'Se coloca en el primer registro de la BD y los recorre todos para volcar el registro selecionado por el usuario
 Rs.MoveFirst
 Do While Not Rs.EOF
 If cbid.Text = Rs("id_doc") Then
 txtfecha.Text = Rs("fecha")
 txttipo.Text = Rs("t_doc")
 txtdesc.Text = Rs("desc_doc")
 txtid.Text = Rs("id_doc")
 FileMgr.ImportFromBlob Rs("b_doc"), "C:\Documents and Settings\Administrador\Escritorio\ESCANER3\prueba1.pdf"
 End If
 Rs.MoveNext
 Loop
 
 'Cerrar la conexión a la BD y a la tabla
 Rs.Close
 Conn.Close
 Set Conn = Nothing
 MsgBox "Volcado realizado correctamente"
 End Sub
 
 
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '==============================DAR DE ALTA============================================
 Private Sub añadir_Click()
 
 Dim Conn As New ADODB.Connection
 Dim Rs As New ADODB.Recordset
 Dim FileMgr As New FileManager
 Dim doc As Recordset
 Dim SQL As String
 
 'Crear y abrir conexión con OLEDB
 Conn.Provider = "OraOLEDB.Oracle"
 Conn.Open "fct", "sandra", "oracle"
 
 'Abrir la tabla blobtest
 SQL = "Select * from blobtest where 1=2"
 Rs.Open SQL, Conn, 2, 3
 
 'Añadir un nuevo registro a la tabla blobtest
 Rs.AddNew
 Rs("id_doc").Value = "ID_" & (Rs.RecordCount + 1)
 Rs("t_doc").Value = "Tipo_" & (Rs.RecordCount + 1)
 Rs("desc_doc").Value = "Descripción del documento" & (Rs.RecordCount + 1)
 Rs("fecha").Value = Now
 'Dar de alta el campo blob en la base de datos
 FileMgr.ExportToBlob "C:\Documents and Settings\Administrador\Escritorio\ESCANER3\prueba1.pdf", Rs("b_doc")
 Rs.Update
 
 'Cerrar la conexión y la tabla de la base de datos FCT(SID)
 Rs.Close
 Conn.Close
 Set Conn = Nothing
 MsgBox "Alta realizada correctamente"
 End Sub
 
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '===============Elimina los registros de la base de datos=============================
 
 
 Private Sub eliminar_Click()
 Dim Conn As New ADODB.Connection
 Dim Rs As New ADODB.Recordset
 Dim FileMgr As New FileManager
 Dim doc As Recordset
 Dim SQL As String
 
 'Conexión creada con OLEDB
 Conn.Provider = "OraOLEDB.Oracle"
 Conn.Open "orcl", "system", "oracle"
 
 'Lectura de todos los datos de la tabla
 SQL = "Select * from blobtest"
 Rs.Open SQL, Conn, 0, 1
 
 
 'Se coloca en el primer registro de la BD y los recorre todos para volcar el registro selecionado por el usuario
 Rs.MoveFirst
 Do While Not Rs.EOF
 If cbid.Text = Rs("id_doc") Then
 txtfecha.Text = Rs("fecha")
 txttipo.Text = Rs("t_doc")
 txtdesc.Text = Rs("desc_doc")
 txtid.Text = Rs("id_doc")
 FileMgr.ImportFromBlob Rs("b_doc"), "C:\Documents and Settings\Administrador\Escritorio\ESCANER3\prueba1.pdf"
 Rs.Delete   Error aquí
 End If
 Rs.MoveNext
 Loop
 
 
 'Cerrar la conexión a la BD y a la tabla
 Rs.Close
 Conn.Close
 Set Conn = Nothing
 MsgBox "Se han eliminado correctamente los datos"
 End Sub
 
 
 
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '=====================================================================================
 '==================================Salir del formulario===============================
 Private Sub salir_Click()
 Unload Me
 End Sub
 
 Agradecería cualquier posible solución. Gracias por anticipado.