Allegare uno o piu' file ad un campo di tipo allegato.

Anonimo
2014-12-09T16:20:43+00:00

Buon pomeriggio amici, mi sono imbalalto e non riesco proseguire con il codice che vi allego.

Ho creato un campo (Tipo dati "Allegato") ed ho inserito questo controllo nella maschera dalla quale faccio partire il codice sottostante per selezioanare uno o più file.

Il problema è che dopo averli selezionati non mi compaiono nella casella di testo di tipo allegato sulla maschera , invece se li seleziono ( i files intendo) dalla tabella tutto funziona.

Vorrei che quello che faccio dalla tabella lo facessi da codice VBA.

Ringrazio tutti colotro che vorranno darmi una mano. Ciao Nicola.

Private Sub Comando240_Click()

   Dim fDialog As Office.FileDialog

   Dim varFile As Variant

      Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

   With fDialog

           .AllowMultiSelect = True

      .Title = "Seleziona uno o più File"

      ' Clear out the current filters, and then add your own.

      .Filters.Clear

      .Filters.Add "Access Databases", "*.MDB"

      .Filters.Add "Access Projects", "*.ADP"

      .Filters.Add "All Files", "*.*"

           If .Show = True Then

                 For Each varFile In .SelectedItems

         Me.Allegati = varFile '' ecco da qui in poi non riesco, ho fatto tante prove ma niente    

Next

      Else

         MsgBox "You clicked Cancel in the file dialog box."

      End If

   End With

End Sub

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

4 risposte

Ordina per: Più utili
  1. Anonimo
    2014-12-10T07:45:51+00:00

    Ciao Sandro, ti ringrazio come sempre per il tuo prezioso e gentile intervento, ho inserito quanto tu mi hai segnalato, ho eseguito varie prove e ho notato queste due anomalie e te le segnalo:

    1. non riesco ad allegare più file nel controllo di tipo allegato, bensì solo l'ultimo selezionato;
    2. nel momento in cui seleziono il file già importato nell'apposito controllo, non posso eseguire le operazioni di cancellazione del file (cioè vengomo visualizzati i classici pulsanti abbinati al controllo Allegato :Visualizza- Salva con nome -Salva Tutto e non il pulsante Annulla e Rimuovi.   

    Come faccio ad eliminare quel file quando viene inserito nel controllo Allegato per errore?

    In attesa di un ntuo cortese riscontro colgo l'occasione per augurati buon lavoro e ringraziarti infinitamenete per la tua disponibilità e competenza.

    Ciao, Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-12-09T22:01:09+00:00

    ciao Nicola,

    immaginavo che l'obiettivo fosse quello descritto in questo tuo ultimo post.

    si la listbox deve essere non associata per come l'ho pensata io.

    allora intanto prova così.

    Estrapola tutto il fileDialog in una function allì'interno del modulo di classe della maschera e copia quanto sotto nel command button che usi per allegare il file.

    se il record è null ci sono dei controlli aggiuntivi per evitare l'errore che ci manifesta, non ho verificato bene la modalità di generazione.

    Modifica ovviamente il campo allegato nella tabella come allegato....( !!!! ) è impostato come testo nel demo che hai pubblicato.

    ho testato il tutto e gli allegati vengono inseriti nella tabella.

    ciao, Sandro.

    Private Function ffFileDialog() As Variant

       Dim fDialog As Office.FileDialog

       Dim varFile As Variant

       Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

       With fDialog

          ' Allow user to make multiple selections in dialog box

          .AllowMultiSelect = True

          ' Set the title of the dialog box.

          .Title = "Please select one file"

          ' Clear out the current filters, and add our own.

          .Filters.Clear

          .Filters.Add "All Files", "*.*"

          .Filters.Add "Access Databases", "*.MDB"

          .Filters.Add "Access Projects", "*.ADP"

          .Filters.Add "Access Projects", "*.ACCDB"

          .InitialFileName = Application.CurrentProject.Path & ""

          ' Show the dialog box. If the .Show method returns True, the

          ' user picked at least one file. If the .Show method returns

          ' False, the user clicked Cancel.

          If .Show = True Then

            ffFileDialog = .SelectedItems(1)

            Else

          End If

       End With

    End Function

    poi copia questo nel comman button allegato:

    Dim rst As dao.Recordset2

    Dim rstAtt As dao.Recordset2

    Dim fld As dao.Field2

    Dim dbs As dao.Database

    Dim strPath As String

    Dim strPk As String

    strPath = Nz(ffFileDialog())

    If strPath = "" Then Exit Sub

    Set dbs = DBEngine(0)(0)

    Set rst = dbs.OpenRecordset("SELECT * FROM  tblAccettazione WHERE matricola = '" & Me.Matricola & "'")

    Set fld = rst!Allegato

    Set rstAtt = fld.Value

    rst.Edit

    rstAtt.AddNew

    rstAtt!FileData.LoadFromFile strPath

    rstAtt.Update

    rst.Update

    strPk = Me.Matricola

    Me.Requery

    Me.RecordsetClone.FindFirst "[matricola] = '" & strPk & "'"

    Me.Bookmark = Me.RecordsetClone.Bookmark

    ' This requires a reference to the Microsoft Office 11.0 Object Library.

    Set dbs = Nothing

    Set rstAtt = Nothing

    Set rst = Nothing

    Set fld = Nothing

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-12-09T20:06:28+00:00

    Ciao Sandro che piacere sentirti presente ad aiutarmi, ho fatto come tu dici ma non visualizzo i files selezionati  nella casella di riepilogo.

    Ho creato nella TblAccettazione il campo chiamato Allegato,l' ho impostato come casella di riepilogo con

    Tipo origine riga a :Elenco valori .

    Invece, se inserisco sulla maschera un controllo casella di riepilogo non associato funziona  bene

     ma in realtà non posso utilizzare questo controllo poiché non essendo associato non varia al variare del nominativo al quale devo inviare la e-mail con il file/file allegato/i

    Ciao Sandro, a presto.

    P.S per non crearti confusione ti ho allegato per prova il file a questo link:  http://1drv.ms/1sahKKG

    ed il codice su cui stiamo discutendo l'ho inserito nel pulsante con l'etichetta chiamta "Allega File"

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-12-09T19:38:14+00:00

    ciao Nicola,

    allora procediamo per gradi....

    allegato di me.allegato è la text box in cui scrivere i files?

    sei certo sia la scelta migliore?

    non sarebbe meglio una casella ti riepilogo...

    mi spiego meglio...

    se ho capito bene lo scenario e scrivi i file nella caselle di testo in questo modo :

    Me.Allegati =me.allegato & " " &  varFile .

    scrivi i file uno attaccato all'altro...

    se non concateni la stringa, nel modo che in cui stai procedendo in varFile hai solo l'ultimo file invece con il ciclo a te interessano tutti perchè qui ci dici :

    .AllowMultiSelect = True

    se invece imposti una casella di riepilogo li vedi uno sotto all'altro....prova un po'...

    con la casella di riepilogo impostata ad elenco valori procedi così :

    Me.tuaListBox.AddItem varFile.

    ciao, Sandro

    La risposta è stata utile?

    0 commenti Nessun commento