[VB6/ACCESS] Pas de doublons

Résolu
mymemorial Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -  
mymemorial Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -
Coucou à tous ^^

Alors voilà, en ce moment je bug dans deux trucs pour mon programme (enfin 3, mais chaque chose en son temps xD)

Une deuxième question en passant s'il vous plait :

Dans une base de donnée, existe une table ETUDIANT avec comme clé principale NUM.
Sur VB6, j'ai créé un form pour ajouter un nouveau étudiant dans ma table à partir de VB6 (et ca marche).

Ma question est : Comment faire pour refuser d'ajouter un étudiant avec un NUM déjà existant ?

Dans le sens ou j'ai un étudiant avec le numéro 84, je passe en VB6 ajouter un nouveau étudiant à ma BDD avec un numéro 84, et je voudrais qu'il y'ait un message d'erreur.

Un petit code ou on peut comparer les numéros d'étudiants d'une base de donnée avant d'en ajouter un nouveau s'il vous plait ?

[EDIT]
J'ai réussi à résoudre le premier problème, merci ^^

Merci d'avance~~ ^^
A voir également:

5 réponses

Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

Tu peux mettre au début de ta fonction : On Error Resume Next.Ensuite en fin de fonction, tu testes l'erreur pour afficher un message:

Public Function InsertItem()
'....

On Error Resume Next

'ici le code pour faire l'insertion
'....
'....

   If Err.Number <> 0 Then
      Msgbox "L'enregistrement a échoué ...", VbCritical, "Erreur BDD"
   End If
End Function


;o)
1
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
bonjour :)

alors, sur 2 problemes (dont 1 seul expliqué), qui en 4 lignes en deviennent 3, t en a resolu 1... lequel ??

quels sont tes 2 autres problemes ?

et je suis sur que la communauté voudrais savoir ce que tu as fais pour résoudre ton probleme (qui, je suppose, devait etre l'histoire de vérifier si un enregistrement existait déjà ) ;)
donc un ptit bout de code ne serait pas de refus :p
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

Si le champ NUM de ta table ETUDIANT est déclaré en clé primaire, tu n'as pas de souci, l'ajout est impossible. Le mieux est de déclaré "NuméroAuto" le champ de la clé primaire, tu n'auras plus à t'en occuper, Access gère tout seul la clé primaire.

;o)
0
mymemorial Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
Merci à vous deux pour vos réponses =)

jjsteing > LOL désolé pour la confusion xD

Mon premier problème était l'identification, à savoir comment utiliser les logins et mots de passes, stockés dans une base de donnée Access (ETUDIANT) sous une table ID, dont les champs sont respectivements LOGIN et PASS.
Le form VB6 contiendra deux champs textes (Login & MDP) et un bouton pour s'identifier et accéder au programme.

En effet, pour ceux que ca intéresse, le code, testé & prouvé ;D

Private Sub Command1_Click()
Dim db as Database
Dim rs as Recordset
Dim Req as String

Req = "SELECT * FROM IDENTITE WHERE LOGIN ='" & Text1 & "' AND PASS ='" & Text2 & "'"
set db = OpenDatabase(app.Path & "/Stagiaires.mdb")
set rs = db.OpenRecordset(Req, dbOpenDynaset)

if rs.RecordCount <> 1 then
MsgBox ("Error")
Else
Form2.Show
End if

End sub


Perso' je buggais au niveau de la condition (RecordCount <> 1), en même temps faut dire que je suis débutant dans le domaine =p

Donc, la question que je demande maintenant, la 2nd, est : Comment afficher un message d'erreur (MsgBox) en entrant une clé principale en double (à savoir dans mon exemple, on a saisi 82 pour le NUMETUD -Clé principale de la base- d'un étudiant, on veut ajouter un autre étudiant ayant le même numéro, comment avoir une alerte "Champ déjà pris" au lieu du bug du programme ? =p)

Et enfin la 3ème question dont je crois qu'il serait mieux de lui créer un sujet séparé, c'est par rapport à Crystal Reports 10.
Je veux créer deux rapports texte dans le genre : "NOMETUD PRENOMETUD dont le numéro est NUMETUD, étudie à ETABETUD en NIVEAUETUD".
Les données des NOMETUD seront biensur prises par la fiche de l'étudiant en question depuis une base de donnée.

Mon problème exact est le suivant :

J'ai un form VB6 ou il faudra choisir le numéro de l'étudiant (NUMETUD étant une clé principale) puis valider.
Le rapport Crystal Reports .rpt (certificat de scolarité par exemple) devra s'afficher avec les données de l'étudiant dont on a saisi le NUMETUD à la place des NOMETUD, PRENOMETUD...

Polux31 > Coucou ^^
En effet, tu as raison, Access empêche l'ajout d'un enregistrement avec une clé principale en double, mais en fait, je me demandais si c'était possible d'ajouter un message d'erreur personnalisé (dans le genre un MsgBox ("Erreur"), plutot que le programme bug et que tu sors complètement de l'application (je ne sais pas si vous comprenez ce que je veux dire...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mymemorial Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
BINGO! =)

C'est parfait, exactement ce que je voulais ^^
Merci beaucoup pour ton aide, Polux31!
Je crois qu'il serait préférable de créer un nouveau sujet pour mon 3ème problème =p

See ya! ;D
0