none
Transmettre des selections entre 2 formulaires RRS feed

  • Question

  • Bonsoir,

    Je suis nouvelle en programmation et autodidacte et j'ai rencontré biens des difficultés. Mon souci du momment est le suivant:

    J'ai 1 WindowsApplication avec une liaison à 1 BD (Access), avec, entre autres, 3 table: Produits,Ventes e DetailsVentes.

    JE veux, dans 1 formulaire (fVentes), enregistrer une vente et les produits vendus (DetailsVentes). Ce que je pretens, c'est qu'en étant dans fVentes, en choisissant, dans une Combobox, le type de produit vendu, un autre formulaire soit ouvert fProduits, avec 1 dataGridView de la table Produits, et que, en selectionnant un des produits, les données du produit soient renvoyées au DatagridView du ´1er formulaire (fVentes).

    Je vous remercie de pouvoir m'aider.

    samedi 15 mai 2010 21:37

Réponses

  • Bonjour,

    Le moyen le plus simple est de mettre votre DataGridView en public dans la fenêtre fProduits. Pour ce faire, sélectionnez votre DataGridView et définissez la propriété "Modifiers" à "Public". Ainsi, vous avez la possibilité d'accéder à votre DataGridView depuis fVentes.

    Dim f As fProduit
    f = new fProduit()
    f.ShowDialog()
    
    ' Accéder au DataGridView après la fermeture de fProduit :
    f.monDataGridView....
    

    Vous pouvez aussi modifier les propriétés de votre DataGridView avant l'ouverture (ShowDialog) de fProduit.

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    • Marqué comme réponse Alex Petrescu mercredi 19 mai 2010 08:20
    dimanche 16 mai 2010 08:39
    Modérateur

Toutes les réponses

  • Bonjour,

    Le moyen le plus simple est de mettre votre DataGridView en public dans la fenêtre fProduits. Pour ce faire, sélectionnez votre DataGridView et définissez la propriété "Modifiers" à "Public". Ainsi, vous avez la possibilité d'accéder à votre DataGridView depuis fVentes.

    Dim f As fProduit
    f = new fProduit()
    f.ShowDialog()
    
    ' Accéder au DataGridView après la fermeture de fProduit :
    f.monDataGridView....
    

    Vous pouvez aussi modifier les propriétés de votre DataGridView avant l'ouverture (ShowDialog) de fProduit.

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    • Marqué comme réponse Alex Petrescu mercredi 19 mai 2010 08:20
    dimanche 16 mai 2010 08:39
    Modérateur
  • Merciiiiiiiiii

     

    Je vais essayer.

    Merci encore pour l'aide

    Cordialment

    dimanche 16 mai 2010 09:14
  • :-(

    Je n'y arrive pas!!!

    J'ai dans le formulaire fVentes:

    Public Class fVentes

         Dim f as fProduits

        Dim SelectedRowView as Data.DataRowView

        Dim SelectedRow as xDataSet.ProduitsRow

    .......

    Private Sub Combobox1_selectedIndexChanged(....)

      if combox1.SelectedIndex = 0 then

          f = New fProduits()

         f.showDialog()

        DetVentesPC_ConsulteDataGridView.Rows.add(f.ProduitsDataGridView.SelectedRows)

    End Sub

    Puis, dans le formulaire fProduits

    ...

    Private Sub ProduitsDataGridView_DoubleClick(....)

          selectedRowView = CType(produitsBindingSource.current, system.data.datarowview)

         selectedRow = CType(selectedRowView.Row, xDataSet.ProduitsRow)

    End Sub

    dimanche 16 mai 2010 13:43
  • Bonjour,

    Faites en sorte pour éviter de vous embrouiller que fVentes communique avec fProduits et non l'inverse et non les deux en même temps.

    Pour cela : Supprimez votre code du DoubleClick dans fProduits. Ensuite après le ShowDialog() utilisez le code suivant :

    f.showDialog()
    
    Dim SelectedRowView as Data.DataRowView
    Dim SelectedRow as xDataSet.ProduitsRow
    
    selectedRowView = CType(produitsBindingSource.current, system.data.datarowview)
    selectedRow = CType(selectedRowView.Row, xDataSet.ProduitsRow)
    
    DetVentesPC_ConsulteDataGridView.Rows.add(selectedRow)

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    dimanche 16 mai 2010 21:07
    Modérateur
  • Bonjour,

     

    Je suis navrée de vous embêter encore une fois :-(

    Le problème,c'est qu'en écrivant tt ce que vous m'avez dit, VB me donne une erreur "Name 'ProduitsBindingSource' is not declared "

    Si j'ai bien compris, le dernier code que vous m'avez envoyer est pour être ajouté dansle formulaire fVentes.Certes?

    Si c'est cela, alors il ne reconnait pas ProduitsBindingSource car dans Ventes je n'ai que les champs de Ventes et de DetailsVentes.

    Merci pour l'aide

    Cordialment

    lundi 17 mai 2010 14:16
  • Bonjour,

    Excusez moi ! J'ai oublié de vous dire de déclarer votre ProduitsBindingSource en "Public" (propriété "Modifiers").

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    lundi 17 mai 2010 14:35
    Modérateur
  • :-)

    Merci d'être si patient

    Cordialment

    lundi 17 mai 2010 14:53
  • L'erreur persiste!

    :-(

    lundi 17 mai 2010 15:01
  • Bonjour,

    GRRRRRRRRRRRRRR !
    Corrigez cette ligne :

    selectedRowView = CType(f.produitsBindingSource.current, system.data.datarowview)
    

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    lundi 17 mai 2010 15:31
    Modérateur
  • Apparrement le problème n'est plus celui ci...

    J'avance... :-)

    Merci encore une fois

    lundi 17 mai 2010 15:34
  • :-)

    Merci encore une fois...

    Je suis contente au carré:

    1) parceque, je ne sais pas comment, j'ai eu une illumination et j'ai fait cela avant même que Gilles me le suggere (je suis fiere de moi, mais ça doit être parceque votre savoir faire commence à déteindre sur moi :-) )

    2) parceque vous continuez À m'aider

    Merci encore

    Cordialment

    lundi 17 mai 2010 15:50
  • Oui mais

    :-(

     

    Ça y est, ça tourne, il me laisse ouvrir le formulaire des produits, mais en seleccionnant, rien ne se passe (il ne "saute" pas vers le formulaire precedent fVentes). Je suis obligée de fermer le formulaire et le programme bug sur DetVentesPC_ConsDataGridView.Rows.add(selectedRow) avec l'erreur suivante: "Il n'est pas possible d'aditionner des lignes d'une façon programatique à la collection de lignes du DataGridView qd le controle est lié aux données"

    lundi 17 mai 2010 15:59
  • Je crois avoir trouvé........et vous allez me gronder!!!!

    C'est que la ligne du DataGridView du formulaire Produits n'a pas la même structure que celle de DetVentesPC_Cons...

    Mais alors, comment fais-je pour ne prendre que les champs qui me conviennent?

    Dans le ProduitsDataGridView j'ai CodPC, Id, Type, Marque,....Prix,...etc

    Dans DetVEntesPC_Cons j'ai CodPC, Id, Type, Marque, Quantité, Prix, Total

    Merci d'avance

    lundi 17 mai 2010 16:31
  • Bonjour,

    Dans selectedRowView vous pouvez récupérez les colones qui vous intérresse :

    Dim val ... = selectedRowView("Marque")

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    lundi 17 mai 2010 19:14
    Modérateur