Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 10h41   #1
Invité de passage
 
Inscription : septembre 2003
Messages : 11
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 11
Points : 2
Points : 2
Par défaut Problème de test sur plusieurs champs dans une table

Bonjour à tous,

j'ai un problème lorsque je veux faire un contrôle entre deux champs d'un formulaire de création et la table où doit-être inséré les nouvelles données.
En fait, je contrôle que la personne n'existe pas dans la base, en faisant un test sur son Nom et sa date de naissance.
Je test les champs suivant:

Le champ "nom" table OPF_T_Debiteur ---> champ Debiteur_C_Nom ---> sous format texte

Le champ "date de naissance" table OPF_T_Debiteur ---> champ Debiteur_D_DateNaissance ---> sous format Date/heure

Voici le code pour le teste...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Dim Resultat1 As Integer
    Dim Resultat As Integer
    Dim db As Database
    Dim rs As Recordset
    Dim StrSQL As String
 
    StrSQL = "OPF_T_Debiteur"
    Set db = CurrentDb()
    Set rs = db.OpenRecordset(StrSQL)
 
 
    rs.Index = "Debiteur_C_Nom"
    rs.Seek "=", Debiteur_C_Nom
 
        If rs.NoMatch = True Then
            Resultat = 0
        Else
            Resultat = 1
        End If
 
    rs.Index = "Debiteur_C_NumdebGIOP"
    rs.Seek "=", Debiteur_C_NumdebGIOP
 
        If rs.NoMatch = True Then
            Resultat1 = 0
        Else
            Resultat1 = 1
        End If
 
 
    If Resultat = 1 And Resultat1 = 0 Then
 
        Dim Reponse1
        Reponse1 = MsgBox("Un débiteur porte le même Nom, mais n'a pas le même numéro d'identification dans la base de données... voulez vous continuer:", vbYesNo)
 
            If Reponse1 = vbNo Then
                Exit Sub
            Else
                Module6.AdressePremiereInscription = 1
                Module4.VarNouveauDebiteur = 2
                Module2.VarNumGiopDeb = Debiteur_C_NumdebGIOP
                Module1.VarNomDebiteurNouvelleArchivage = Debiteur_C_Nom
 
                DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
                DoCmd.OpenForm "OPF_F_NouvelleDonneeArchivage", acNormal
                DoCmd.Close acForm, "OPF_F_NouveauDebiteur"
            End If
 
    ElseIf Resultat = 1 And Resultat1 = 1 Then
 
        Dim Reponse2
        Reponse2 = MsgBox("Un débiteur porte le même Nom et a le même numéro d'identification qu'un débiteur déjà présent dans la base de données... voulez vous continuer:", vbYesNo)
 
            If Reponse2 = vbNo Then
                Exit Sub
            Else
                DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
                Module6.AdressePremiereInscription = 1
                Module4.VarNouveauDebiteur = 2
                Module2.VarNumGiopDeb = Debiteur_C_NumdebGIOP
                Module1.VarNomDebiteurNouvelleArchivage = Debiteur_C_Nom
                DoCmd.OpenForm "OPF_F_NouvelleDonneeArchivage", acNormal
            End If
 
    Else
         Module6.AdressePremiereInscription = 1
         Module4.VarNouveauDebiteur = 2
         Module2.VarNumGiopDeb = Debiteur_C_NumdebGIOP
         Module1.VarNomDebiteurNouvelleArchivage = Debiteur_C_Nom
 
         DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
         DoCmd.OpenForm "OPF_F_NouvelleDonneeArchivage", acNormal
         DoCmd.Close acForm, "OPF_F_NouveauDebiteur"
    End If
Quand je rentre un débiteur qui existe déjà, voici le message d'erreur qui ressort du code qui est exécuté:

Erreur d'exécution "3800"
'Debiteur_D_DateNaissance n'est pas un index de cette table'

voilà la ligne ou il signale l'erreur:

Code :
rs.Index = "Debiteur_C_NumdebGIOP"
J'ai contrôlé les paramètres dans la table concernant ce champ,
Il est indexé avec doublons autorisés.
Il exécute sans problème le premier test sur le champ "Debiteur_C_Nom", mais il butte sur le deuxième test sur le champ "Debiteur_D_DateNaissance"

Si j'essaye un test uniquement sur le champ 'Debiteur_D_DateNaissance' (je supprimer le test sur le champ Debiteur_C_Nom), c'est le même problème, il me signale l'erreur. Même problème avec d'autres champ de la table. Cela fonctionne uniquement avec le champ 'Debiteur_C_Nom'.

Pouvez-vous me dire se qui pourrait clocher...

Je vous remercie déjà infiniment pour vos éclairage sur la question.

Avec mes meilleurs messages.

Sylvain
Cavart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 14h51   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 873
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 873
Points : 10 735
Points : 10 735
Envoyer un message via MSN à jpcheck
Salut,

pour ton test d'existence, je te proposerai une syntaxe plus elaboree mais plus directe :
Code :
1
2
3
4
5
If Dcount("Debiteur_C_Nom","OPF_T_Debiteur","Debiteur_C_Nom='" & Debiteur_C_Nom & "' and Debiteur_D_DateNaissance=#" & format(Debiteur_D_DateNaissance ,"MM/DD/YYYY") & "#")=0 then
msgbox "pas encore d'insert"
Else
msgbox "existe déjà"
End if
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h34.


 
 
 
 
Partenaires

Hébergement Web