IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Réinjecter les Datas d'une BDD dans un formulaire


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut Réinjecter les Datas d'une BDD dans un formulaire
    Bonjour,

    Voici mon souci.
    Dans une appli constituée de deux forms et sur laquelle est "accrochée" une petite BDD, je saisis des données dans le formulaire1 (form1 contenant textbox, 1 checkbox et 2 radiobutton)
    J'ai sur ce form, possibilité d'enregistrer les données saisies dans une BDD (.accdb). J'ai eu beaucoup de mal malgré de l'aide a faire fonctionner cette BDD

    voici le bandeau de saisie des données de form1 : toutes les données saisies sont enregistrées dans la base.



    Voici une copie d'ecran de la BDD avec un patient test



    ma question est simple :
    est il possible, en selectionnant une ligne de "consultation list" (donc une ligne complete de données patient) de reinjecter ces valeurs dans les textbox, chackbox et radiobutton initials du formulaire afin eventuellement de "retravailler" les calculs initiaux. Et si oui, comment ???

    Merci beaucoup de votre aide car la, je n'y arrive pas tout seul

  2. #2
    Membre actif Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Points : 269
    Points
    269
    Par défaut
    Qu'est ce que tu entend par BDD? Un datagridview?

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    Bonjour neiflheim

    Comme je l'ai dit, je me suis pas mal fait aider pour cette partie du logiciel.

    je ne sais pas si ca repond a ta question mais
    - le form contient effectivement les données sous forme de tableau
    - le groupbox "consultations list" contient bien un datagridview (c'est ce groupbox qui m'interesse) alors que le groupbox "Customers List" contient une listview

  4. #4
    Membre actif Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Points : 269
    Points
    269
    Par défaut
    Ce n'est pas compliqué à faire, mais après tout dépend comment est structuré ton application...

    Si tu instancie tes deux forms, tu peux les faire communiquer facilement par exemple :

    Dans un module tu déclares tes deux form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public FrmSaisie as FormSaisie
    Public FrmBDD as FormBDD
    Puis dans ta page d'accueil par exemple tu les instancie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     FrmSaisie = New FormSaisie
    FrmSaisie.Show()
     
    FrmBDD= New FrmBDD
    FrmBDD.Show()

    Puis dans ton form BDD, tu gères l'évènement "RowHeaderMouseClick" de ton Datagridview pour transmettre les données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Index as Integer = e.RowIndex
     
    If Index <> -1 Then
    FrmSaisie.Prenom.Text = Me.DataGridView1.Rows(Index).Cells("Prenom").Value
    etc...
    End If
    Enfin moi je ferais comme ça, il y a surement une façon plus propre de procéder je pense

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    merci pour l'exemple neiflheim,
    mon appli demarre sur le form1 (donc le form de saisie), je recupère les valeurs a entrer dans un fichier excel (voir mon port precedant), je mouline tout cela et j'obtiens des valeurs de sorties.
    Sur mon form1, j'ai un bouton qui ouvre le formbdd

    je crée un module pour declarer mes forms ?

    Je n'ai pas de page de demarrage, enfin si, c'est mon form1, donc elle va ou mon instanciation ?

    merci bien

  6. #6
    Membre actif Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Points : 269
    Points
    269
    Par défaut
    Si ta form de saisie est ta form principale, alors tu peux l’appeler directement par son nom. Toujours dans l'évènement "RowHeaderMouseClick" de ta formBDD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Index as Integer = e.RowIndex
     
    If Index <> -1 Then
    Form1.Prenom.Text = Me.DataGridView1.Rows(Index).Cells("Prenom").Value
    etc...
    End If

  7. #7
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    merci bien de ton explication claire
    par contre une chose me trifouille un peu :
    - une fois cela mis en place, quelle manipulation me permettra de réimporter les valeurs du datagridview dand les textbox du form ? un bouton importer sur le formbdd ?
    - et si ultérieurement j'avais a réinjecter des valeurs issues d'un autre formulaire ?

    pour l'instant je ne depends que d'un seul form mais quid dans l'avenir ....

    merci

  8. #8
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    autant pour moi, j'ai dit une grosse ânerie, bien evidemment l'action est dans la traduction de l'event

    J'en conclus que je peux egalement faire la même chose via un bouton "importer dans le formulaire" qui serait relié a un evenement "ligne selectionnée" non ?

  9. #9
    Membre actif Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Points : 269
    Points
    269
    Par défaut
    Si les données de ta form BDD sont issues d'une base de données, il vaux mieux faire une fonction qui met à jour ta base de données, puis qui réimporte les données dans ton formulaire

  10. #10
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    j'édite car j'ai dit une ânerie (une de plus, je n'avais pas bien lu ton post precedant.
    J'ai effectivement deja une fonction qui fonctionne ainsi. La voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Private Sub Miseajour()
            Dim sqltxt As String = "Delete * from Consultations;"
            Using cmd As OleDbCommand = New OleDbCommand(sqltxt, con)
                Try
                    ' on efface toute la table
                    con.Open()
                    cmd.ExecuteNonQuery()
     
                    ' on remet les lignes unes à unes
                    For i As Integer = 0 To Grille.Rows.Count - 1
                        With Grille
                            Dim sqltxt1 As String = "Insert into Consultations Values('" & .Item(0, i).Value.ToString & "','" & .Item(1, i).Value.ToString & "','" & .Item(2, i).Value.ToString & "','" & .Item(3, i).Value.ToString & "','" & .Item(4, i).Value.ToString & "','" & .Item(5, i).Value.ToString & "','" & .Item(6, i).Value.ToString & "','" & .Item(7, i).Value.ToString & "','" & .Item(8, i).Value.ToString & "','" & .Item(9, i).Value.ToString & "','" & .Item(10, i).Value.ToString & "','" & .Item(11, i).Value.ToString & "','" & .Item(12, i).Value.ToString & "','" & .Item(13, i).Value.ToString & "','" & .Item(14, i).Value.ToString & "','" & .Item(15, i).Value.ToString & "','" & .Item(16, i).Value.ToString & "','" & .Item(17, i).Value.ToString & "','" & .Item(18, i).Value.ToString & "','" & .Item(19, i).Value.ToString & "','" & .Item(20, i).Value.ToString & "','" & .Item(21, i).Value.ToString & "','" & .Item(22, i).Value.ToString & "','" & .Item(23, i).Value.ToString & "','" & .Item(24, i).Value.ToString & "','" & .Item(25, i).Value.ToString & "','" & .Item(26, i).Value.ToString & "','" & .Item(27, i).Value.ToString & "','" & .Item(28, i).Value.ToString & "','" & .Item(29, i).Value.ToString & "','" & .Item(30, i).Value.ToString & "','" & .Item(31, i).Value.ToString & "','" & .Item(32, i).Value.ToString & "','" & .Item(33, i).Value.ToString & "','" & .Item(34, i).Value.ToString & "','" & .Item(35, i).Value.ToString & "','" & .Item(36, i).Value.ToString & "','" & .Item(37, i).Value.ToString & "');"
                            Using cmd1 As OleDbCommand = New OleDbCommand(sqltxt1, con)
                                cmd1.ExecuteNonQuery()
                            End Using
                        End With
                    Next
                    con.Close()
     
                Catch ex As Exception
                    If langue = "en" Then
                        messageaff = "An error occurred during the updating access of the consultations list"
                        infoaff = "Writing file error"
                    Else
                        messageaff = "Une erreur est survenue au cours de la mise à jour de la liste des consultations"
                        infoaff = "Erreur écriture fichier"
                    End If
                    MessageBox.Show(messageaff, infoaff, MessageBoxButtons.OK, MessageBoxIcon.Warning)
                End Try
            End Using
        End Sub
    J'appelle cette fonction notamment au formclosing

    Par contre je seche toujours sur un point :
    Je n'arrive pas a transferer
    une valeur de radiobutton de la datagrid vers le form
    une valeur de checkbox de la datagrid vers le form

  11. #11
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    Alors j'ai un petit souci lors de l'importation des données de la Datagrid vers le formulaire.
    Certains champs sont vides dans la datagrid car se sont des valeurs optionnelles. Et lorsque j'essaye d'importer une ligne de la grid ou il existe un champ vide, j'ai une erreur de type :
    La conversion du type 'DBNull' en type 'String' n'est pas valide.
    J'ai bien compris que je dois verifier que ma donnée ne soit pas null avant de l'inserer mais je pêche. J'ai fait un bout de code (grille est le nom de ma datagridview) a partir de recherches mais soit je le place mal; soit il est faux car le probleme persiste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsDBNull(grille.Rows(e.RowIndex).Item("SC"))  Then
      Me.SC.Text = ""
    Else
      Me.SC.Text = grille.Rows(rownum).Item("SC")
    End If
    Voici la ligne en rouge ou l'erreur se produit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
       Private Sub Grille_RowHeaderMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles Grille.RowHeaderMouseClick
            Dim Index As Integer = e.RowIndex
            If Index <> -1 Then
                Visiondeloin.txtDocteur.Text = CStr(Me.Grille.Rows(Index).Cells("praticien").Value)
                Visiondeloin.txtPRENOM.Text = CStr(Me.Grille.Rows(Index).Cells("prenom").Value)
                Visiondeloin.txtNOM.Text = CStr(Me.Grille.Rows(Index).Cells("nom").Value)
                Visiondeloin.TxtNAISSANCE.Text = CStr(Me.Grille.Rows(Index).Cells("naissance").Value)
                Visiondeloin.TextAge.Text = CStr(Me.Grille.Rows(Index).Cells("age").Value)
                Visiondeloin.S.Text = CStr(Me.Grille.Rows(Index).Cells("S").Value)
                Visiondeloin.C.Text = CStr(Me.Grille.Rows(Index).Cells("C").Value)
                Visiondeloin.AXE.Text = CStr(Me.Grille.Rows(Index).Cells("Axe").Value)
                Visiondeloin.SC.Text = CStr(Me.Grille.Rows(Index).Cells("SC").Value)
                Visiondeloin.CC.Text = CStr(Me.Grille.Rows(Index).Cells("CC").Value)
                Visiondeloin.AC.Text = CStr(Me.Grille.Rows(Index).Cells("AC").Value)
                Visiondeloin.DVA.Text = CStr(Me.Grille.Rows(Index).Cells("DVA").Value)
                Visiondeloin.ADD.Text = CStr(Me.Grille.Rows(Index).Cells("ADD").Value)
                Visiondeloin.NVA.Text = CStr(Me.Grille.Rows(Index).Cells("NVA").Value)
                Visiondeloin.K1.Text = CStr(Me.Grille.Rows(Index).Cells("K1").Value)
                Visiondeloin.K2.Text = CStr(Me.Grille.Rows(Index).Cells("K2").Value)
                Visiondeloin.QI.Text = CStr(Me.Grille.Rows(Index).Cells("QI").Value)
                Visiondeloin.PACHY.Text = CStr(Me.Grille.Rows(Index).Cells("Pachy").Value)
                'etc...
            End If
            Visiondeloin.Show()
            Me.Hide()
        End Sub
    Quelle peut être mon erreur ? . Je pense que 5 ou 6 lignes seront concernées par la suite

    Merci beaucoup par avance

  12. #12
    Membre actif Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Points : 269
    Points
    269
    Par défaut
    Vu que c'est un datagridview, il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If IsDBNull(grille.Rows(e.RowIndex).cells("SC").value)  Then
      Me.SC.Text = ""
    Else
      Me.SC.Text = grille.Rows(rownum).cells("SC").value
    End If

    Pour éviter de se taper 6 lignes de codes à chaque lignes à vérifier, tu peux faire une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function RetournerChaine(ByVal valeur as Object) as String
     
    If IsDBNull(valeur) Or IsNothing(valeur) Then
             Return ""
    Else
             Return Valeur
    End If
     
    End Function

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Visiondeloin.SC.Text = RetournerChaine(Me.Grille.Rows(Index).Cells("SC").Value)

  13. #13
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    bonjour neiflheim

    Alors j'ai maintenant un message d'erreur qui me dit que IsDBNull et IsNothing ne sont pas déclarés. Je ne comprends pas, je les ai pourtant déclarés
    et je ne comprends pas trop la signification de valeur au cas précis

  14. #14
    Membre actif Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Points : 269
    Points
    269
    Par défaut
    Citation Envoyé par Attila54 Voir le message
    bonjour neiflheim

    Alors j'ai maintenant un message d'erreur qui me dit que IsDBNull et IsNothing ne sont pas déclarés. Je ne comprends pas, je les ai pourtant déclarés
    et je ne comprends pas trop la signification de valeur au cas précis
    IsDBNull et IsNothing dépendent de la référence Microsoft.VisualBasic, importe la référence avant de déclarer ta classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports Microsoft.VisualBasic

  15. #15
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    yes, ça fonctionne, j'avais oublié l'import Microsoft.Visualbasic

    J'aurais une dernière question avant de clôturer ce topic.
    Est il possible d'effectuer des requêtes par l’intermédiaire de mon formBDD

    Merci beaucoup

  16. #16
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    En fait, je voudrais bien mettre dans mon menustrip un onglet requêtes
    celui ci me permettrait de choisir mon ou mes critères et lancer la requête
    pour commencer deux critères seraient "sélectionnables" et permettraient donc 3 requêtes
    sur l âge (simple)
    sur le praticien (simple)
    sur l'âge et je praticien (multicritères)

    Est ce faisable avec une datagridview ?

Discussions similaires

  1. EXT-GWT: afficher les données d'une bdd dans une grid
    Par baya1 dans le forum GWT et Vaadin
    Réponses: 9
    Dernier message: 20/11/2011, 00h14
  2. Réponses: 2
    Dernier message: 02/07/2009, 08h33
  3. insérer les resultats d'une requête dans un formulaire
    Par benoist.cardinal dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/09/2008, 19h33
  4. Comment afficher les contacts d'une entreprise dans un formulaire
    Par jackouille28 dans le forum Modélisation
    Réponses: 1
    Dernier message: 06/06/2007, 16h53
  5. Affichage des données d'une bdd dans un formulaire
    Par Shekhmet dans le forum Langage
    Réponses: 5
    Dernier message: 04/04/2006, 19h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo