IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Déctecter un doublon avant enregistement


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué Avatar de BERRACHED SAID
    Inscrit en
    Janvier 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2009
    Messages : 192
    Points : 125
    Points
    125
    Par défaut Déctecter un doublon avant enregistement
    Bonjour le Forum

    avant de pouvoir passer un enregistrement je voudrais s'acquérir de l'existence de ce dernier dans la table afin d'éviter les doublons pour cela j'ai fait un petit code que je vous soumis parce que sincèrement je ne suis pas convaincue
    j'aimerais bien que vous m'aider a le corrigé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Private Sub Verif1()
    Dim rs As String
    Dim strNom As String
    Dim strPrenom As String
    Dim strRente As String
    Dim strEcheance As String
    Dim strAnnee As String
    Dim strMontant As String
    'Définir les variables
    strNom = Text5.Text
    strPrenom = Text6.Text                                    'Nom de la Table = TReglement
    strRente = Text4.Text                                     'Nom du rs = rsReglement
    strEcheance = Label3.Caption
    strAnnee = Label11.Caption
    strMontant = Text3.Text
    Set conn = New ADODB.Connection
    conn.Provider = "Microsoft.jet.OLEDB.3.51"
    conn.ConnectionString = App.Path & "\GRentes.mdb"
    conn.Open
    Set rsReglement = New ADODB.Recordset
    'afin de les comparer à la table
    rs = "Select * from TReglement where Nom = strNom And Prenom = strPrenom And Rente = strRente and Echeance= strEcheance and Annee= strAnnee and Montant= strMontant"
    rsReglement.Open rs, conn, adOpenKeyset, adLockOptimistic, adCmdText
    rsReglement.MoveLast
    If rsReglement.EOF Then
        ' s'il y rien on continue le deroulement
        GoTo Suite
    Else
    'Sinon
        MsgBox "ce Reglement existe Déja."
    End If
    Suite:
    With rsReglement
    .AddNew
    .Fields "NumRegl" = Text12.Text
    .Fields "DateReglement" = ReyTextBox1
    .Fields "Rente" = Text4.Text
    .Fields "Nom" = Text5.Text
    .Fields "Prenom" = Text6.Text
    .Fields "Adresse" = Text7.Text
    .Fields "Echeance" = Label3.Caption
    .Fields "Annee" = Label11.Caption
    .Fields "Montant" = Text3.Text
    .Update
    End With
    End Sub
    1)Question en Rouge c'est le Nom de la table doit-je mettre le nom de la table ou de rs ?

    2)Question: la condition"If rsReglement.EOF Then" est-elle juste pour pouvoir déclencher le processus de comparaison

    Merci d'avance pour votre aide

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je ne comprends pas bien cette portion de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    If rsReglement.EOF Then
        ' s'il y rien on continue le deroulement
        GoTo Suite
    Else
    'Sinon
        MsgBox "ce Reglement existe Déja."
    End If
    Suite:
    With rsReglement
      .AddNew
    Si je comprends bien, le addnew est tojours exécuté !

    Ca serait pas plutot quelque chose comme çà qu'il faudrait?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If not rsReglement.EOF Then
        ' s'il y rien on continue le deroulement
        Exit Sub
    End If
    With rsReglement
      .AddNew
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 171
    Points
    17 171
    Par défaut
    Salut Delbeke
    De plus la rédaction de la requête n'est pas bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rs = "Select * from TReglement where Nom = strNom And Prenom = strPrenom And Rente = strRente and Echeance= strEcheance and Annee= strAnnee and Montant= strMontant"
    BERRACHED SAID tu passes le nom de la variable, non pas son contenu (sa valeur).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    rs = "Select * from TReglement where" & _
        " Nom = ' " & strNom & _
        "' And Prenom = '" & strPrenom & _
        "' And Rente = '" & strRente & _
        "' And Echeance = '" & strEcheance & _
        "' And Annee = '" & strAnnee & _
        "' And Montant = '" & strMontant & "'"
    Encore faut il que les champs Rente, Echeance, strAnnee et strMontant ,dans la table TReglement, soient des champs de type String.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre habitué Avatar de BERRACHED SAID
    Inscrit en
    Janvier 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2009
    Messages : 192
    Points : 125
    Points
    125
    Par défaut
    Bonjour le Forum

    Merci Delbek et ProgElect de m'avoir éclairé de vos lumières c'est la ou j'avais des doutes donc encore une fois Merci.

    il faut pas que j'oublie de cocher "Resolu" j'ai déjà un carton jaune le deuxième est un rouge je risque de louper le prochain matche.......

    allez bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/07/2009, 18h48
  2. [MySQL] Verification doublon avant creation enregistrement
    Par idamarco dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 07/02/2009, 17h08
  3. Réponses: 9
    Dernier message: 28/10/2008, 21h30
  4. Verification de doublon avant UPDATE
    Par bmad1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/10/2007, 16h58
  5. [MySQL] Vérification de doublons avant insertion
    Par Nicos77 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 09/12/2005, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo