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 :

Matrice ou Table Multi-Dimension


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut Matrice ou Table Multi-Dimension
    Rebonjour

    Idée générale:

    J'ai une table spécialités, une table Filières, une table Fonctionnaires,...
    Dans notre entreprise (Siège et ses filières) on a dans les 7000 employer de tous genre (Spécialité). On a une veille application de gestion personnel et j'essaie de faire une nouvelle. Les procédures de l'ajout, modification, Suppression, Recherche, Recherche avancé fonctionnent correctement et pas de problème. Le travail demandé est de faire les statistiques (Calculer le % des employer par spécialité et par filière aussi par sexe et âge) (le taux des accidents de travail, les congés de maladie par filières et par spécialité ...) pour en déduire les causes et améliorer le sécurité des fonctionnaires et la production.

    voila question:

    Je veux créer une matrice ou une table multiple-dimension permanente (c'est comme un tableau Excel mais dans Access) qui sera enregistre sous Access et sera modifiable à tous moment (Mis à jour automatique lors d'une modification ou d'ajout d'un fonctionnaire).

    L'image peut donner une idée de cette matrice ou table
    C'est comme l’intersection du table Spécialités et la table Filières

    c'est compliqué mais je dois le faire et je ne sais pas par ou commencer?

    Cherchons comme c’était un examen du Bac.

    Merci d'avance
    Images attachées Images attachées  

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Salut
    Je crois qu'il me faut un miracle pour trouver une solution.

    Si je crée un tableau multidimensionnel du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Tableau(35,20) as integer
    35 lignes et 20 colonnes (ligne1 = code filières, colonne1= code spécialité)

    et je rempli mon tableau qui est en mémoire, y a t-il une possibilité de l'enregistrer dans ma base Access pour l'utiliser après?

    Merci pour vos propositions qui me donnent de l’espoir.

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonsoir,

    Pour répondre à cela :
    Je veux créer une matrice ou une table multiple-dimension permanente (c'est comme un tableau Excel mais dans Access) qui sera enregistre sous Access et sera modifiable à tous moment (Mis à jour automatique lors d'une modification ou d'ajout d'un fonctionnaire).
    Je pense que le contrôle DataGridView répond à vos attentes.

    Si les données sont déjà dans les tables d'une base de données, pourquoi vouloir les remettre dans un tableau ou une liste?

    L'image mise en pièce jointe ne m'a pas l'air d'être un table croisé...

    Pour que vous ayez une réponse plus précise, dites nous précisément ce que vous souhaitez faire.

    EDIT : Une requête du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT Filières.ID AS IDFilière, Spécialités.ID AS IDSpécialité, COUNT(Employés.ID) AS NombreEmployés
    FROM Employés 
    INNER JOIN
        Filières ON Employés.IDFilière = Filières.ID 
    INNER JOIN
        Spécialités ON Employés.IDSPécialité = Spécialités.ID
    GROUP BY Filières.ID, Spécialités.ID
    Retourne le nombre d'employés répondant au regroupement ainsi que l'ID des champs de regroupement.
    Bon dev
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Salut Rainui

    J'ai une table filière (Code_Filiere, Nom_Filiere) qui contienne 127 enregistrements.

    Une table Spécialité (Code_Special, Specialite) qui contienne 35 enregistrements.

    Une table Employés (ID, Nom, DateNais, ... , Code_Filiere, Code_Special, ...) environ 7000 enregistrements.

    Le travail demandé est de faire un bilan (Statistique) mensuel et au lieu de parcourir la table Employés pour 1 filière avec tous les spécialités et compter le nb d'employés puis la 2 et ainsi de suite c.a.d 127 Filière 35 fois ça prendre beaucoup de temps alors j'ai pensé la faire une seule fois et l'enregistrer dans un tableau multidimensionnel et juste le mettre à jour en cas de modification d'un enregistrement dans la table Employés.

    J'ai pensé au dataGridView mais comment pourrais avoir les lignes qui correspondent à la table Filières et les colonnes à la table Spécialités.

    J'espère que j'ai pu expliquer mon problème

    voir l'image

    et merci pour tous.
    Images attachées Images attachées  

  5. #5
    Membre éclairé Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Points : 735
    Points
    735
    Par défaut
    La requête de Rainui est la seule façon de le faire, après tu te débrouilles pour la présentation.

    Tu crées par exemple une grille par code ou les colonnes sont définit dynamiquement (select Nom_Filiere from filière), chaque nom récupéré représente une colonne dans la grille, après même chose pour les lignes (select spécialité from spécialité).

    Une fois la grille est construite tu parcours le résultat de la requête données par Rainui et tu remplis ta grille.

    En gros c'est ça

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Merci Chamamo

    Je suis entrain de l'essayer, je ne dors pas.

  7. #7
    Membre éclairé Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Points : 735
    Points
    735
    Par défaut
    Dans la requête donnée tu rajoutes les colonnes Specialité et Nom_filiere dans la requête pour les libellés des colonnes (filière) et la première case des lignes (spécialité)

    n'oublie pas de les rajouter aussi dans le group by, tout ce qui figure dans le select doit figurer dans le group by

    Bon code.

  8. #8
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonjour,

    Tu crées par exemple une grille par code ou les colonnes sont définit dynamiquement (select Nom_Filiere from filière), chaque nom récupéré représente une colonne dans la grille, après même chose pour les lignes (select spécialité from spécialité).
    Comme dit dans mon précédent message, le contrôle DataGridView peut parfaitement répondre à vos besoins.

    Il existe la propriété Row.HeaderCell.Value qui permet de mettre du texte dans l'entête d'une ligne.

    Du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        'On créé une nouvelle ligne
        Dim _Row As New DataGridViewRow
        'On affecte le texte voulu à l'entête de la ligne
        _Row.HeaderCell.Value = "Essai1"
        'On ajoute la ligne au DataGridView
        DataGridView1.Rows.Add(_Row)
    "Essai1" sera affiché dans l'entête de cette ligne

    Edit: Je viens de penser qu'il doit être possible de faire un binding de propriété sur HeaderCell.Value et conserver le binding de donné sur le DataGridView.
    Du coup, vous pouvez mettre le résultat de la requête dans une DataTable, binder cette dernière au DGV et ajouter par code le Binding sur la propriété.
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  9. #9
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonjour à vous tous,

    si j'ai bien compris, JetLibre cherche à faire un pivot (tableau croisé dynamyque) de ces données. Si c'est bien ça, il faudrait regarder à ce niveau comme ici : http://msdn.microsoft.com/fr-fr/libr...=sql.105).aspx

    Une petite recherche avec "pivot SQL" donne pas mal de résultats.

  10. #10
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonjour,

    Si j'ai bien compris, ce qu'il souhaite faire (du moins pour ce qui est présenté) c'est compté le nombre d'enregistrements dans la table Employés suivant deux critères.

    Merci Sankasssss pour le lien, j'aurais encore appris quelque chose aujourd'hui
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  11. #11
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Rebonjour

    J'ai raté tous mon weekend en essayant toutes les solutions proposées, mais je n'ai rien réussi sauf la fumée qui sorti de ma tête. J'ai visité le lien que Sankasssss m'a proposé (j'ai appris une autre chose) mais ce n'est pas ce que je recherche.

    Résumant un peu:
    table filière (Code_Filiere, Nom_Filiere) qui contienne 127 enregistrements.
    Spécialité (Code_Special, Specialite) qui contienne 35 enregistrements.
    Employés (ID, Nom, DateNais, ... , Code_Filiere, Code_Special, ...)

    comme l'explique l'image

    et ce tableau doit être enregistrer dans la base pour pouvoir l'utiliser à n'importe quel moment.

    voila c'est moi maintenant
    Images attachées Images attachées  

  12. #12
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonjour,

    Je ne comprends pas pourquoi vous voulez enregistrer le résultat de la requête dans une table de la base de donnée.
    Les données à extraire sont déjà dans la BD, pour les récupérer ou mettre à jour, il suffit de ré-exécuter la requête.
    De plus, il est impossible de modifier le résultat de cette requête.

    Hier, j'ai pris quelques minutes pour tester la solution que je vous ai apporté, cela fonctionne à l'exception près qu'il est nécessaire de jongler un peu avec le résultat de la requête et le DGV pour les mettre en forme.

    Je vous aurais bien fait passé l'exemple mais je ne l'ai pas enregistré ...

    Bon dev.
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  13. #13
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Salut

    Merci Rainui pour ton aide. J'ai essayé ta requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT Filières.ID AS IDFilière, Spécialités.ID AS IDSpécialité, COUNT(Employés.ID) AS NombreEmployés
    FROM Employés 
    INNER JOIN
        Filières ON Employés.IDFilière = Filières.ID 
    INNER JOIN
        Spécialités ON Employés.IDSPécialité = Spécialités.ID
    GROUP BY Filières.ID, Spécialités.ID
    Erreur dans

    Erreur de syntaxe (opérateur absent) dans l'expression «Employés.IDFilière = Filières.ID
    INNER JOIN
    Spécialités ON Employés.IDSPécialité = Spécialités.ID»

    Si je fait ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Filières.ID AS IDFilière, Spécialités.ID AS IDSpécialité, COUNT(Employés.ID) AS NombreEmployés
    FROM Employés 
    INNER JOIN
        Filières ON Employés.IDFilière = Filières.ID 
    GROUP BY Filières.ID
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Filières.ID AS IDFilière, Spécialités.ID AS IDSpécialité, COUNT(Employés.ID) AS NombreEmployés
    FROM Employés 
    INNER JOIN
        Spécialités ON Employés.IDSPécialité = Spécialités.ID
    GROUP BY Spécialités.ID
    ça marche mais ce n'est pas ce qui est demandé.

    Je cherche encore

  14. #14
    Membre éclairé
    Homme Profil pro
    Technicien bio médical
    Inscrit en
    Décembre 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien bio médical
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 328
    Points : 768
    Points
    768
    Par défaut
    Bonjour,

    J'ai eu un peu de temps pour vous faire un exemple suivant ce que vous souhaitez faire.

    Le code est moche, simplifiable mais fonctionnel.

    J'ai utilisé une DataTable pour stocker le résultat de la requête de statistiques chose qui n'est pas utile en soit puis qu'elle n'est pas modifiable.

    J'ai aussi utilisé une requête Linq pour que vous voyez son utilisation.

    Bon dev.
    Fichiers attachés Fichiers attachés
    est ton amis, MSDN est ton maître, pour le reste il y a Developpez.net. Pensez au au et

  15. #15
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Bonjour Rainui

    je suis très reconnaissant pour les efforts que tu a fait pour m'aider. Je vois que utilise SQL server dans ton exemple et moi j'utilise VS12 avec MicroSoft Access2007 comme base avec FrameWorks 4.5 .
    je dois installer SQL Server pour pouvoir exécuter ton code. J'ai préféré qu'il soit du Access comme DB.
    encore merci et restant en contacte ainsi que nos autres amis.

  16. #16
    Membre à l'essai
    Homme Profil pro
    développeur VB
    Inscrit en
    Avril 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : développeur VB

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    bonjour JetLibre

    As-tu essayé le code de Rainui, car il n'a pas marché avec moi. Je crois que c'est ma faute de changer du SQL en access.

    Si tu as une solution SVP aide moi.

  17. #17
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Salut
    j'ai installé SQL server2008 sur ma machine et j'ai 86 erreurs :

    Type 'System.Data.SqlServerCe.SqlCeTransaction' is not defined.
    86 lignes de ce genres

    et 2 Warning :

    Warning 2 This project references an earlier version of SQL Server Compact that has no designer support in this version of Visual Studio. To continue without designer support, download SQL Server Compact 3.5 from the Microsoft Download Center (http://go.microsoft.com/fwlink/?LinkId=229598). To upgrade your assets to SQL Server Compact 4.0 and enable designer support, open the project and use the Add Connection dialog box to create a connection to the database. 0 0 WindowsApplicationSample

    Warning 1 The referenced component 'System.Data.SqlServerCe' could not be found. WindowsApplicationSample

    j'ai installé SQL Server Compact 3.5 et j'ai les mêmes erreurs. J'utilise comme toi VS12. J'ai ue une dépression à cause de cette application sur tous pour la matrice car elle est trop utile pour moi.

    Si quelqu'un arrive à une solution indépendamment de l'utilisation d'Excel (entrée - sortie des données) je suis très reconnaissant.

Discussions similaires

  1. Partage de tables (multi utilisateurs)
    Par lawokgluot dans le forum Access
    Réponses: 5
    Dernier message: 13/07/2006, 11h43
  2. [Tableaux] Différence tableau multi dimension
    Par rdams dans le forum Langage
    Réponses: 3
    Dernier message: 20/04/2006, 11h34
  3. requete multi table - multi champ
    Par Jean-Matt dans le forum Oracle
    Réponses: 6
    Dernier message: 14/10/2005, 17h18
  4. Alimentation d'une table de dimension date
    Par kluh dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 01/07/2005, 14h34
  5. Creation de table multi base
    Par baboune dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/02/2004, 09h23

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