Vb.net : controle du doublons

Signaler
Messages postés
30
Date d'inscription
vendredi 9 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2014
-
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
-
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

Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
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
Messages postés
30
Date d'inscription
vendredi 9 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2014

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é.)
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
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
Messages postés
30
Date d'inscription
vendredi 9 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2014

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 '&'.
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
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
Messages postés
30
Date d'inscription
vendredi 9 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2014

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.
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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
Messages postés
30
Date d'inscription
vendredi 9 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2014

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.
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
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
Messages postés
30
Date d'inscription
vendredi 9 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2014

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.
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
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
Messages postés
30
Date d'inscription
vendredi 9 mars 2012
Statut
Membre
Dernière intervention
13 juillet 2014

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
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
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