Comparaison de champs avec un nouvel enregistrement

Résolu
cyberangel02
Messages postés
25
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
5 août 2016
- 16 avril 2005 à 15:47
cyberangel02
Messages postés
25
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
5 août 2016
- 13 mai 2005 à 18:14
Bonjour,

J'entre des classes sur un formulaire.

Ce formulaire comporte 2 champs à remplir (Numéro de la classe, Intitulé de la classe). J'utilise un liaison adodc pour enregistrer mes champs dans la base de données.

Lorsque j'entre mon nouvel enregistrement, je souhaiterai qu'un message d'erreur s'affiche si l'enregistrement existe déjà dans ma base !

(je pense à quelque chose du genre :
1/ aller au premier enregistrement
2/ tant que l'on a pas atteint le dernier enregistrement faire...
3/ comparaison des champs avec ceux de la base
4/ si l'enregistrement existe déjà faire
5/ erreur cette classe existe déjà !
6/ fin tant que)

Merci d'avance.

@ntone reloaded!!!

4 réponses

cyberangel02
Messages postés
25
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
5 août 2016

13 mai 2005 à 18:14
Un développeur VB m'a donné un exemple et j'ai réussi à l'adapter à mon soft :

Private Sub Command1_Click()
Dim rep1
Dim rep2
Dim rep3
Dim m_AdoCnn As adodb.Connection
Set m_AdoCnn = New adodb.Connection
m_AdoCnn.Provider = "Microsoft.Jet.OLEDB.4.0"
m_AdoCnn.ConnectionString = "C:\Program Files\Microsoft Visual Studio\VB98\Biblio2004v2\biblio20.mdb"
m_AdoCnn.CursorLocation = adUseNone
m_AdoCnn.Open


Dim rs As New adodb.Recordset
Set rs = m_AdoCnn.Execute("SELECT Num_Cla FROM CLASSES")


If Text1 "" Or Text2 "" Then
rep2 = MsgBox("Il faut remplir tout les champs", vbExclamation + vbOKOnly, "Erreur")
Else
While Not rs.EOF
If Text1 = rs("Num_Cla") Then
rep3 = MsgBox("La classes existe déjà", vbInformation + vbOKOnly, "Erreur")
'lecture du recordset
GoTo IdemCla:
End If
rs.MoveNext
Wend
rs.Close

@ntone reloaded!!!
3
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
16 avril 2005 à 16:58
Salut
A mon avis, le plus simple serait de rechercher par un "Select ..." s'il existe un enregistrement avec les infos que tu veux insérer, ce serait beaucoup plus rapide !
Si le RecordSet.Count te renvoie autre chose que 0, c'est que l'enregistrement existe déjà.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cyberangel02
Messages postés
25
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
5 août 2016

16 avril 2005 à 19:20
Bonjour jack,

Merci pour ta réponse. Pourrais-tu me donner la structure de ton idée ? J'ai un peu de mal avec le langage VB, débutant que je suis.

@ntone reloaded!!!
0
cyberangel02
Messages postés
25
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
5 août 2016

21 avril 2005 à 18:17
Jack, pourrais-tu me faire un squelette de l'idée que tu m'as proposé (je ne sais pas comment écrire ça en VB).

Entre temps, j'ai essayé autre chose mais ça n'a pas marché... voici ce que j'ai tenté d'écrire :

Set rs = Adodc1.Recordset
rs.MoveFirst
While Not rs.EOF
If (Text1 = rs!Num_Cla) Then
MsgBox ("La classe existe déjà !")
Text1 = ""
End If
rs.MoveNext
Wend
rs.Close

@ntone reloaded!!!
0