DataGridView chercher des doublons avec la valeur de 2 colonnes

walidouvich-1970 Messages postés 7 Date d'inscription vendredi 7 juin 2019 Statut Membre Dernière intervention 30 janvier 2020 - 29 janv. 2020 à 15:44
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 - 31 janv. 2020 à 13:58
Bonjour,

j'ai une colonne date_rendezvous et une colonne commercial.

ce que je veux, c'est si je choisi un commercial pour un rendez-vous je dois effectuer un test sur toutes les ligne de ma DataGridView pour voir si ce commercial a déjà un rendez-vous pour cette date.
si oui un message doit me stoper si non je passe.

merci d'avance.

10 réponses

Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
29 janv. 2020 à 20:42
Bonsoir

Ton datagridview est il bindé à une source de données ?
0
walidouvich-1970 Messages postés 7 Date d'inscription vendredi 7 juin 2019 Statut Membre Dernière intervention 30 janvier 2020
29 janv. 2020 à 22:52
bonsoir,

oui, et ma colonne commercial et type DataGridViewComboBoxColumn.

merci
0
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
30 janv. 2020 à 06:24
Alors c’est sur la source de données qu’il faut faire la recherche.
De quel type est elle?
0
walidouvich-1970 Messages postés 7 Date d'inscription vendredi 7 juin 2019 Statut Membre Dernière intervention 30 janvier 2020
30 janv. 2020 à 13:12
bonjour,

BDD SQL
0

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

Posez votre question
walidouvich-1970 Messages postés 7 Date d'inscription vendredi 7 juin 2019 Statut Membre Dernière intervention 30 janvier 2020
30 janv. 2020 à 13:24
bonjour,

le problème c'est comment combiner les deux colonnes pour la recherche.
0
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
30 janv. 2020 à 14:43
Y’a pas d'histoire de colonne.

Tu as une base de données, un outil créé pour stocker des données typées et faire de recherches dessus, donc tu fais une requête avec une condition sur le champ date et une sur le champ commercial.

Dans le datagridview ça affiche du texte (pas une date, car une date c’est un nombre, mais un texte qui décrit la date) et c’est pas prévu pour faire des recherches.
Évidemment c’est possible en convertissant le texte en date et en faisant des boucles. Mais sql fait déjà ça de façon performante pourquoi réinventer la roue?
0
walidouvich-1970 Messages postés 7 Date d'inscription vendredi 7 juin 2019 Statut Membre Dernière intervention 30 janvier 2020
Modifié le 31 janv. 2020 à 15:47
Bonsoir
voilà mon code mais il ne répond pas à mon besoin.

For i As Integer = 0 To GridView5.DataRowCount - 1

            'dts.Clear()
            sql = "select SV_Formation.* from SV_Formation where "
            If GridView5.GetRowCellValue(i, "Formateur").ToString <> "" Then sql = sql & "Formateur = '" & GridView5.GetRowCellValue(i, "Formateur").ToString & "' and "
            Try
                Dim date1 As Date
                date1 = CDate(GridView5.GetRowCellValue(i, "date_Formation").ToString)

                If date1.ToString = 10 Then sql = sql & " Date_Formation = '" & date1 & "' and "
            Catch ex As Exception
            End Try

            sql = sql & "ID > 0"


            cnx = Nothing
            cmd = Nothing
            dr = Nothing
            Try
                cnx = New SqlConnection(conn)
                cmd = New SqlCommand(sql, cnx)

                ' Ouvrir la connexion 
                cnx.Open()
                dr = cmd.ExecuteReader()


                If dr.HasRows Then


                    MessageBox.Show("BLA BLA BLA", "Message d'infos....", MessageBoxButtons.OK, MessageBoxIcon.Error)

                    Exit Sub

                End If
            Catch ex As Exception

                MessageBox.Show(ex.Message)
            Finally
                If Not (dr Is Nothing) Then dr.Close()
                If Not (cnx Is Nothing) Then cnx.Close()
            End Try
        Next
0
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
30 janv. 2020 à 21:50
Pour poster correctement un code voici un petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Entre ce que je crois comprendre de ton message initiale, et ce que je crois décrypter dans ton code, y'a un truc qui m'échappe.

Déjà, tu as parlé de Datagridview et dans ton code c'est GridView, se sont 2 contrôles assez différents, à moins que tu aies eu la mauvaise idée d'appeler un datagridview gridview. Merci donc de confirmer.
Il me semble d'ailleurs, que par défaut, le gridview ne soit disponible qu'en WPF, là encore merci de préciser Winform ou WPF?

L'opérateur choisi une date, puis sélectionne un commercial, et à ce moment là si le commercial est déjà pris tu veux une alerte.
C'est bien ça?

Si oui, ça n'est pas la peine d'itérer toutes les lignes, seule celle en cours est utile pour le test.

Y'a longtemps que j'ai pas fait de VB, mais ça je ne pense pas que ça marche
If date1.ToString = 10 Then

date1.ToString va retourner devrait retourner un truc du genre
"30/01/2020"
pas 10, en plus 10 c'est un Integer que tu compares à une string.

Enfin, d'un point de vue ergonomie, il me semble plus efficace, qu'une fois la date choisie, la liste des commerciaux disponibles apparaissent. Permettre une "mauvaise" saisie c'est une perte de temps, un message d'erreur aussi et en plus c'est agaçant (souvent, l'utilisateur ne le lit même pas).
D'ailleurs, si tu codes en WPF, alors charger ta base données dans une collection<T> et passer par le modèle MMVC est presque un jeu d'enfant et chaque ligne disposerait dynamiquement d'une combobox avec uniquement les commerciaux disponibles
0
bonjour,
 If date1.ToString = 10 Then

c'est juste un test d'un champ date et pas = 10.

de toute façon je vous remercie beaucoup j'ai trouvé la solution.
j'ai obtenu mes valeurs avec un selectedrows et j'ai mis une requête sql pour trouver les doublons.
0
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
31 janv. 2020 à 13:58
Une date de rendez-vous ne sera jamais 10’
10 en format « heure de fichier windows » c’est le 01/01/1601 à 01:00:00
en timestamp c’est le 01/01/1970 à 00:00:10
En AO date (ou Tick) c’est le 09/01/1900 à 00:00:00

A moins que tu ne prennes des rendez vous dans le passé ce test sera toujours faux
0