Importazione allegati

di il
3 risposte

Importazione allegati

Buonasera a tutti
avrei bisogno di un'aiuto.
Un cliente ha la necessità di "inserire" in una tabella di msaccess 2016 64bit, nel campo "allegato" un file txt di piccolissime dimensioni circa 10kb.
So che il campo allegato non è dei migliori, ma il database è così strutturato da tempo, e non posso cambiarlo con un campo testo dove passare il path al file.
Il nome del file è presente in una form all'interno del campo "Text1", dove trovo appunto il path completo del file
Dovrei riuscire tramite codice ad importare tale file, nel campo "allegato" della tabella "clienti".
In passato ho affrontato la cosa ma solo selezionando "manualmente" il file e usando il seguente codice :

Dim fd As FileDialog
    Dim fSelected As Variant
    Const cDefaultPath As String = "C:\app\allegati"
    Set fd = FileDialog(msoFileDialogFilePicker)
    With fd
        .Title = "Seleziona i files da allegare"
        .AllowMultiSelect = True
        .ButtonName = "Allegare"
        '.Filters
        '.FilterIndex
        .InitialFileName = cDefaultPath
        .Show
    If .SelectedItems.Count > 0 Then
            Me.Recordset.Edit
                For Each fSelected In .SelectedItems
                    AddAttachment rstCurrent:=Me.Recordset, strFieldName:="Allegato", strFilePath:=fSelected
                Next fSelected
            Me.Recordset.Update
            
        End If
    End With
    
    Set fd = Nothing

ora il tutto dovrebbe avvenire in automatico senza selezionare il file. Il file ha sempre lo stesso nome, è l'unico presente nella directory e viene eliminato e ricreato per ogni singolo record a cui va fatto update
Secondo voi come mi posso approcciare al problema?
Grazie a tutti
Andrea

3 Risposte

  • Re: Importazione allegati

    Io non ho capito nulla... se il codice che hai postato funziona in caso di Selezione da FileDialog, quale problema incontri a realizzare una funzione che fa la stessa cosa pasando il Nome del File...?
    
    AddAttachment rstCurrent:=Me.Recordset, strFieldName:="Allegato", strFilePath:=NomeDelTuoFile
  • Re: Importazione allegati

    Grazie per la risposta
    ho apportato le modifiche, come da te cconsigliato, in più ho tolto il ".show" della dialog per allegare il file.
    
    Dim fd As FileDialog
        Dim fSelected As Variant
        Dim file As String
        file = Forms![maschera1]![file]
       Const cDefaultPath As String = "C:\app\allegati"
        Set fd = FileDialog(msoFileDialogFilePicker)
        
        With fd
            .Title = "Seleziona i files da allegare"
            .AllowMultiSelect = False
            .ButtonName = "Allega"
            '.Filters
            '.FilterIndex
            .InitialFileName = cDefaultPath
         '.Show
            If .SelectedItems.Count > 0 Then
                Me.Recordset.Edit
                    For Each fSelected In .SelectedItems
                        AddAttachment rstCurrent:=Me.Recordset, strFieldName:="Allegato", strFilePath:=file
                    Next fSelected
                Me.Recordset.Update
                
            End If
        End With
        
        Set fd = Nothing
    
    il mio problema ora, è che funziona tutto regolare con il ".show". se lo tolgo invece va sino a che non chiudo e riapro l'accdb.
    se chiudo e riapro non allega il file nel campo "allegato"
    Perchè ? boh!

    Grazie
  • Re: Importazione allegati

    Scusa ma ragiona... a cosa serve il FILE DIALOG se non serve...? Gioco di parole voluto

    Secondo me hai copiato quel codice e non sai cosa fa...!!!!!
    
    
       Dim file As String
       file = Forms![maschera1]![file]
       Const cDefaultPath As String = "C:\app\allegati"
        
       Me.RecordsetClone.Edit
       AddAttachment rstCurrent:=Me.RecordsetClone, strFieldName:="Allegato", strFilePath:=file
    
       Me.RecordsetClone.Update
    
    Detto questo la funzione AddAttachment che richiami per noi è NASCOSTA...!!
Devi accedere o registrarti per scrivere nel forum
3 risposte