• Domingo 22 de Diciembre de 2024, 20:40

Autor Tema:  Ora10g_vb6-eliminar Blob  (Leído 1599 veces)

sasita

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Ora10g_vb6-eliminar Blob
« en: Viernes 4 de Mayo de 2007, 13:29 »
0
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.