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

Windows Forms Discussion :

Creer une vue Access par le code


Sujet :

Windows Forms

  1. #1
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut Creer une vue Access par le code
    Bonjour,

    J'aimerai créer une vue Access par le code pour m'en servir dans d'autre requête.
    Mais le problème c'est que je ne vois pas comment faire pour re-utiliser la requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public sqlPrixFact as string
    _____
    Dim sqlFact as string
     
    sqlPrixFact = "SELECT Sum(Quantite*PrixProdUni) AS [Prix Facture], NumFact
    FROM Ligne_Facture, Produit
    WHERE Produit.NumProd=Ligne_Facture.NumProd
    GROUP BY Ligne_Facture.Numfact"
     
    sqlFact = "SELECT F.NumFact AS Numéro, F.DateFact AS [Date], px.[Prix Facture],  Sum(Montant) AS [Somme payée]
    FROM Facture AS F, Paiement, " & sqlPrixFact & " AS px
    WHERE F.NumFact = px.NumFact
    AND F.NumFact=Paiement.NumFact
    GROUP BY F.Numfact, F.DateFact, px.[Prix Facture]"
    Sous Access les CREATE VIEW ne fonctionne pas donc je fais un SELECT. Cela marche très bien sous Access mais par le code

    Merci d'avance pour votre aide
    Elros.
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

  2. #2
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut
    J'ai finis par trouver tous seul comme un grand , c'est pour cela que je répond à mon post car j'ai rien trouvé (en français) sur la toile
    j'ai mis plusieurs heures mais j'en suis venu à bout.

    Dans access pour faire une vue il faut faire requête avec un SELECT et l'enregistrer. Avec le nom de la requête on s'en sert comme table dans le FORM.
    Pour le code j'ai utilisé cmdPxFac.CommandText comportant ma requête (la vue) et je l'ai greffé sur mon autre requête sans oublier les parenthèses!

    Voila le code :
    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
    Call Acceuil.ConnexionBDD()
     
                With cmdPxFac
                    .Connection = Acceuil.oConnexion
                    .CommandText = "SELECT Sum(Quantite*PrixProdUni) AS [Prix Facture], NumFact " & _
                                    "FROM Ligne_Facture, Produit " & _
                                    "WHERE Produit.NumProd = Ligne_Facture.NumProd " & _
                                    "GROUP BY Ligne_Facture.Numfact"
                End With
     
                oRCd = cmdPxFac.ExecuteReader
                oRCd.Read()
     
                Acceuil.oConnexion.Close()
     
                'requete sql pour lister toutes les factures client
                cmdListFac = "SELECT F.NumFact AS Numéro, F.DateFact AS [Date], px.[Prix Facture], Sum(Montant) AS [Somme payée] " & _
                                "FROM Facture AS F, Paiement, (" & cmdPxFac.CommandText & ") AS px " & _
                                "WHERE F.NumFact = px.NumFact And F.NumFact = Paiement.NumFact " & _
                                "And F.NumCli=" & Acceuil.varNumCli & " " & _
                                "GROUP BY F.Numfact, F.DateFact, px.[Prix Facture]"
     
                'appel procedure requete pour datagrid
                Call Acceuil.requeteSQLdgv(cmdListFac, "Client", DataGridViewCliFact)
    bonne soirée,
    Elros
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

  3. #3
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2003
    Messages : 219
    Par défaut
    Bonjour,
    Merci bien j'avais fait un post pareil.
    Et ta méthode requeteSQLdgv(...) de Acuueil ??

    Merci

  4. #4
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut
    voila

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    ' procdédure de connection à une bdd
        Public Sub ConnexionBDD()
            oConnexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Me.CheminFichier
            oConnexion.Open()
        End Sub
    ' procédure pour remplir un DataGridView
        Public Sub requeteSQLdgv(ByVal cmdRequete As String, ByVal NomTable As String, ByRef DataGridViewName As DataGridView)
     
            ' Déclaration Objet Commande 
            Dim oCmd As OleDbCommand
            ' Déclaration Objet DataAdapter
            Dim oDA As OleDbDataAdapter
            ' Déclaration Objet DataSet
            Dim oDS As New DataSet
            ' Déclaration Objet DataTable
            Dim oDT As New DataTable
            ' Déclaration d'un  OleDbCommandBuilder
            Dim oCB As OleDbCommandBuilder
     
            'connection à la bdd
            Call ConnexionBDD()
     
            'Instancier un objet Commande
            oCmd = New OleDbCommand(cmdRequete)
            'Instancier un objet Adapter
            oDA = New OleDbDataAdapter(oCmd)
            'initialiser l'objet Command
            oCmd.Connection() = Me.oConnexion
            'initialiser l'objet OleCBComandBuilder (sinon pas d'update)
            oCB = New OleDbCommandBuilder(oDA)
            'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
            oDA.Fill(oDS, NomTable)
            'Créer une datatable à partir du dataset
            oDT = oDS.Tables(NomTable)
            'Mettre dans le DataGrid une table DataTable
            DataGridViewName.DataSource = oDT
            'Récupère le nombre de ligne
            NbLigneDataGrid = DataGridViewName.RowCount
     
            ' ferme la connexion
            Me.oConnexion.Close()
        End Sub
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

  5. #5
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2003
    Messages : 219
    Par défaut
    Bonjour et merci,
    ça marche.
    mais une préoccupation : Comment libérer le résultat de l'exécution de la requête.
    En fait, c'est quand je Load le form qui contient mon DataGridView (DGV), que j'exécute la requête et met le résultat dans le DGV.
    Lorsque je ferme la fenêtre et que je la recharge (ouvrir à nouveau), les enregistrements du résultat sont doublés, si je fais à nouveau, ==> triplé, ....
    comment je peux éviter ce genre de situation ?

    Merci

  6. #6
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Je n'ai pas ce problème lorsque je quitte ma fenêtre (factures) pour retourner à mon menu d'accueil.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MenuAcceuil.Show()
            Me.Close()
    en retournant sur ma fenêtre factures contenant le DGV j'ai le même résultat qu'auparavant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AcceuilFacture.Show()
            Me.Close()
    Est ce que par hasard vous utilisez Visible = False à la place de Close ?

    Elros.
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

  7. #7
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2003
    Messages : 219
    Par défaut
    Je n'attache aucune action à la fermeture de la fenêtre
    Le form que j'ouvre contenant le DGV est un child d'un MDIForm
    Après je ferme juste cette form fille avec le bouton (croix) de fermeture de fenetre.
    En suite je réouvre avec un menu de mon MDIForm et j'ai le désagrement.

    Merci

  8. #8
    Membre émérite
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Billets dans le blog
    9
    Par défaut
    J'ai les même choses que vous et j'obtiens le bon résultat..
    Peut être qu'il y a une modification à faire dans la configuration du DGV, peut être qu'il y a une chose en trop dans votre code, ou votre requête SQL ? Je ne sais pas.

    Je vous conseil de revenir sur ton post pour avoir de l'aide d'un modérateur ou d'un membre plus expérimenté.

    Elros.
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton

    Venez faire un petit tour sur mon blog : Elros - Bienvenue dans le monde de la Business Intelligence

  9. #9
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2003
    Messages : 219
    Par défaut
    Bonjour,
    Je retrouve ma betise.
    En fait les objet Connection, DataSet, ... étaient crée comme public dans un module.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer le Mot de Passe d'une Base Access par Le code
    Par sigap dans le forum Contribuez
    Réponses: 9
    Dernier message: 21/12/2010, 11h36
  2. Ajouter une reference à Access par le code dans un programme VB ?
    Par Chekov dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 12/12/2007, 00h23
  3. [VB] Ouverture d'une base Access par le code
    Par jouf dans le forum Access
    Réponses: 4
    Dernier message: 15/06/2006, 17h54
  4. Réponses: 2
    Dernier message: 25/04/2006, 20h14
  5. [ADO] [C#] [VB.NET] Compresser une BD Access par .NET
    Par olivierx dans le forum Accès aux données
    Réponses: 4
    Dernier message: 09/03/2004, 09h42

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