Vb.net : controle du doublons

ami1111 Messages postés 30 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 13 juillet 2014 - 2 avril 2012 à 19:42
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 7 avril 2012 à 20:21
Bonjour,

Avant l'ajout des donnees à la BDD SQL SERVER à partir vb.net,je veux controler les doublons du donné et afficher un message s'il existe un doublon,j'ai utilisé ce code au dessous mais rien s'affiche
 If (dt.Rows.Count > 0) And "(select* from Agent where numero_agent='" & (numero.Text) & "')" Then
WHERE City='Sandnes'
                        MsgBox("l'agent de numero " & Trim(numero.Text) & " existe ", MsgBoxStyle.OkOnly)


et merci pour vos aides.

14 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
2 avril 2012 à 20:08
Bonjour,

"(select* from Agent where numero_agent='" & (numero.Text) & "')
N'est pas booléen ...

Lis le point 3 de ma signature, reviens ensuite.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
ami1111 Messages postés 30 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 13 juillet 2014
2 avril 2012 à 21:11
Salut,

Lis le point 3 de ma signature

En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).


Quand j'applique ce changement à mon projet une liste d'erreurs s'affiche(ex:
Erreur 13 Option Strict On interdit les conversions implicites de 'String' en 'Boolean'.

Erreur 16 Le nom 'MsgBoxStyle' n'est pas déclaré.)
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
2 avril 2012 à 22:43
Bonjour,

Oui, c'est fait exprès :
Erreur 13 Option Strict On interdit les conversions implicites de 'String' en 'Boolean'
Tu ne peux pas mettre une chaine directement dans un test, il faut un booléen.

Erreur 16 Le nom 'MsgBoxStyle' n'est pas déclaré
Utilises plutôt MessageBox.Show.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
ami1111 Messages postés 30 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 13 juillet 2014
2 avril 2012 à 23:41
Salut,

Tu ne peux pas mettre une chaine directement dans un test, il faut un booléen.

Quelle est la solution ??

un autre message s'affiche
Erreur 10 Option Strict On interdit les opérandes de type Object pour l'opérateur '&'.
0

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

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
3 avril 2012 à 19:26
Bonjour,

"Erreur 10 Option Strict On interdit les opérandes de type Object pour l'opérateur '&'"
Sur quelle ligne ?

Quelle est la solution ??
Si c'est une requête SQL, il faut l’exécuter et récupérer son résultat.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
ami1111 Messages postés 30 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 13 juillet 2014
3 avril 2012 à 20:00
Bonjour,

Sur quelle ligne ?


cette ligne And "(select* from Agent where numero_agent='" & (numero.Text) & "')"

je ne sais pas par quoi je remplace cette chaine de caractères "(select* from Agent where numero_agent='" & (numero.Text) & "')"
puisqu'elle ne fonctionne pas en code.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
3 avril 2012 à 20:51
Bonjour,

Sais-tu exécuter une requête SQL ?
Comment récupérer les données de ta base de données ?
Commences par cela.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 avril 2012 à 21:02
Merci, NHenry, de l'avoir inviter à aller vers le commencement.
J'ajoute à cette étude nécessaire : celle de l'étude de la vocation de l'opérateur logique AND.
Ce sera salutaire.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ami1111 Messages postés 30 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 13 juillet 2014
3 avril 2012 à 23:32
Bonjour,

Sais-tu exécuter une requête SQL ?
Comment récupérer les données de ta base de données ?

celle de l'étude de la vocation de l'opérateur logique AND.

d'accord mais,pour moi le probleme est la Récuperation du résultat de la requête (select* from Agent where numero_agent='" & (numero.Text) & "') dans une variable,et je ne sais pas comment (je demande une solution,une idée et pas un code prêt.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
3 avril 2012 à 23:44
Bonjour,

Je vois un :
dt.Rows.Count
Et tu me dis que tu ne sais pas interroger la base de données ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
ami1111 Messages postés 30 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 13 juillet 2014
4 avril 2012 à 00:12
Bonjour,
dt.Rows.Count

cela est pour contrôler si le table est remplis ou pas,mais pour connaitre si le document existe ou non,je ne sais pas comment le coder.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
4 avril 2012 à 13:07
Bonjour,

Comment tu remplis ton DT ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
ami1111 Messages postés 30 Date d'inscription vendredi 9 mars 2012 Statut Membre Dernière intervention 13 juillet 2014
4 avril 2012 à 16:07
Bonjour,
Mr NHenry c'est le code sans controle de doublons et ave c remplissage du dt
Imports System
Imports System.Data
Imports System.Data.SqlClient
Public Class ajout_agent
    Dim con As String = ""
    Dim connsql As New SqlConnection(con)
    Dim i As Integer
    Dim cmd As New SqlCommand

    Dim da As New SqlDataAdapter
    Dim ds As New DataSet
    Dim dt As New DataTable
    Private Sub load_Form()
       

        matricule.Text = ""
        mdp.Text = ""
        nomag.Text = ""
        preag.Text = ""


        connsql.Open()
        Try
            cmd = connsql.CreateCommand
            cmd.CommandText = "SELECT * FROM Agent"
            da.SelectCommand = cmd
            da.Fill(ds, "Agent")
            
        Catch ex As Exception
            MsgBox("ERREUR: " & ex.Source & ": " & ex.Message, MsgBoxStyle.OkOnly, "ERREUR DE CONNECTION ")
        End Try
    End Sub


    Private Sub Bouttonajout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonajout.Click
 

        Dim con As String = "
        Dim connsql As New SqlConnection(con)
        cmd.CommandText = "select * from agent"

        If matricule.Text "" Or nomag.Text "" Or preag.Text = "" Or poste.Text = "" Or type.Text = "" Or service.Text = "" Then
            MsgBox("certaines cases sont vides ", MsgBoxStyle.OkOnly)
        Else
            If MsgBox("etes vous sur d'enregistrer l'agent de matricule: " & matricule.Text & " ?", MsgBoxStyle.YesNo, "L'ajout est confirmé")  Then
              'vide
            Else
                Try

                    connsql.Open()


                    If (dt.Rows.Count > 0)  And "(select* from Agent where numero_agent='" & (numero.Text) & "')" Then
                        MsgBox("l'agent de matricule " & (matricule.Text) & " existe ", MsgBoxStyle.OkOnly)
                    Else

                        cmd = connsql.CreateCommand
                        cmd.CommandText = "INSERT INTO Agent(Matricule_agent, MDP_agent, Nom_agent,Prenom_agent,ID_type,Code_postal,ID_service) VALUES('" & (matricule.Text) & "','" & (mdp.Text) & "','" & (nomag.Text) & "','" & (preag.Text) & "','" & type.GetItemText(type.SelectedItem) & "','" & poste.GetItemText(poste.SelectedItem) & "','" & service.GetItemText(service.SelectedItem) & "')"
                        i = cmd.ExecuteReader.RecordsAffected()
                        If i > 0 Then
                            MsgBox("l'agent de matricule " & (matricule.Text) & " est ajouté avec succsés", MsgBoxStyle.OkOnly, "Message :")
                        Else
                            MsgBox("l'agent de matricule " & (matricule.Text) & " n'est pas ajouté ", MsgBoxStyle.OkOnly, "Message :")
                        End If
                       load_Form()
                        connsql.Close()

                    End If

                Catch ex As Exception
                    MsgBox("ERREUR: " & ex.Source & ": " & ex.Message, MsgBoxStyle.OkOnly, "ERREUR DE CONNECTION !!")
                End Try
            End If
        End If
    End Sub
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
7 avril 2012 à 20:21
Bonjour,

A la place de :
cmd.CommandText = "select * from agent"
Essayes :
cmd.CommandText = "select* from Agent where numero_agent='" & (numero.Text) & "'"

Et regardes le résultat.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Rejoignez-nous