Errore accesso al file - wia.commondilaog

di il
6 risposte

Errore accesso al file - wia.commondilaog

Uso una routine per scansionare un immagine,funziona tutto bene registra l'immagine sul DB sql senza problemi
ma se riprovo a scansionare la stessa immagine solleva questa eccezione:
errorewia.JPG
errorewia.JPG

questa la routine che richiamo

  Dim fs As FileStream = Nothing
        Dim mytable As DataTable = Nothing
        Dim myrow As DataRow = Nothing
        ApriDataBase()
        apritesserasanitaria()
        mytable = dtscnr.Tables(0)
        Dim risposta As String = String.Empty
        Dim ms As New System.IO.MemoryStream()
        scantsrsanitariaFronte()
        pictesseraFronte.Load(JpgFilename)
        risposta = CType(MessageBox.Show("vuoi salvare l'immagine?", "immagine acquisita", MessageBoxButtons.YesNo, MessageBoxIcon.Information), String)
        If CType(risposta, Global.Microsoft.VisualBasic.MsgBoxResult) = vbYes Then
            ' Try
            fs = New FileStream(BmpFilename, FileMode.OpenOrCreate, FileAccess.Read)
            Dim ImgData(fs.Length) As Byte
            fs.Read(ImgData, 0, System.Convert.ToInt32(fs.Length))
            fs.Close()
            Try
                myrow = mytable.Rows(record)
                myrow.Item("imgfronte") = ImgData
                cmdBuilder = New SqlCommandBuilder(dacnr)
                dacnr.MissingSchemaAction = MissingSchemaAction.AddWithKey
                'Salvo i dati modificati 
                dacnr.Update(dtscnr)
                '  JpgFilename = Nothing
            Catch ex As Exception
                MessageBox.Show("Errore: " & ex.Message)
            Finally
                If Not objconn Is Nothing Then
                    If objconn.State = ConnectionState.Open Then
                        objconn.Close()
                    End If
                    objconn.Dispose()
                End If
            End Try
            MessageBox.Show("Aggiornamento Effettuato.", "Registrazione Avvenuta.", MessageBoxButtons.OK, MessageBoxIcon.Information)
            ms.Close()
        End If
e questa la routine richiamata

 Private Sub scantsrsanitariaFronte()
        Dim _Dialog As New WIA.CommonDialog
        JpgFilename = _Path & _Filename & "03.jpg"
        BmpFilename = _Path & _Filename & "03.jpg"
        Elimina_File()
        Dim _ImageFile As New ImageFile
        _ImageFile = _Dialog.ShowAcquireImage(WiaDeviceType.ScannerDeviceType)
        If _ImageFile Is Nothing Then
            Exit Sub
        Else
            _ImageFile.SaveFile(BmpFilename)
            Application.DoEvents()
            _Dialog = Nothing
            _ImageFile = Nothing
        End If
    End Sub
Sicuramente esiste il modo per rilasciare la risorsa ma non saprei il metodo giusto,se qualcuno vuole indirizzarmi nel modo corretto...

6 Risposte

  • Re: Errore accesso al file - wia.commondilaog

    Salvi le immagini nel DB? Ho capito bene?
  • Re: Errore accesso al file - wia.commondilaog

    sistemista ha scritto:


    Sicuramente esiste il modo per rilasciare la risorsa ma non saprei il metodo giusto,se qualcuno vuole indirizzarmi nel modo corretto...
    Leggi la e soprattutto il paragrafo sul costrutto Using di VB.NET.

    Ciao!
  • Re: Errore accesso al file - wia.commondilaog

    @oregon,si le salvo nel DB
    @ alka,lo leggerò.Grazie
    Allora ho risolto in modo, diciamo non come volevo perchè prima di salvare l'immagine nel db devo mostrare l'immagine scannerizzata ed eventualmente in caso affermativo salvarla,quindi,ho proceduto nel seguente modo:
    
        risposta = CType(MessageBox.Show("vuoi salvare l'immagine?", "immagine acquisita", MessageBoxButtons.YesNo, MessageBoxIcon.Information), String)
            If CType(risposta, Global.Microsoft.VisualBasic.MsgBoxResult) = vbYes Then
                ' Try
                fs = New FileStream(BmpFilename, FileMode.OpenOrCreate, FileAccess.Read)
                Dim ImgData(fs.Length) As Byte
                fs.Read(ImgData, 0, System.Convert.ToInt32(fs.Length))
                fs.Close()
                Try
                    myrow = mytable.Rows(record)
                    myrow.Item("imgfronte") = ImgData
                    cmdBuilder = New SqlCommandBuilder(dacnr)
                    dacnr.MissingSchemaAction = MissingSchemaAction.AddWithKey
                    'Salvo i dati modificati 
                    dacnr.Update(dtscnr)
                    Elimina_File()   'quì elimino l'immagine in modo che se riscansiono la stessa immagine non ho problemi 
                    visualizzacnrFronte(record, pictesseraFronte)
                       Catch ex As Exception
                    MessageBox.Show("Errore: " & ex.Message)
                Finally
                    If Not objconn Is Nothing Then
                        If objconn.State = ConnectionState.Open Then
                            objconn.Close()
                        End If
                        objconn.Dispose()
                    End If
                End Try
                MessageBox.Show("Aggiornamento Effettuato.", "Registrazione Avvenuta.", MessageBoxButtons.OK, MessageBoxIcon.Information)
                ms.Close()
            Else
                Elimina_File()
            End If
            _Dialog = Nothing
    
    Una volta aggiornata l'immagine nel DB la visualizzo ed ho pure risolto l'errore wia mettendo _Dialog a nothing come si vede nel codice.
  • Re: Errore accesso al file - wia.commondilaog

    Salvare immagini nel DB non è una buona idea e normalmente non si fa. Riachi, a lungo andare, che il db si corrompe e che diventi di dimensioni enormi, non gestibile, sia a livello di file system, sia per i backup e i restare.

    Nei sistemi in produzione si inserisce nel DB solo un riferimento ad un percorso (UNC) sul file system su cui trovare il file immagine.
  • Re: Errore accesso al file - wia.commondilaog

    oregon ha scritto:


    Salvare immagini nel DB non è una buona idea e normalmente non si fa. Riachi, a lungo andare, che il db si corrompe e che diventi di dimensioni enormi, non gestibile, sia a livello di file system, sia per i backup e i restare.

    Nei sistemi in produzione si inserisce nel DB solo un riferimento ad un percorso (UNC) sul file system su cui trovare il file immagine.
    Sono d'accordo per quello che dici ma dato che si tratta di un piccolo software ad uso familiare ho preferito così,quindi,in uso domestico le foto sono poche(Trattasi di carta identità e tessera sanitaria) e comunque è servito a me per continuare ad impare visto che ho sempre "Fame" di conoscenza informatica.
  • Re: Errore accesso al file - wia.commondilaog

    Ok, speriamo che il tuo prossimo post non riguardi la corruzione del DB...
Devi accedere o registrarti per scrivere nel forum
6 risposte