Aggiornamento subform dopo modifica form

di il
2 risposte

Aggiornamento subform dopo modifica form

Buongiorno,
ho notato un post passato in cui si parlava di aggiornare i dati in un form1 dopo aver aperto e compilato un form2,
su suggerimento di Alex, con il codice qui di seguito e fin qui non ho problemi:

Private Sub Btn_Click()
   DoCmd.OpenForm "Form2", , , , , acDialog
   Me.Requery
End Sub
Il mio quesito è, se io avessi la seguente struttura:
form1 con al suo interno subform1 che apre form2 ??

ho provato il suddetto esempio ma la comboBox nella subform1 non si aggiorna dopo aver aperto e utilizzato la form2...
Ne desumo che non posso usare lo stesso metodo o sbaglio?
Ci sono altri metodi possibili?
E' uno studio mio personale nel tentativo di capire in maniera più approfondita la sincronia tra maschere, grazie.

2 Risposte

  • Re: Aggiornamento subform dopo modifica form

    Aggiornamento:
    Ho trovato il problema, non ha nulla a che fare con l'apertura di una form2 da subform1, mi sembrava illogico....

    Il problema è nella form di immissione immagini di cui copio il codice, laddove in seguito alla selezione e l'immissione di più immagini non mi fa il requery e mi mostra i campi aggiunti ma senza aggiornare Il campo contenente il nome dell'immagine (non la path)
    
    Tabella tblimage
    Campi: ImageID | txtImageName | txtFileName | Note
    
    'Di seguito allego il codice su Evento Click del tasto + (che consente l'aggiunta della/e immagine/i)
    
    Private Sub txtSource_Click()
       Dim obj As Object
        Dim rsimg As DAO.Recordset
        Dim fDialog As Office.FileDialog
        Dim varfile As Variant
        Dim varID
        Set obj = CreateObject("WScript.shell")
        Set rsimg = CurrentDb.OpenRecordset("tblImage", dbOpenDynaset)
        Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
        
    With fDialog
        .AllowMultiSelect = True
        .title = "Select Images To Add - Multiples OK"
        .InitialFileName = obj.specialfolders("desktop\DBLibri\IMG")
        .InitialView = msoFileDialogViewLargeIcons
        .Filters.Clear
        .Filters.Add "Images", "*.jpg,*.gif,*.png"
        If .Show = True Then
            For Each varfile In .SelectedItems
            Name varfile As CurrentProject.Path & "\DBLibri\IMG" & "\" & Right(varfile, Len(varfile) - InStrRev(varfile, "\"))
           rsimg.AddNew
           varID = rsimg![ImageID]
           'rsimg("ImageId") = varID 'rsimg("ImageId") = Me.ImageID
           rsimg("txtImageName") = CurrentProject.Path & "\DBLibri\IMG" & "\" & Right(varfile, Len(varfile) - InStrRev(varfile, "\"))
           
           rsimg.Update
           Next varfile
       End If
       rsimg.Close
    End With
    
    Me.Requery
    Me.Refresh
    
    End Sub
    
    Questa la uso per troncare la path e restituire il nome del file
    
    Private Sub CallDisplayImage()
        Dim nomeFile As String
        
        Me!txtImageNote = DisplayImage(Me!ImageFrame, Me!txtImageName)
        If IsNull(Me!txtFileName) Or Me!txtFileName = "" Then
            If IsNull(Me!txtImageName) Then
                Exit Sub
            Else
            nomeFile = Me!txtImageName
            Me!txtFileName = Right(nomeFile, Len(nomeFile) - InStrRev(nomeFile, "\"))
            End If
        Else
            Exit Sub
        End If
    End Sub
    
    la uso "su corrente"
    
    Private Sub Form_Current()
        CallDisplayImage
    End Sub
    
    Per come ho strutturato il tutto, il campo "txtFileName" viene valorizzato solo se vado al record specifico, altrimenti resta vuoto...
    il problema è li... ovviamente non mi è utile così, ma mi serve venga valorizzato insieme agli altri campi, grazie
  • Re: Aggiornamento subform dopo modifica form

    Problema risolto cambianto il codice di txtSource nel seguente modo
    
    Private Sub txtSource_Click()
       Dim obj As Object
        Dim rsimg As DAO.Recordset
        Dim fDialog As Office.FileDialog
        Dim varfile As Variant
        Dim varID
        Dim PathFile As String '(new var) 
        
        Set obj = CreateObject("WScript.shell")
        Set rsimg = CurrentDb.OpenRecordset("tblImage", dbOpenDynaset)
        Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
        
    With fDialog
        .AllowMultiSelect = True
        .title = "Select Images To Add - Multiples OK"
        .InitialFileName = obj.specialfolders("desktop\DBLibri\IMG")
        .InitialView = msoFileDialogViewLargeIcons
        .Filters.Clear
        .Filters.Add "Images", "*.jpg,*.gif,*.png"
        If .Show = True Then
            For Each varfile In .SelectedItems
            Name varfile As CurrentProject.Path & "\DBLibri\IMG" & "\" & Right(varfile, Len(varfile) - InStrRev(varfile, "\"))
           rsimg.AddNew
           varID = rsimg![ImageID]
           'rsimg("ImageId") = varID 'rsimg("ImageId") = Me.ImageID
           rsimg("txtImageName") = CurrentProject.Path & "\DBLibri\IMG" & "\" & Right(varfile, Len(varfile) - InStrRev(varfile, "\"))
           
           'modifica aggiunta -----------------
           PathFile = rsimg![txtImageName] 
            rsimg("txtFileName") = Right(PathFile, Len(PathFile) - InStrRev(PathFile, "\"))
            '--------------------------------------
           rsimg.Update
           Next varfile
       End If
       rsimg.Close
    End With
    CallDisplayImage
    Forms![Dettagli Prodotto]![Sottomaschera RelProdottiImages]![ImageID].Requery
    Me.Requery 
    Me.Refresh
    
Devi accedere o registrarti per scrivere nel forum
2 risposte