Condividi tramite

Routine per verificare la compilazione di alcuni campi in molte tabelle relazionate tra loro.

Anonimo
2023-01-16T14:24:41+00:00

Buon pomeriggio a tutti.

Ho un database molto complesso e con molti oggetti creati.

Ho molte tabelle in relazione tra loro con molti campi da compilare.

Chiedo a voi esperti di poter creare una routine da abbinare ad un pulsante di comando per poter verificare la compilazione di 2 campi per ogni maschera creata sulle molteplici tabelle del database.

Cioè, ad esempio, al lancio della funzione e/o routine VBA creare un elenco dei campi non compilati relativi alle tabelle processate.

Questo mi è necessario poichè le maschere in relazione con la prima (Anagrafica) sono una trentina e non sempre riesco a compilare i dati di mio interesse ( ad esempio se dovessi dimenticare di aprire una determinata maschera per inserire altri dati dello stesso dipendente).

Spero di essere stato chiaro.

Ciao, Nicola.

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

Risposta accettata dall'autore della domanda

domenico laurenza 9,900 Punti di reputazione Moderatore volontario
2023-01-19T13:27:21+00:00

Ciao prova col seguente (in grassetto le modifiche)

Tabella = "tbl\_Sottoconti" 

**DoCmd.SetWarnings False** 

For Each myRel In CurrentDb.Relations 

    If myRel.Table = Tabella Then 

       Set myRs = CurrentDb.OpenRecordset("Select \* From [" & myRel.ForeignTable & "]") 

       Do While Not myRs.EOF 

          If DLookup("In\_Forza", "TblAnagrafica", "Id\_Anagrafica = " & myRs(0)) = -1 Then 

             For j = 0 To myRs.Fields.Count - 1 

                 If Len(myRs(j) & "") = 0 Then 

                    **DoCmd.RunSQL "INSERT INTO TblProva ( Testo\_Unico ) SELECT '" & myRel.ForeignTable & " - " & myRs(0).Name & ": " & myRs(0) & " - " & myRs(j).Name & "'"** 

                 End If 

             Next j 

          End If 

          myRs.MoveNext 

      Loop 

    End If 

Next 

Ciao Mimmo

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

14 risposte aggiuntive

Ordina per: Più utili
  1. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2023-01-18T11:34:20+00:00

    Ciao Nicola,

    proviamo a modificare il pezzo di codice aggiungendo le istruzioni in grassetto:

    For Each myRel In CurrentDb.Relations 
    
        If myRel.Table = Tabella Then 
    
           Set myRs = CurrentDb.OpenRecordset("Select \* From [" & myRel.ForeignTable & "]") 
    
           Do While Not myRs.EOF 
    
              **If DLookup("In\_Forza", "TblAnagrafica", "Id\_Anagrafica = " & myRs(0)) = -1 Then** 
    
                 For j = 0 To myRs.Fields.Count - 1 
    
                     If Len(myRs(j) & "") = 0 Then 
    
                        Debug.Print myRel.ForeignTable & " - " & myRs(0).Name & ": " & myRs(0) & " - " & myRs(j).Name 
    
                     End If 
    
                 Next j 
    
              **End If** 
    
              myRs.MoveNext 
    
          Loop 
    
        End If 
    
    Next 
    

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-01-18T10:42:25+00:00

    Ciao Mimo, buon giorno.

    Ci sto provando ma ottengo questo messaggio di errore:

    Cosa sbaglio nella funzione DLookup.

    Ciao, Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-01-17T20:04:40+00:00

    Ciao Mimmo.

    Ci provo a fare quanto mi suggerisci e ti aggiorno.

    Speriamo bene.

    Ciao, Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2023-01-17T15:14:51+00:00

    Ciao Nicola,

    sono fuori casa quindi ti do solo suggerimenti.

    Per avere solo quelli in forza potresti inserire una dlookup sulla tabella Anagrafiche immediatamente prima del print.debug ed effettuare il test.

    Quindi puoi salvare il risultato in una tabella di appoggio al posto del print.debug.

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento