none
Une requette sur SQL Server 2008 et Visual Basic RRS feed

  • Question

  • Bonjour,


    J'ai construit une base de donnée assez simple mais qui contient une complexité, en gros mes tables sont les suivantes coter CLIENT : "Client ", "Commande Client ", "Ligne Commande Client '," Produit ";    et puis du coter ACHAT : "Acheteur ", "Fournisseur ", "Commande Fournisseur ",  (qui est liée en même temps avec les tables Acheteur et Fournisseur )  "Ligne Commande Fournisseur ",  Produit (même table produit que pour les Clients) la table produit et reliée avec deux table "Mouvements " (Entrer/Sortie) et Ces tables Mouvements sont reliées a une table Stock et une table Emplacement

    Alors ma question et la suivante je veux gérer les emplacements dynamiquement :

    Ce qui veux dire que après chaque entrer de produit je veux que la colonne disponibilité dans la table emplacement change de valeur ( Entrer (la valeur passe a :0 ) et Sortie (la valeur passe a :1 )) sauf que sur cette requête il a d'autres contraintes c'est les contraintes de filtrage ( dans la table produit j'ai des critère telles que le poids et la taille qu'on retrouve aussi dans la table emplacement qui désigne la capacité de chaque emplacement en poids et en taille  et en fonction de ces critère et du  critère de base "la disponibilité des produits" , le programme doit me retourner les emplacements dans une Liste Box ou Combo Box dans le Formulaire "MOUVEMENT ENTRER " et après validation de ou des emplacements La valeur "disponibilité" dans la table emplacement  passe a :0 ce qui l'exclu pour la prochaine rentrer des produits en stock et la même chose en sortie les produits qui sont sortie leurs emplacements ou il était attribué la valeur de la colonne disponibilité passe a :1 pour qu'il puisse être utiliser a nouveau )

    En Gros c'est très COMPLEXE et je me demande est-ce-que je doit le faire avec "VB" .net ou "SQL" ou du "LINQ" ou les Trois.

    En une phrase c'est un filtre par rapport a deux critères dans une tables "EMPLACEMENT" (Disponibilité (0 ou 1) et Type ),  après le filtrage une comparaison entre deux tables Emplacements et Produits ( sur 2 colonnes POIDS et TAILLE ) et renvoi les valeurs de la colonne CODE EMPLACEMENT de la table EMPLACEMENT des tuples qui correspondent a la comparaison ces valeurs apparaitrai dans une liste BOX et qu'il soit possible de les sélectionner pour qu'il s'inscrive dans la table MOUVEMENT sur la ligne ou le focus et activer et après sélection la colonne DISPONIBILITÉ des emplacements sélectionnaient se modifie pour passer a une valeur booléenne (0 ou 1)

    Une dernière question sur les clefs Primaires des tables est-ce-qu'on pourrai les Personnaliser ou plutôt faire de l'import de données (comme par exemple importer les données d'une autre base de donnée avec les même types les même champs ex: de base de données "Sybase" qui le même langage T-Sql que SQL Server)

    information logiciel : Visual Studio 2008 Pro SP1 et "SQL Server" Express 2008
    information Compétence : moyenne peu de connaissance sur la création de classe ou d'objet personnaliser .

    Cordialement Merci

    P.S: Aider moi S.V.P
    samedi 6 juin 2009 21:46

Toutes les réponses

  • Bonjour,

    Est-il possible que vous puissiez nous indiquer la description de vos tables ? J'ai du mal à voir le schéma de votre table...

    Par exemple :

    Table1 (
        Id,
        Nom,
        Prénom
    )


    Cordialement
    Gilles TOURREAU - MVP C#
    samedi 13 juin 2009 19:40
    Modérateur
  • Bonjour,


    Bon voila je vais simplifier le schéma pour que vous puissiez m'aider

    Comme point essentiel j'ai une ligne Commande Client (LCC) et une Ligne Commande Fournisseur (LCF)


    LCC (

     IDCommandeClient (Clé Primaire),
     IDProduit                (Clé Primaire),
     PrixUnitaire,
     Qunatité,
     Solde
    )

    LCF (

    IDCommandeFournisseur (Clé Primaire),
     IDProduit                (Clé Primaire),
     PrixUnitaire,
     Qunatité
    )

    Mouvement (
    IDMouvement (Clé Primaire),
    DateMouvement,
    Quantité,
    IDStock,
    IDProduit,
    IDEmplacement
    )

    Produit  (
    IDProduit (Clé Primaire),
    IDFournisseur,
    IDCategorie,
    NomProduit,
    QuantitéParUnité,
    PrixUnitaire,
    StockMinimum,
    Poids,
    Taille
    )

    Stock (

    IDStock (Clé Primaire),
    NomStock,
    Adresse
    )

    Emplacement (

    IDEmplacement (Clé Primaire),
    CodeEmplacement,
    Désignation,
    Déscription,
    Disponibilité  (Bit)
    Poids1,
    Taille1
    )


    Alors je veux faire deux processus (entrer et sortie de produit en lui affectant un emplacement et le désaffectant en sortie)


    Entrer en Stock je veux que le Programme dans le FORME Mouvement Entrer qui va être Constitué des tables Suivante : LCF , Mouvement, Produit, Emplacement de pouvoir trier les emplacement qui sont vide et qui sont dans le même type d'emplacement voulu (ce qui veut dire que j'aurai un ComboBox ou in aura un type Unité ou palette) et que au moins le critère POIDS ou TAILLE du Produits Correspond a l'un des critères POIDS1 ou Taille1 de l'emplacement.

    Alors après avoir fais le trie je veux qu'il me retourne la liste des emplacements qui correspondent au critère dans une la colonne emplacement sous forme de source de de données de la table Emplacement ComboBox " Important cette source de données doit changer a chaque fois que le trie et fait"

    Alors quand je choisi l'un des emplacements je veux dire je le séléctionne la valeur Disponibilité de cette Emplacement change et devient 0 par exemple comme ca il ne me sera pas proposer pour le prochain produit qui vient

    Cette Opération se répete a chaque rentrer de produit


    Une autre question c'est que comme j'ai une commande forcement j'ai toute la liste des produit commandée et je voudrais savoir comment faire pour que cette liste soit vérifier en parallèle avec la rentrer des produits ( exemple un client commande 3 Produit X je lui prépare sa commande je rassemble 3 Produit X je les bipes ce qui evite de rentrer tous a la main et de calculer la quantité des Produit )

    Est-ce que c'est un compteur que je doit mettre pour déduire la quantité Commande ou je doit ajouter une table des champs ......



    En tous cas merci Gilles pour ton soutien je sais très bien que c'est trop de question Compléxe j'espere que vous m'aideriez a résoudre ca merci

    Cordialement

    P.S: S'il a un autre moyen de résourde ce problème je suis preneur ce n'est qu'une idée que je veux réaliser pour mon projet Merci



    lundi 15 juin 2009 08:30
  • Bonjour,

    Veuillez m'excuser pour la réponse tardive mais, quand vous dite :
    LCF , Mouvement, Produit, Emplacement de pouvoir trier les emplacement qui sont vide et qui sont dans le même type d'emplacement voulu (ce qui veut dire que j'aurai un ComboBox ou in aura un type Unité ou palette) et que au moins le critère POIDS ou TAILLE du Produits Correspond a l'un des critères POIDS1 ou Taille1 de l'emplacement.

    Ou trouve-t-on dans vos tables les informations concernant le type unité ou palette ?

    Soyez le plus explicit et le plus simple possible.

    Cordialement
    Gilles TOURREAU - MVP C#
    vendredi 19 juin 2009 20:06
    Modérateur
  • Bonjour Gilles,

    Bein voila un UPDATE des tables pour être plus claire juste une indication la table mouvement sera liéer au table Détail Commande (Client/Fournisseur) sur deux clé Primaires pour chaque table et LCF et LCC deviennent les tables Détail Commande (Client/Fournisseur)

    LCC = DétailCommandeClient (
     IDCommandeClient           (Clé Primaire de la table CommandeClient), 
     IDProduit                         (Clé Primaire de la table Produit),
     Quantité                          
     Solde
     Total
    )

    LCF = DétailCommandeFournisseur ( 
     IDCommandeFournisseur  (Clé Primaire de la table CommandeFournisseur),
     IDProduit                         (Clé Primaire de la table Produit),
     Quantité
     Total
    )

    IMPORTANT : c'est possible de faire une vérification de la commande en bipant la commande ce qui ouvre la commande dans une table () et que le bipage des produit vérifie les produits et les quantitées et met le champs EcartQuantité a 0 si la quantité de la commande correspond a la quantité réel )

    Mouvement (
    IDMouvement        (Clé Primaire),
    DateMouvement,
    EcartQuantité
    IDStock,                               (Clé Primaire Etrangère),
    IDEmplacement                     (Clé Primaire Etrangère),
    IDCommandeClient               (Clé Primaire Etrangère),
    IDCommandeFournisseur       (Clé Primaire Etrangère),
    IDProduitClient                      (Clé Primaire Etrangère de la table dbo.DétailCommandeClient .IDProduit),
    IDProduitFournisseur             (Clé Primaire Etrangère de la table dbo.DétailCommandeFournisseur .IDProduit)
    TYPE                                   (Unité ou Palette)
    CodeEmplacement             (Champs a équivaloire avec le champs de la table emplacement après chaque trie )
    )

    Produit  (
    IDProduit            (Clé Primaire),
    IDFournisseur,    (Clé Primaire Etrangère),
    IDCategorie,       (Clé Primaire Etrangère),
    NomProduit,
    QuantitéParUnité,
    QuantitéEnStock   (Calculer = Quantité Entrer - Quantité Sortie)
    PrixUnitaire,
    StockMinimum,
    Poids,
    Taille
    )

    Stock (

    IDStock (Clé Primaire),
    NomStock,
    Adresse
    )

    Emplacement (

    IDEmplacement     (Clé Primaire),
    CodeEmplacement,
    Désignation,
    Déscription,
    Disponibilité          (Bit)
    Poids1,
    Taille1
    )

    P.S: Comment créer un type anonymes en VB.NET comme par exemple

    Dim P = From Prod In db.Produit _
                        From Mouve In db.Mouvement _
                        Where Prod.IDProduit = Mouve.IDProduit _
                        Select New .... (puis je met prod.le champs que je veux sans effectivement choisir la clé primaire de la table)

    Je pense que toutes les informations sont présentes

    Merci Gilles Pour tous

    Cordialement
    samedi 20 juin 2009 21:59
  • Bonjour,

    J'attend toujours une réponse ou une aide de votre part je pense que c'est un peu compliqué mais je pense qu'avec vos conseil j'arriverai a résoudre ce mistère je peu eventuellement publier le logiciel en sources libre ce qui fera un tutorial riche sur le thème d'acces aux données en utilisant des requête SQL des vues des triggers et du LINQ to DATASET et du LINQ to SQL et aussi une partie ou il a du LINQ to OBJECT je pense qu'il complet et qui touche plusieur situation ceci dit si j'arrive a le finaliser

    Bon en tous cas j'attend vos question et vos réponse


    Pour toutes questions ou détails écrivez moi je serai a votre disposition

    MERCI

    Cordialement
    lundi 6 juillet 2009 12:00
  • Bonjour,

    Veuillez m'excuser de vous répondre si tard, est-il possible que l'on puisse continuer cette conversation en privée ?
    Mon e-mail : gilles.tourreau@pos.fr

    Merci d'indiquer le lien vers ce sujet de discussion dans le mail.

    Cordialement
    Gilles TOURREAU - MVP C#
    dimanche 26 juillet 2009 12:32
    Modérateur