Newsgroup: it.comp.appl.access
Titolo: Controllo presenza record in tabella prima di accodarli nuovamente

Access 2003/2010
 
Ciao, in una form avente come origine controllo una tabella con un elenco di 
militari che di massima non varia salvo nuovi arrivi da aggiungere, usata 
per l'accodamento di record in altra tabella chiamata "Servizi". In detta 
form, su un pulsante uso il codice appresso indicato; come potete vedere ho 
provato a far controllare se sono già presenti i dati, nel caso per errore 
si cercasse di riaccodarli. Premesso che access avvisa perchè non permette 
di riaccodare lo stesso militare per lo stesso mese e lo stesso anno.
Domanda..... come posso gestire un controllo di questo genere per ogni 
accodamento che si cerca di effettuare, tenendo presente che se giunge un 
nuovo militare senza cancellare i precedenti dovrebbe accodare i dati del 
nuovo giunto avvisando comunque che gli altri sono già presenti. Preciso che 
le query di accodamento sono 2, precisamente una per i servizi ed una per 
licenze annuali (ferie).
Mi basta solo una dritta su come procedere.
Grazie, Bruno
 
 
Private Sub Accoda_Click()
 
    On Error GoTo Err_Accoda_Click
 
    Dim QryName As String
 
        If Me.NomeCombo = "" Then
            MsgBox ("Effettuare una selezione per creare i servizi o un 
elenco giorni licenze annuali")
            Me.NomeCombo.SetFocus
 
 
           '---------Inizio parte di codice non utilizzato --------
'ElseIf Me.NomeCombo <> "" And DLookup("[Anno]", "tbl_141_Servizi", "[Anno] 
= [Maschere]![frm_141_MilitariCaricati]![FiltroAnno]") = Me.[FiltroAnno] And 
DLookup("[Mese]",         "tbl_141_Servizi", "[Mese] = 
[Maschere]![frm_141_MilitariCaricati]![FiltroMese]") = Me.[FiltroMese] Then
            'QryName = Me.NomeCombo
            'MsgBox ("Attenzione! Periodo già presente.")
 '---------Fine parte di codice non utilizzato --------
 
        Else
 
            QryName = Me.NomeCombo
 
            DoCmd.OpenQuery QryName, acNormal, acEdit
 
           '---------Inizio parte di codice non utilizzato --------
            'CurrentDb.Execute "Qry_141_Accoda_Licenze_Annuali", 
dbFailOnError
            'DoCmd.OpenQuery "Qry_141_Accoda_Licenze_Annuali"
            'MsgBox ("Creazione effettuata!")
            '---------Fine parte di codice non utilizzato --------
 
            Dim S As String
            Dim M As String
 
            Recordset.MoveFirst
            Do Until Recordset.EOF
 
            M = DLookup("[Cogn]", "tbl_141_Militari", "[IdMil] = 
[Maschere]![frm_141_MilitariCaricati]![IdMil]")
 
            S = S & "(" & Recordset![IdMil] & " - " & [M] & "), "
            Recordset.MoveNext
            Loop
            MsgBox ("Creazione effettuata per " & Mid(S, 1, Len(S) - 2))
 
        End If
 
Exit_Accoda_Click:
    Exit Sub
 
Err_Accoda_Click:
    MsgBox Err.description
    Resume Exit_Accoda_Click
 
End Sub 
 
 

 Grazie, Bruno
 
visto che ti basta una dritta, non mi spingo sul codice che usi... la
dritta e' un "NOT IN (select...)" come filtro della tua query di
accodamento, ovvero andare per differenza... accoda tutto cio' che ho qui,
ma "non c'e' in..."
 
Se hai dubbi... chiedi.
 
-- 
------------
Pablitomf
Napoli sempre nel "Q"uore!
"mammasantissima" si nasce, non si diventa.
 
TheSpaceCowboy : 
Britos deve recuperare per arrivare in forma al prossimo
infortunio - 24/10/12