Traitement des doublons en vb 2005 [Résolu]

Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
- - Dernière réponse : Calade
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
- 13 avril 2011 à 17:34
Bonjour,
j'ai une BDD access.
dans mon form j'ai une procedure d'ajout, alors ce que je veux c'est quand je veux ajouté par exemple un employé il fait premièrement une recherche dans la BDD alors s'il existe il m'affiche un Msgbox "employé deja existant" si non il valide mon ajout.
merci
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
3
Merci
Bonjour,

En quoi programmes-tu ?

- Directement sous Access, dans ce cas cela n'a rien à voir avec VB 2005.
- En SQL alors même réponse.
- En VB 2005, Access ne servant que de SGBD ?

Dans tous les cas postes le code que tu as fait et on te guidera.

PS: Uniquement le code de la recherche, si tu postes 3 pages de code personne ne les lira.


Calade

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Calade
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
0
Merci
Bonjour,
alors je développe avec VB 2005.avec une base de données acess
voilà le code que j'ai :

dans le Form_Load[i]/i

'connexion base de données
conn "provider microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\amc.mdb;"
cnx = New OleDbConnection
cnx.ConnectionString = conn
cnx.Open()
'-----------------------------------------------------------

'exécution de la commande(cmd),
'du dataadapter (dta),
'du dataset(dts),
'de la datatable (dtt)
'sql=>cmd=>dta
'cnx=>cmd
'dta=>dts=>dtt
sql = "select police.* from police"
cmd = New OleDbCommand(sql)
dta = New OleDbDataAdapter(cmd)
cmd.Connection() = cnx
'chargement du DataSet à partir du DataAdapter
dta.Fill(dts, "police")
'chargement de la DataTable à partir du DataSet
dtt = dts.Tables("police")

dans le button-Ok [i] /i

Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
'controle des champs-si un champ n'est pas rempli fin de procédure
'Try
If TextBox1.Text "" Or TextBox2.Text "" Or TextBox3.Text = "" Or TextBox5.Text = "" Or TextBox6.Text = "" Or TextBox7.Text = "" Or TextBox8.Text = "" Or TextBox9.Text = "" Or TextBox10.Text = "" Or TextBox11.Text = "" Or TextBox12.Text = "" Or TextBox13.Text = "" Or TextBox14.Text = "" Or TextBox15.Text = "" Or TextBox16.Text = "" Or MaskedTextBox1.Text = "" Then
MessageBox.Show("Vous devez remplir tous les champs !", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error)

Me.TextBox1.Focus()

Exit Sub
End If
sql = "select police.* from police"
cmd = New OleDbCommand(sql)
dta = New OleDbDataAdapter(cmd)
cmd.Connection() = cnx
'chargement du DataSet à partir du DataAdapter
dta.Fill(dts, "police")
'chargement de la DataTable à partir du DataSet
dtt = dts.Tables("police")

'crátion d'une nouvelle ligne avec les données des textbox
dtr = dts.Tables("police").NewRow
dtr("code") = Me.TextBox1.Text
dtr("souscripteur") = Me.TextBox2.Text
dtr("adresse1") = Me.TextBox3.Text
dtr("adresse2") = Me.TextBox4.Text
dtr("cville") = Me.TextBox5.Text
dtr("ville") = Me.TextBox6.Text
dtr("tpcontrat") = Me.TextBox7.Text
dtr("baseremb") = Me.TextBox8.Text
dtr("rgmbase") = Me.TextBox9.Text
dtr("produit") = Me.TextBox10.Text
dtr("deffet") = Me.MaskedTextBox1.Text
dtr("reglement") = Me.TextBox11.Text
dtr("modereg") = Me.TextBox12.Text
dtr("pvente") = Me.TextBox13.Text
dtr("nom") = Me.TextBox14.Text
dtr("adresse") = Me.TextBox15.Text
dtr("villep") = Me.TextBox16.Text

'ajout de la ligne dans le DataSet
dts.Tables("police").Rows.Add(dtr)


'création et exécution du commandbuilder
'pour mettre à jour le DataAdapter
cmdb = New OleDbCommandBuilder(dta)

'mise à jour des données du DataAdapter
'à partir du commandbuilder
dta.Update(dts, "police")
MessageBox.Show("Police ajoutée avec succés", "Administrateur...", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
'on vide le dataset pour le recréer avec
'les nouvelles données
dts.Clear()
dta.Fill(dts, "police")
dtt = dts.Tables("police")
'**********************************************************
'mise à jour de la datagrid
'DataGrid1.SetDataBinding(dts, "produ")
'vider les textbox
Dim frm As New Form1
Me.Close()
frm.Show()

'aller au début du fichier
rownum = 0

Button16.Enabled = True
Button19.Enabled = False 'valider

'Catch ex As Exception
'End Try

End Sub
Commenter la réponse de elwadeh
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Comme je te l'ai dit dans mon précédent post, il fallait poster uniquement le code qui sert à rechercher un nom déjà existant, or là je n'ai rien vu qui s'en rapproche.

Poste UNIQUEMENT le code SQL qui te sert à savoir si un employé existe déjà ou non. Et en utilisant la 3ème icône à partir de la droite si c'est du code VB.


Calade
Commenter la réponse de Calade
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
0
Merci
Bonjour,
justemet ce que je cherche c'est le code pour detecter si l'enregistrement exite ou non.
alors le code que j'ai posté c'est pour l'ajout d'un nouveau enregistrement.
ce que je veux c'est quand je saisie le numéro de police dans le textbox et je veux valider il faut qu'il me bloque pour numéro de police déjà existant.
merci encore pour votre intention à mon problème.
Commenter la réponse de elwadeh
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Fais une requête SQL du style

MyRecordset.Open SELECT MyField INTO MyTable
WHERE MyField = MyValue

IF MyRecordset.Recordcount > 0 'Enreg déjà existant

où MyRecordset est un recordset valide qui recevra les éventuels enregistrements trouvés.
MyField = le champ à chercher
MyTable = Ta table
MyValue = la valeur de ta textbox

Attention, 2 choses, vérifie que ton recordset à sa propriété CursorLocation = adUseClient sinon tu n'auras pas accès au Record>Count.
En plus la clause WHERE est à modifer en tenant compte du type du champ recherché en sachant que la valeur d'un TextBox est du type String.

Je t'ai mis ça de tête, en cas de problème poste ton erreur.


Calade
Commenter la réponse de Calade
Messages postés
136
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
22 mars 2014
2
0
Merci
Bonjour,
je mis ce code au début du code du button ok ????
Commenter la réponse de germany1970
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Tu mets ce code de manière à ce qu'il soit exécuté lors du clic sur un bouton "Ajout (par exemple) mais avant d'enregistrer dans ta table bien sur.


Calade
Commenter la réponse de Calade
Messages postés
136
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
22 mars 2014
2
0
Merci
comment je dois déclarer myrecordset dans le public class
Commenter la réponse de germany1970
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Excuse, j'avais zappé que tu travailles avec ADO .NET.

Je ne connais pas l'équivalent du Recordset.
C'est l'objet qui contient un ensemble d'enregistrements après une requête SQL.
Regarde dans la doc le nom sous .NET.


Calade
Commenter la réponse de Calade