Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Le VB, l'Access et la Jointure ... [ Base de données / ADO.NET ] (elguevel)

lundi 13 août 2007 à 21:42:40 | Le VB, l'Access et la Jointure ...

elguevel

Bonjour tout le monde,

Je sais pas trop quoi vous demander en faite mais j'vais tenter de m'expliquer (brievement si j'y arrive).

J'ai utilisé moulte langague pour differentes applis, et cette fois ci j'aimerai realisé une application en VB.Net avec une base "MS Access" (le truc simple quoi).

On va dire qu'en dev j'ai pas de probleme... En Bdd (j'aime pas trop çà mais) je me demerde ... Mais associer les deux c'est un enfer pour moi ...

J'aimerai en fait réaliser une application de "Devis/Facturation".

Pour se faire on va dire que ma BDD aura besoin de çà :

- Il me faut des clients.
- Il me faut des devis, il peut en y avoir plusieurs par clients.
- Il me faut des articles/prestations pour remplir mes devis.

J'ai donc le MCD (voir le MPD) simplifié suivant :

------------        -------------
  Client              Devis
------------  <---  -------------
(PK)CLIENT_ID        (PK)DEVIS_ID
 NOM                 #CLIENT_ID
 PRENOM              Designation
------------        -------------
                         |
                         |
                    --------------       ------------
                     Nomenclature         Article
                    --------------  ---> ------------
                     #DEVIS_ID            (PK)ARTICLE_ID
                     #ARTICLE_ID          Libelle
                     Quantite             Prix
                    --------------       ------------

- Je precise que mes tables ne sont pas complètes, c'est pour simplifier.
- J'ai mis (PK) pour la clé primaire et # pour les clé etrangères.
- La table "NOMENCLATURE" est une table de jointure entre "devis" et "articles", car un devis contiendra plusieurs prestations/articles.

Pour se faire j'ai decidé de passer au VB.Net (celà avait l'air au debut assez simple).

Les problemes sur lequels je tombes sont :

- Est-ce que mes relations & tables ont l'air corrects ? J'ai beau avoir fait du merise, j'arrive toujours pas à resonner logiquement avec çà !

- Est-ce que c'est plus simple/puissant de se taper du SQL à la main dans l'editeur ou utiliser l'assistant "Source de données" ?

- Si l'assistant permet de créer rapidement une application pouvant exploiter ce schéma, comment afficher d'un trait les articles de la nomenclature, avec leurs quantités ? (reunir les deux tables en 1 Grid).
J'ai placer mes grids avec l'assistant puis j'ai tenté de modifier les requetes après coup avec l'editeur de requête et j'ai un vieux message qui me dit "Le schéma retourné par la nouvelle requete est différent de celui de la requete de base" (non... par dit ??)

- A ton besoin d'ajouter du SQL dans le code pour faire les UPDATE, DELETE, et INSERT ? ou un composant se charge de çà ?

- Faut il realiser les relations dans "Access" ou les faires par la suite dans le concepteur ?

En fait j'ai plein d'autres questions, car je bute completement, et je perd patience avec çà...

En gros si vous avez pas envie de vous prendre la tete avec mes questions savez-vous ou je peux trouver des tutoriaux interessants et complets (ou livres) pour ce genre de cas.
Je ne trouve sur internet que des tutos expliquant les bases du SQL, ou alors des exemples sans jointures complexe. (ex. de base à la con : CLASSE -> ELEVE )

Je vous remercie par avance pour votre patiente (car j'en ai plus).

A+


mardi 14 août 2007 à 07:21:06 | Re : Le VB, l'Access et la Jointure ...

chaibat05


Salut,
La question qui résume tout tes déboirs :
Pourquoi réunir les deux tables en 1 Grid ?

D' après ton schema , qui est très correct d' ailleur, Il n' est nullement
question de ça ! Mais:
> Controls Textbox liés à ta table Devis (En-tete)
> Grid lié à ta table Nomenclature (Détails)
Et tout le problème réside dans :
Comment ajouter, impérativement, à Nomenclature le champ #Devis_Id lors
de chaque insertion de ligne de détail ?
Tu peux toujours essayer avec l' evenement OnAddNew de ton Grid.
Il y' a aussi BeforeInsert et AfterInsert.Mais ça sera très laborieux...!
De plus je ne te recommande pas de travailler directement dans tes tables.

Voici ce que je te conseille de faire:
1° Ajoutes deux Tables à ta base:
    *Tmp_Devis : même structure que Devis
    *Tmp_Nomenclature : même structure que Nomenclature
    Sauf que:
     -Elles ne sont pas liées.Ni entre elles ni à aucune autre table.
     -Pas de clé. Ni primaire, ni secondaire.
     -Null et chaine vide autorisé pour tout les champs

2° Pour ajouter un Devis:
    -Tu vides tes deux Tmp tables
    -Tu charges ton formulaire pour le quel , les controls devis seront liés
      à Tmp_Devis  et le Grid à Tmp_Nomenclature.
     Tu masques la colonne #Devis_Id de ton grid.Le Null pour ce champ
      étant toléré, tu ne seras donc pas obligé de le renseigner pour l' instant.

    Sur la commande Enregistrer:
    -Tu insères ( par code) Devis_Id dans la colonne Devis_Id de ta grille
     (pour toutes les lignes)
    -Tu fais une transaction:
      insert into Devis select * from Tmp_Devis
      insert into Nomenclature select * from Tmp_Nomenclature

3° Pour Modifier un Devis:
     Tu procèdes de la même façon sauf qu' au début, tu insères dans Tmp_Devis
     la ligne du Devis en question et dans Tmp_Nomenclature, les détails de ce même Devis.
     En prenant soin de vider les deux tables aupréalable, bien sûr...
   
     Pour enregistrer les modifications,
     -Tu insères Devis_Id dans la colonne Devis_Id de ta grille pour les lignes qui auront
      été ajoutées.
     - Tu fais une transaction:
      delete * from Nomenclature where Devis_Id=" & LeDevisEnQuestion
      delete * from Devis where Devis_Id=" & LeDevisEnQuestion
      insert into Devis select * from Tmp_Devis
      insert into Nomenclature select * from Tmp_Nomenclature

Dans un cas comme dans l' autre , si tu annules la saisie, tu décharges ton formuliare
et c' est tout.

Voici en GROS la technique.Il ne te reste plus qu' à pauffiner le code...
C' est facile à mettre en place mais ça demande quand même beaucoup de finesse.
Il n' ya donc pas beaucoup de code SQL.Une transaction suffira.Même l' integrité des
données, en cas d' echec, et avec une gestion d' erreur bien organisée, elle sera prise
en charge par Access si tes relations y sont bien notifiées.
Toute le travail reste dans l' initialisation du formulaire et dans le control de la saisie.
Pour ça , on te fais confiance :-) Tu t' en sortiras sûrement.

Espèrant donc que ce condensé répond à toutes tes questions.

PS: Il se peut que je ne donnes pas suite à cet échange.
C' est juste qu' en ce mois-ci, j' ai rarement l' occasion de me connecter.
Mais si l' opportunité se présente, je ne manquerais pas de suivre...

Amicalement.


I LIKE TO BE HERE WHEN I CAN .
* Rolling   




Cette discussion est classé dans : access, vb, id, devis, articles


Répondre à ce message

Sujets en rapport avec ce message

VB.NET et Access [ par shadow1779 ] Bonjour je fais une connection a une base de donnée access sous VB.NET, cependant j'aimerai savoir comment faire pour traiter plusieur chose,deja comm VB et Access une erreur bizarre [ par Sadnotrue ] Bonjour à celle ou ceux qui lirons ce message !!J'ai un message d'erreur dans mon appli et je comprend pas pourquoi. Je consulte une base de données A probleme access vb [ par Mekhanik ] Voici mon problème :J'éxécute une requete afin de modifier un ou plusieurs champs dans une base access grace à un update.Lorsque que j'affiche la requ Base de donnée Access et VB.NET [ par shadow1779 ] Bonjour,j'apprend aujourd'hui les bases de données Access avec VB.NET cependant je n'arrive pas a mettre mon Reader dans une textbox car il me dis que [VB.NET] Créer une BDD [ par Botanique ] Bonjour, j'ai créé une BDD sous Access et j'utilise via une interface en VB.NET J'aimerai que l'utilisateur puisse transformer cette BDD Access en un ACCESS ou SQL SERVER [ par ITALIA ] Salut, Voila mon souci je doit developper une Appli VB interrogeant et modifiant une base de donnée.Le probleme c'est que le nombre d'utilisateur simu Choix : Access Ou Vb net [ par boumbo73 ] Bonjour,Voila je dois faire une base de données gérant des pannes, chaque matin je dois établir un récapitulatif des pannes qui ont lieu la veille. Ce Liaison VB --> Access 97 à 2003 [ par helard ] Bonjour a tous, J'ai une application VB qui tourne depuis un petit moment et qui marchait bien, cette application faisait appel a une base access 97. Supprimer des ligne d'une base Access via VB.net [ par phicot ] Voila je souhaite pouvoir supprimer une ligne d'une base Access en VB.net. Voici mon code qui se trouve dans un bouton "supprimer" VISUALISER UN ETAT ACCESS A PARTIR DE VB [ par asimengo ] Bonjour à tous, Quelqu'un pourrait me dire comment visualiser un état ACCESS à partir de VB. Voici un extrait dans une procédure----------------------


Nos sponsors

Sondage...

CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,686 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.