Traitement des doublons en vb 2005

Résolu
elwadeh Messages postés 55 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 28 juin 2018 - 13 avril 2011 à 04:29
Calade Messages postés 1207 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

9 réponses

Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
13 avril 2011 à 08:13
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
3
elwadeh Messages postés 55 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 28 juin 2018 1
13 avril 2011 à 11:10
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
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
13 avril 2011 à 13:27
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
0
elwadeh Messages postés 55 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 28 juin 2018 1
13 avril 2011 à 16:10
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.
0

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

Posez votre question
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
13 avril 2011 à 16:21
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
0
germany1970 Messages postés 134 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 mars 2014 3
13 avril 2011 à 16:50
Bonjour,
je mis ce code au début du code du button ok ????
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
13 avril 2011 à 16:55
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
0
germany1970 Messages postés 134 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 mars 2014 3
13 avril 2011 à 17:25
comment je dois déclarer myrecordset dans le public class
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
13 avril 2011 à 17:34
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
0
Rejoignez-nous