Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    VB - Immagini Tif da Database Oracle

    Buongiorno, ho la necessità di recuperare delle immagini con estensione .TIF memorizzate in formato binario in una tabella Oracle.
    Queste immagini le dovrei visualizzare in una form VB ed per questo ho utilizzato il controllo ImageEdit.ocx che supporta ovviamente il formato .TIF. Questo controllo funziona perfettamente perchè ho caricato una immagine da disco e la vedo nella form.
    Come faccio ad associare i dati memorizzati in tabella sottoforma di binario al mio ocx ImageEdit.ocx? Ho utilizzato un controllo ADODC per connettermi al database poi tramite le proprietà DataSource e la proprietà DataField ho associato il controllo Imgedit al controllo ADODC ma mi dà errore "impossibile associare al campo o a Data Member: 'IMMAGINE'"
    Sapete aiutarmi.
    Grazie anticipatamente.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Ciao e benvenuto nel forum di Programmazione.

    Ti segnalo innanzitutto la lettura del nostro Regolamento che contiene tutte le norme di buona convivenza in quest'area e suggerimenti per il corretto uso del forum.

    Indica sempre il linguaggio di programmazione nel titolo e, nel caso di VB soprattutto, anche la versione (poichè ne esistono diverse); in secondo luogo, abbiamo un'area appositamente dedicata a VB, perciò segnalami la versione a cui fai riferimento così posso correggere il titolo e spostare la discussione.

    Detto questo...ciao e buon forum!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    271
    Perchè non provi ad usare un ADODB.Recordset e a leggerti il tiff come un qualsiasi campo di una tabella?

    dim rsRecords as ADODB.Recordset

    Dopo esserti ricavato il recordset contenente l'immagine, devi appoggiarti ad ADODB.Stream

    cioe':

    Dim mstream As ADODB.Stream
    Set mstream = New ADODB.Stream
    mstream.Type = adTypeBinary
    ' Open it
    mstream.Open

    mstream.Write rsRecords.Fields("IMAGE").Value 'dove "IMMAGINE" e' il nome del campo della tabella che contiene il tuo .TIF

    mstream.SaveToFile "C:\MIO.TIF"

    mstream.Close
    Set mstream = Nothing

    Imgedit1.Image = "C:\MIO.TIF"
    Imgedit1.Page = 1
    Imgedit1.Display

  4. #4

    per Pasaran

    Grazie 1000, ha funzionato! Poi mi dici come devo fare per sdebitarmi!!!

    Ora però dovrei "ritagliare" un pezzetto della immagine tif e fare il processo inverso, cioè salvarla in formato Tif o anche BMP.
    Io una soluzione ce l'avrei, infatti l'immagine tif caricata nel controllo imagedit posso salvarla in formato Bmp e poi la stessa caricarla in un oggetto PictureBox prendendo solo l'area di ritaglio che mi serve, così:

    ....
    ....
    ImgEdit1.SaveAs "C:\Immagini\" & rsDip(0) & ".BMP", wiFileTypeBMP

    Picture1.PaintPicture LoadPicture("C:\Immagini\" & rsDip(0) & ".BMP"), 0, 0, 400, 400, 1000, 1000, 300, 300

    questo funziona ma volevo sapere se c'è un modo un pò più veloce e come fare per salvare questa immagine ritagliata in formato binario nella tabella Oracle forse utilizzando sempre l'oggetto ADODB.stream? ma non ho l'help in linea e quindi non so come fare.
    Grazie.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    271
    Per quanto il ritaglio dell'immagine non so aiutarti.

    Per inserire la nuova img in tabella, prova a usare questa funzione:


    Private Function InsertBlob(ByVal id As Double, ByVal File As String) As Boolean


    Dim ssql As String
    Dim rs As ADODB.Recordset
    Dim mStream As ADODB.Stream
    '
    InsertBlob= True
    '
    On Error GoTo ErrorHandler


    Set rs = New ADODB.Recordset

    rs.Open "Select * from Tabella", connessione, adOpenKeyset, adLockOptimistic
    '
    Set mStream = New ADODB.Stream
    '
    mStream.Type = adTypeBinary
    '
    mStream.Open
    '
    mStream.LoadFromFile File
    '
    With rs
    .AddNew
    .Fields("id").Value = id
    .Fields("IMAGE").Value = mStream.Read
    .Update
    End With

    mStream.Close
    Set mStream = Nothing

    rs.Close
    Set rs = Nothing

    Screen.MousePointer = vbDefault

    Exit Function

    ErrorHandler:

    Screen.MousePointer = vbDefault
    InsertBlob = False
    Select Case Err.Number
    Case 3002
    clsLog.SegnalaLog Space(3) & "Errore in fase di lettura del file (ADO STREAM)" & Err.Number & " - " & Err.Description
    Case Else
    clsLog.SegnalaLog Space(3) & "Errore in fase di Inserimento nella tabella" & Err.Number & " - " & Err.Description
    End Select
    ''' Resume
    End Function





    Spero vada bene

  6. #6
    TUTTO OK! GRAZIE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.