GÉNÉRATEUR DE CODE - [ARCHITECTURE 2-TIERS - 3-TIERS - N-TIERS] [VB - CSHARP] [

romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 - 16 janv. 2007 à 18:29
nycos62 Messages postés 11 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 30 juillet 2007 - 10 sept. 2010 à 10:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41128-generateur-de-code-architecture-2-tiers-3-tiers-n-tiers-vb-csharp-net-1-1-et-net-2-0-access-sql-server-generation-anglais-francais

nycos62 Messages postés 11 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 30 juillet 2007
10 sept. 2010 à 10:50
Dommage que tu n'es pas fait de select avec en paramètre les clé primaires
nycos62 Messages postés 11 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 30 juillet 2007
10 sept. 2010 à 10:15
c'est énorme !
ecosmose Messages postés 46 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 30 septembre 2010
23 janv. 2008 à 18:49
Excellente source pour créer une architecture N-Tiers d'un prtojet CLient / Serveur en .NET

Manque peut être la sérialisation des objets métiers par une factory ou un service..
ecosmose Messages postés 46 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 30 septembre 2010
23 janv. 2008 à 16:06
Salut à Toi Romagny...

J'étudie en ce moment avec une grande attention tes sources...Je tiens tout d'abord à te féliciter pour la complétude et le souci du détail que tu apportes à tes applis...well done !

Actuellement je travaille sur la sérialisation et désérialisation des objets de mon Projet qui englobe un client lourd (WinForm) .net 2.0 et une BD Sql Server 2000 (avec des import export Excel de 2000 à 2007 mais on verra plus tard)..

Or je me demandais si tu pouvais me donner ton avis sur la génération de manière dynamique (lors de l'initialisation du programme et non en classe fixe dans le projet source) des objets Métiers qui seront alors des miroirs des tables de la BD.

je souhaitais coder un outil générique qui génére les objets métiers puis des listes de ces objets et d'accèder aux objets par la couche DAO (Data Acces Object) qui adapte ensuite les traitements contrôleurs et affiche correctement les GUI (pour qu'il retrouve ses petits ;p)et non par un nommage (fixe) des attributs dans des .cs...comme le fait ton générateur (sinon cela ne seraitpas un générateur ;-)

L'objet de mon commentaire n'est pas de te demander les sources du DLL mais de te demander si au niveau pratique il est mieux de fixer des objets métiers dans un projet ou créer des objets métiers dynamiquement lorsqu'une BD est modifiée régulièrement (modification des noms de champs, ajout de nouvelles tables etc...) sachant que l'affichage est tout de même fixé..

Voila si cela t'intéresse je pourrais t'envoyer et partager mes sources ...et si c'est validé les poster sur Code-sources...je précise que je suis novice en .NET mais que je programme depuis 5 ans (Java, C++, Objet, SQL etc...)

Et merci encore pour le partage des sources même si d'autres les exploitent à leur compte en essayant de porter tes lauriers...rendons à César ce qui lui appartient ;-)

Pourrasi tu aussi nous dire quels sont les liens avec ton autre appli (plus récentes) CS2GEN

Merci

Julien Gourdet
Ecosmose : Association ecologiste et culturelle
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
29 avril 2007 à 00:25
arf j'avais pas vu pour le code je n'ai pas trop envie car même si ce n'est pas un chef d'oeuvre, je risque trop de voir arriver des copies :p
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
29 avril 2007 à 00:20
Bonjour PDL
en effet la source ne permet pas une gestion avec le datagridview (qui passe par l'intermediaire d'un bindingsource+dataset+tableadapters lorsque l'on utilise les sources de données de Visual Studio et ses datasets typés)

pour un datagridview avec le code généré par le générateur :
- soit on ne fait que de la consultation (lister des données) et on peut alors utiliser la propriété DataSource du DatagridView
- si on désire pouvoir permettre la consultation et la saisie(ajout lignes,modification et suppression) il faut par soit même gérer l'ajout de datarow, récupérer le changement de valeur avec entre autres les événements cellvaluechanged du datagridview,rowvalidated,...
2 possibilités alors
>soit à chaque ajout,modification,suppression de ligne dans le datagridview > on met à jour à la fois la base et la couche métier
>soit on ne modifie que la couche métier ,on peut alors par exemple utiliser les méthodes spécifiques pour changer la valeur de chaque memebre lors de l'evenement cellvaluechanged du datgridview et finalement mettre à jour la base avec la méthode updateAllBadata() (la mise à jour se base sur le rowstate de chaque objet metier - le principe de fonctionnement est similaire à celui d'uin dataset+tableadapter c'est selon l'etat de chaque ligne qu'une requete insert,update,delete est emlployée, de plus si une mise à jour n'est pas faite alors la ligne recoit le message erreur dans sa propriete rowerror)

il était prévu d'améliorer largement l'ensemble avec entre autre une propriété HasError pour chaque table, une gestion complête des accès concurrentiels avec accès optimiste
pour le datagridview il était prévu que je génére une bonne partie de la couche présentation en fait en m'inspirant un peu de ce que le rad windev donne (en mieux)
mais je ne suis plus trop motivé pour en ce moment ou il faudrait alors que je ne me concentre plus que sur la génération en C# et en anglais car sans cela cela représnete rop de travail
+
cs_pdl Messages postés 134 Date d'inscription mardi 20 novembre 2001 Statut Membre Dernière intervention 16 juin 2008
27 avril 2007 à 15:55
Re,

Pour ma première question, voir un tout petit peu plus haut, j'ai trouvé une alternative, elle vaut ce qu'elle vaut, mais cela solutionne mon problème pour l'instant. En gros, je ne permet pas d'ajouter des records directement dans le DataGridView, mais je le fais dans des textBox et puis j'appelle la méthode AddObject... et cela fonctionne très bien.

Maintenant, j'aurais voulu savoir s'il y avait moyen d'avor le code source de la dll Metier, car j'aimerais ajouter quelques méthodes supplémentaires, comme le fait de pouvoir ajouter une where clause lors de l'appelle de LoadXXX, car il est parfois intérressant de pouvoir faire une recherche sur un autre critère que les PK et FK.

Y a-t-il aussi un moyen facile pour trier le résultat contenu dans BObjectsXXX ?

D'avance merci pour tes réponses.
zhaojc Messages postés 1 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 27 avril 2007
27 avril 2007 à 08:10
I want to get the english version.please
vkuttyp Messages postés 1 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2007
26 avril 2007 à 10:22
Thanks
cs_pdl Messages postés 134 Date d'inscription mardi 20 novembre 2001 Statut Membre Dernière intervention 16 juin 2008
25 avril 2007 à 16:05
Salut,

Ta source est vraiment intéressante. Un fameu boulot de fait. J'ai tout de même une question. J'ai généré les classes selon le modèle n-tiers. Pas de problème jusque là.

Ensuite, j'ai fait un petit bout de code qui me permet de charger une table et de la mettre dans un DataGridView, que j'ai lié à un bindingNavigator. J'ai aussi lié quelques textBox pour relféter le contenu d'une ligne du DataGridView dans des TextBox.

Le fait de lier le DataGridView au BindingNavigator, permet de facillement naviguer et d'ajouter des lignes dans le DataGridView. Il me reste un problème, comment est-ce que je peux faire pour valider mes ajouts dans la db ?

Dans l'exemple, tu utilises
#  // pour mettre à jour la base il faut faiure appel à la methode UpdateAllBData()
# // l'ensemble des lignes ayant ete ajoutes,modifiees,supprimees en local seront mises a jour
# // en cas de probleme d'acces concurrentiel l'erreur de la ligne est stocker dans son rowstate (ex : oCONTACT.BObjectCONTACTs[0].RowError)
# oCONTACT.UpdateAllBData(); 



Mais la méthode UpdateAllBData() n'existe pas (ou plus). Comment est-ce que l'on fait dès lors ?


A titre d'info, voilà mon bout de code qui permet de charger les données dans le DataGridView

BData.OleDbConnected.sConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Dev\Visual Studio 2005\Projects\theatre\theatre\theatre.mdb";
            Ctrl.spectacle oSpectacle = new Ctrl.spectacle();
            oSpectacle.Loadspectacles();
            BindingSource spectacleBindingSource = new BindingSource();
            spectacleBindingSource.DataSource = oSpectacle.BObjectspectacles;
            bindingNavigator1.BindingSource = spectacleBindingSource;
            dataGridView1.DataSource = spectacleBindingSource;

            txbId.DataBindings.Add("Text", spectacleBindingSource, "ID_Spectacle");
            txbDescription.DataBindings.Add("Text", spectacleBindingSource, "Description");
            txbAnnee.DataBindings.Add("Text", spectacleBindingSource, "Annee");
            txbPrix.DataBindings.Add("Text", spectacleBindingSource, "Prix");
            txbPrixPrevente.DataBindings.Add("Text", spectacleBindingSource, "PrixPrevente");
            txbPrixVIP.DataBindings.Add("Text", spectacleBindingSource, "PrixVIP");


D'avance merci pour les éclaircicements.
cs_CALCAREA Messages postés 2 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 1 septembre 2007
4 avril 2007 à 22:28
Bonsoir,

Le code que vous proposez semble très intéressant. Je débute en C# et en Visual Studio. J'ai téléchargé le code et je vais m'empresser de regarder ça de près en espérant faire de rapides progrès et re-venir faire des commentaires.
J'ai une question à poser : je programmais jusqu'à présent en Windev. N'étant pas dans mon travail amené en faire 100% d'informatique, j'avais énormément apprécié le RAD : après avoir beaucoup réfléchi au modèle physique de la base de données, le RAD m'avait construit toute l'interface utilisateur en tenant compte de tous les liens entre les tables et tout fonctionnait très bien sans rien reprendre. Je suis obligé actuellement de programmer en C# sous Visual Studio. Cet outil coûte une fortune et je n'arrive pas à trouver un RAD équivalent à celui de Windev si ce n'est ce que vous proposez en espérant que cela correspond à ce que je cherche. Comment se fait-il qu'un outil comme Visual Studio ne propose pas de RAD ?
Merci pour votre réponse
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
28 mars 2007 à 01:17
éé mercii :p
mais ce n'est pas fini
je ne suis plus trop dessus en ce moment mais j'y pense
leproc Messages postés 81 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 22 octobre 2008
27 mars 2007 à 16:51
Alors la je sais pas quoi dire Bravo, tes génial, magnifique.
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
9 mars 2007 à 00:07
si en generant en cochant architecture 2-tiers cela devrait etre suffisemment accessible :)
sinon il faut ajouter un projet windows form et ajouter une reference a ce projet windows forms pointant vers le projet qui a tét généré (demarche pour ajouter une reference >> clic droit sur projet ou dossier refrence >> ajouter une reference > onglet projet > et selectionner le projet)
++
rahmed Messages postés 1 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 8 mars 2007
8 mars 2007 à 20:13
y a pas de code source simple pour connecter des
bases de données acces, avec manipulation des champ par programmation? je suis trés débutant.
merci d'avance pour vos aides.
à bientôt.
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
9 févr. 2007 à 11:23
Salut
Je passe vite fait juste un mot pour vous dire avant que la source ne disparaisse de la première page de Csharpfr.com
S'il n'y a plus de mise à jour en ce moment ce n'est pas que l'application est morte bien au contraire
En effet l'application avait atteint un peu ses limites qui rendait difficile de faire encore des ajouts de fonctionnalités
Aussi je l'ai quasiment réécrite complètement ou du moins toute la partie « invisible » c'est-à-dire le code car je conserve la même IHM vu que je me rends compte que c'est encore sous cette forme que c'est le mieux pour la rapidité la lisibilité de création des tables et relations (même s'il n'est pas impossible que j'intègre une vue designer type « power Amc » par la suite vu qu'il suffira que je ne modifie que la partie IHM de l'application .
Sinon au niveau code cela n'a plus rien a voir et peut être même que je fournirai l'ensemble des sources et schémas de l'application, car cela peut même servir exemple pour apprendre
En fait plus ca va en plus je me rapproche un peu des structures comme un peu ce qu'on peut voir avec les sources « jeux » de Bidou le but n'étant pas de rajouter de la complexité mais bien au contraire avoir la bonne strategie de developpement

Donc au niveau de l'application, elle permettra de générer en plus la couche n-tiers
Le code générer pourra être soit en anglais soit en français(ex de methodes generees: AjouterContact et AddContact) (le public qui pourra etre interesse par la source sera donc elargi)
Sinon avec la reecriture de l'application, il me sera plus aisé de mettre en place la generation de type R.A.D. cad de la couche présentation tant pour les windows forms que pour ASP.NET(je plenche aussi pour generer une bonne partie du site web avec la navigation,la securite,la mise en page,etc.)le tout devant etre suffisamment souple pour qu'en suite on puisse facielment ajouter des elements modifier au code genere
Le principe mem de generation du code pourra même s'etendre au dela que de generer que pour Ado.net
Donc vous l'aurez compris l'appli n'est pas morte bien au contraire donc continuez a la suivre lol :p
Sinon peut etre que je la posterai en nouvelle source (cette source etant plus indiquer pour des debutants) d'ailleurs lol quand j'y pense si ceux qui passent un bts tombe la dessus ? moi a l'epoque si j'etais tombé sur une source comme cela j'aurais bien rigoler lol
Par contre cela risque d'etre pas avant une semaine avant la premiere mise a jour
++
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
2 févr. 2007 à 00:58
"Est-ce qu'il est possible de modifier le nom du namespace Metier par autre chose ?"
> oui tout a fait le refactoring fera son travail

Dommage pour les vues mais bon s'il y a que ça c'est pas grave.

"Est-ce qu'on peut penser qu'il y aura un choix du type de gestion lors de la génération du projet ?"
> j'y avais pensé et comme j'ai dit plus haut on a ainsi la liberté du choix(et c'est plus facile de saisir le nom d'une procédure stockée que devoir saisir la requête)
mais il est pas impossible que je mette le choix en place

sinon je vais essayer de faire une aide (même si c'est avec word)

il est possible que ce projet ne soit pas prêt d'etre fini,celui-la j'ai l'intention d'y concentrer beaucoup d'elements
certains ont eu la voix coupée lol mais c'est peut etre pas fini :p
++
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
1 févr. 2007 à 22:12
Architecture 2-tiers : couche présentaion (IHM) + couche persistance (accés aux données de la base)
la couche présentation : c'est ce que vous codez (un projet windows forms ajoute a la solution avec une reference au projet bibliotheque de classes genere)
la couche persistance : c'est le projet bibliotheque de classe générés
sont générés pour Access
la classe OleDb : la classe auquel il faut accéder
la classe OleDbConnecte
sont générés pour Sql Server
la classe SqlClient : la classe auquel il faut accéder
la classe SqlClientConnecte

Exemple de code pour charger
Persistance.OleDb.CONTACT oContact;
oContact = new Persistance.OleDb.CONTACT();

Persistance.OleDbConnecte.sCONNECTIONSTRING = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\romagny\Mes documents\Contacts.mdb";
System.Data.OleDb.OleDbDataReader oOleDbDataReader = oContact.ChargerCONTACTs();

while (oOleDbDataReader.Read())
{
comboBox1.Items.Add(oOleDbDataReader["nom_contact"].ToString());
}


bon il faut que je rajoute quelques méthodes, comme une qui renvoie un dataset,une qui permet de compter les enregistrements,etc.



Architecture 3-tiers
couche présentation + couche métier(classes et classes collections) + couche persistance
(ce qui etait deja present)


je pense egalement mettre en place architecture n-tiers
couche présentation+ controleur+ couche metier+ persistance

ainsi cela sera deja pas mal complet
et bien sur a plus ou moins long terme le R.A.D. (qui générera toute la couche présentation avec le code bien sur)
enfin bref je vois egalement qu'il faudrait que je fasse une aide ...

++
cs_Escob Messages postés 14 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 14 juin 2008
1 févr. 2007 à 21:41
Bonjour,

Je viens de télécharger la dernière version car je suis super interssé par la techno 3-TIER en revanche, dans le projet généré, je n'ai plus que les fichiers sqlclient et sqlclients.
Ai-je raté quelque chose ?

Est-ce qu'il est possible de modifier le nom du namespace Metier par autre chose ?

Dommage pour les vues mais bon s'il y a que ça c'est pas grave.

En revanche, la possibilité de laisser ouvert le mode de gestion soit par requete ou procedure stocké c'est super bien. Est-ce qu'on peut penser qu'il y aura un choix du type de gestion lors de la génération du projet ?

En tout cas bravo et tous mes encouragement pour la suite et peu importe la façon de coder, le résultat est de grande qualité.
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
1 févr. 2007 à 21:09
Bonjour Escob :)

lorsque vous générez un projet avec pour base de données Sql Server :
- le script sql généré contient les procédures stockées
- le projet visual studio : les requetes sont codées en dures(ex: SELECT * FROM NOMTABLE) avec le type texte(System.Data.CommandType.Text)
vous pouvez soit conserver les requetes en dures soit utiliser les procédures stockées correspondantes, dans ce cas il faut modifier dans la classe SqlClient la méthode CreerCommand en rapport

exemple :
oSqlClientConnecte.CreerCommand(System.Data.CommandType.Text, "INSERT INTO [CONTACT]([CONTACTcode_type_contact],[nom_contact])VALUES(@CONTACTcode_type_contact,@nom_contact)")
Devient >>
oSqlClientConnecte.CreerCommand(System.Data.CommandType.StoredProcedure, "InsertContact")
InsertContact etant le nom de la procedure stockée
Attention !! il ne faut en aucun cas supprimer les méthodes AjouterParametreCommand, seuls les parametres de la methode CreerCommand sont a modifier



Bien entendu il faut avoir executer le script (ou les parties necesaires) pour pouvroir acceder aux procédures stockées désirées
les procédures stockées porte des noms trés "parlants" qui permet facilement de les identifier et l'action qu'elles réalisent en effet elles ont un préfixe (Select,Insert,Update,Delete) + le nom de la table ensuite :
Exemple:
SelectContact
InsertContact
DeleteContact
UpdateContact


De ce fait vous avez le choix soit de laisser tout en requetes en dur,
soit utiliser autant de requetes en dures que de procédures stockées (ce qu'il me semble il est recommandé de faire vous dirons les spécialistes en db)
soit utiliser que des procédures stockées


Sinon pas de vues de prévu actuellement .

voila, mercii
et merci pour ces bonnes questions qui il est vrai étaient à éclaircir, d'ailleurs il y en a queques unes encore,au début j'avais prévu de faire une aide,ba peut etre que je verrai cela pourrait etre bien utilesurtout plus l'application "grossit"...
++
cs_Escob Messages postés 14 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 14 juin 2008
1 févr. 2007 à 12:20
Une autre question, avez-vous prevu d'ajouter la génération des vues ?
cs_Escob Messages postés 14 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 14 juin 2008
1 févr. 2007 à 12:17
Encore une cette appli est super utile.
J'ai simplement une question a propos du petit fichier script généré en même temps que le projet.
Est ce que je doit ajouter les procédures stockées dans sql server ?
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
31 janv. 2007 à 23:55
erf a oui je viens de regarder
en même temps comme je l'avais dit au début même si l'application marche impéccablement (bon sauf forcement celui pour qui le but est de trouver des bugs il suffit par exemple qu'il trafficote au niveau de la saisie des types de données) ce n'est encore qu'un "prototype" et tout n'est pas présent, d'ailleurs j'etudie actuellement pas mal la couche présentation(tant pour .net 1 et 2 en windows forms que pour ASP.NET) vu que mon but sera d'ici quelques temps d'en faire un R.A.D., (je prévois peut etre egalement de créer un générateur de sites web - application a part)

l'application n'est pas terminée, et seulement lorsque celle-ci sera presque terminée j'optimiserait le code,j'ajouterai des interfaces de classes,etc.
m'enfin vous plaignez pas quand meme lol parce que il me semble que c'est quand meme deja pas mal lol

mais merci pour le conseil, ce n'est pas tombé dans l'oreille d'un sourd

++
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
31 janv. 2007 à 23:27
lol ouaip ba justement il me semble avoir vu que dans le magazine programmez de fevrier il y a un article sur le design pattern strategie
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
31 janv. 2007 à 23:16
"L'efficace" est bien ce qui m'amenait à un pattern strategy. Et je n'ai jamais parlé d'une seule classe, mais au contraire.
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
31 janv. 2007 à 21:15
sinon oui c'est vrai pour le français ce sont des restes du tems (malheureux lol) ou je developpais sous WinDev, d'un autre côté ce n'est pas plus mal car ainsi les plus débuatnts comprendront mieux un "ChargerContacts" qu'un "GetContacts" par exemple

de plus je prends note du conseil au niveau des designs patterns mais je vois mal comment faire une seule classe pour générer 4 types de projets(.net 1 et .net 2 en vb ou c#), deja que la c'est enorme et je prefere bien separer quitte il est vrai a faire des repetitions ainsi on peut mieux gerer separement et de maniere specifique, ce que l'on perd en place on le gagene en lisibilité et en simplicité, pour moi le but n'est pas de faire un code "vachemen compliqué" qui gonfle bien l'égo que personne ne comprendra mais de faire un code simple,clair et efficace

++
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
31 janv. 2007 à 20:57
erf se referer au second message (plus haut ^^) je vais pas me repeter
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
31 janv. 2007 à 01:23
Mise à part que c'est moche de coder en français, tu devrais jeter un oeil du côté des design pattern (typiquement le Strategy) ca eviterait un paquet de variable inutiles et du code redondant.

Genre :
oGenerationProjetVs2005
oGenerationProjetVs2003
...
Liptipoyon Messages postés 13 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 29 janvier 2007
29 janv. 2007 à 13:30
Ben oui, je comprends ton point de vue sur oracle,

Leur politique n'est pas top...et la plus part de leurs produits sont pas fameux... sauf à mon avis le RDBMS je travail avec depuis bientôt 10 ans et c'est du costaux...

De plus le PL/SQL est à mon avis un peu plus puissant que le T-SQL, mais je ne suis peut-être pas assez impartial- ;-)

Je reste à l'écoute.

A++
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
29 janv. 2007 à 13:14
Saut,
mercii
euu a yé les procédures stockées sont implémentées pour Sql Server ,peut être n'as pas vu ...

sinon oui c'est vrai que ce ne serait peut être pas une mauvaise idée de mettre en place pour Oracle(bien que je ne suis pas spécialement fan de ce SGBD,pour dire je lui prefere encore MySQL c'est un peu pour ca si il est laissé de coté) je vais y reflechir et peut etre que je te ferai signe par mp :)

sinon meme si l'application a passé un certains cap,je ne vais pas pour autant la laisser de coté, car il y a pas mal de choses (et même tellement lol) que je vois à ajouter,améliorer mais cela demande une reflexion ce qui fait qu'il y ait des chances qu'il n'y ai plus de mises à jour pendant un moment

en plus les pb que tu m'as montré m'ont permis de me rendre compte que j'aurais du gérer les relations de manieres plus poussée et independante (en ciblant d'avantage les relations pour chaque table plutot que par l'intermediaire des champs) ...

voila a bientot
++ :)
Liptipoyon Messages postés 13 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 29 janvier 2007
29 janv. 2007 à 09:19
Salut,

Rien à re-dire c'est nickel pour moi, j'ai bien encore des petites erreurs mais elles sont plutôt due à ma db. (mots réserver de vb dans les noms de champs ou table sans PK).

Félicitation pour ton travail

note bien que si tu as encore de l'énergie reste l'implémentation de procédure db pour SQL server ;)

A++

PS : si tu es intéressé par reproduire cela sur oracle c'est une db que je connais assez bien ... ;)
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
25 janv. 2007 à 21:39
Bon a yé j'ai vu oui ou cela faisait des doublons pour les méthodes et j'ai arrangé cela,enfin tu me diras parce que ce soir j'avais pas trop la tete a coder ...
oui j'avais oublié le "&&" (en fait j'avais du faire un copier coller depuis le code pour genrerer en C# et j'avais du oublier de remplacer celui la au passage
++
Liptipoyon Messages postés 13 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 29 janvier 2007
25 janv. 2007 à 12:03
Salut Romagny13,

Je découvre le c# donc maintenant en vb j'ai un peux plus mes marques..merci

> ces remarques ne concernent que la génération VB
juste des petites remarques toutes simple pour faire avancé le chilblick ;)
Avec des clés primaire multiple la fonction Trouver de la table
génère ceci :
If ListTS_PARAMs(i).TYPPARAM TYPPARAM && ListTS_PARAMs(i).VALUE VALUE
> il suffit de remplacer "&&" par "and" l'absence du then est corrigée par VS.

Dans le cas de champs contenant des objets Binaire (ou Blob ou oleObjet..) ils sont défini comme "Bytes[]" alors que "Bytes" suffit.

Ma remarque précédente est aussi d'application..

Sinon que demande le peuple... ;-)

A++ & courage
Liptipoyon Messages postés 13 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 29 janvier 2007
23 janv. 2007 à 09:22
Bien, bien,

J'attends donc,

Pour t'expliquer mes clés étrangères, je pense qu'il y a une petite confusion entre deux clés et une clé double ... dans mon cas il s'agit bien d'une clé double.

Ex: dans la table mère dossiers avec deux dossiers (1,2) avec chaque fois 2 versions du dossier (0 actuelle & 1 première archive) soit 4 records.
La clé est définie comme suit (PK).:(ID identifiant du dossier + VERS Numéro de Version) ou seul la combinaison des deux clé est unique !!

La table des autorisations d'accès sur les dossiers est donc liée par une double clé étrangère à la table des dossiers.
Cette table est une table de clés.
PK = la clé unique de la table des autorisations.
FK_ID & FK_VERS = la clé étrangère vers la table des dossiers
FK_PERS une clé étrangère vers les personnes (ici id de 45 à 47> les trois même personnes ont accès aux deux dossiers et à leurs deux versions)

Soit
DOSSIER => 1, n => AUTORISATION
ID VERS => PK FK_ID FK_VERS FK_PERS
1 0 1 1 0 45
-----------------------> 2 1 0 46
-----------------------> 3 1 0 47
1 1 4 1 1 45
-----------------------> 5 1 1 46
-----------------------> 6 1 1 47
2 0 7 2 0 45
-----------------------> 8 2 0 46
-----------------------> 9 2 0 47
2 1 10 2 1 45
----------------------> 11 2 1 46
----------------------> 12 2 1 47


J'espère que mon explication est compréhensible ;)

A++
& Merci
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
23 janv. 2007 à 02:15
éé une mise a jour arrive
je viens d'implementer la generation pour .net 1.1
et je mets egalement en place la generation Vb
donc surement demain soir ...

sinon ca m'etonne ce que tu dis Liptipoyon parce que j'ai un peu tester et j'ai plus de doublons
maintenant il faudrait voir les relations de tes tables si tu pouvais un peu m'expliquer lol que je puisse cibler exactement lorsque ca fait un doublon,enfin je vois apparemment tu dois avoir deux cles ... je vais essayer de trouver


++
Liptipoyon Messages postés 13 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 29 janvier 2007
22 janv. 2007 à 13:30
Salut romagny13

Sans te commander ce serait cool aussi de mettre à dispo les sources de Net2CsGen.Metier.

ça me plairais bien d'élargir to travail vers oracle..;) avec retour de source (off course)

Merci

Liptipoyon
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
22 janv. 2007 à 13:21
Super !!!
Liptipoyon Messages postés 13 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 29 janvier 2007
22 janv. 2007 à 11:57
Salut, me re-voilà
j'apprécie ta ténacité et ton sérieux ;)

J'ai vu pour l'extraction des clés c'est bien mieux,
j'ai vu aussi pour les noms de champs avec des caract. spéciaux. cool


Mais pour moi subsiste le problème des procédures en double avec des clés étrangères multiple...

public void ModifierPATIENTDeVACCIN(Int32 ID_VACC,Int32 ARCH_ID)
{int nIndex = this.TrouverIndexVACCINRecherchee(ID_VACC);
this.ListVACCINs[nIndex].ARCH_ID = ARCH_ID;
}

public void ModifierPATIENTDeVACCIN(Int32 ID_VACC,Int32 ID_PATIENT)
{int nIndex = this.TrouverIndexVACCINRecherchee(ID_VACC);
this.ListVACCINs[nIndex].ID_PATIENT = ID_PATIENT;
}

enfin c'est pas essentiel y'a facilement moyen de corriger à la main

Grand merci pour to travail

Je l'ai déjà adopté.

A+ ;)
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
19 janv. 2007 à 22:01
oui tout a fait lol
ba a yé j'ai arrangé tout ca (enfin il faut que je teste teste teste et reteste car on sait jamais)
j'ai egalement mis en place une gestion a 2 niveaux des noms des tables et des champs ainsi on peut parfaitement avoir des tables et des champs ayant des espaces ou caracteres speciaux (ex : N° Produit)

l'application permet egalement maintenant d'extraire les relations (cles etrangeres) pour les bases Access (pas encore fait pour Sql Server)

et on peut avoir des cles sur plusieurs champs desormais (mais il faut quand meme comme je l'ai dit que je teste encore) et les procedures ne devraient plus etre en double

voila plus plusieurs petites autres choses ca devient pas mal

++ :)
Liptipoyon Messages postés 13 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 29 janvier 2007
19 janv. 2007 à 14:21
Nickel les modifs

Bon on continue ?

La gestion des clés étrangères c'est très bien sauf en cas de clé étrangère multiple...
Car si on défini deux fois une clé étrangère vers la table mère, certaine procédure ce crée plusieurs fois...

Ex. table mère la clé est ID, ARCHIVE_ID... Pour gérer des version archivé d'un même dossier...
La clé étrangère des tables filles est bien sur basée sur ces deux clés...

Mais dans ton outil on ne peut pas définir une multiple clé étrangère ...

Je sais c'est pas piqué des vers comme modif... ; °

Sinon je te le répète c'est franchement super comme idée et comme résultat A+++
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
18 janv. 2007 à 18:20
oui tout a fait je l'ai aussi remarqué, c'est en faite parce que je n'ai pas encore reflechi pour mettre en place la gestion de tables ayant des cles primaires sur plusieurs colonnes mais je vais pas tarder a y reflechir, j'ai aussi remarquer avec une base access que cela pose des pb si il y a des caracteres speciaux tels "° " (les fameux N°) ou "/" (ex:code/postal) donc j'ai commence a mettre en place une fonction pour gerer cela

merci ++
ouai si tu vois des bugs et que tu passes par la tu peux m'en faire part +
Liptipoyon Messages postés 13 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 29 janvier 2007
18 janv. 2007 à 16:24
Oui
Merci
pas de problème je chante de nouveau comme un rossignol. :°

Juste un petit bug... et oui ça arrive mais comme tu l'avais fait remarqué ce n'était pas encore bien géré...

La fonction supprimer sur des table à clés multiple est générée comme suit :SupprimerTS_PARAM(String TYPPARAMString VALUE)
=>il manque simplement une petite virgule..

De même si les nom de champs contient des espaces... mais là je reconnais que cela peux être contourné par un peux de systématisme dans la structure DB.

J'espère que cela t?aidera mais franchement c'est vrai que tu t?attaques à quelque chose de très vaste.

Encore une fois félicitation pour ton courage...
;]
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
18 janv. 2007 à 13:22
lol Liptipoyon j'espere que tu as retrouvé la voix quand meme xp

le projet est bien plus gros que je me l'imaginais au debut surtout que j'envisage de permettre la generation egalement pour .net 1.x, enfin bref tellement de choses qu'il va falloir que je recentre bien le projet et que j'optimise ce qui a deja ete fait

merci
++
Liptipoyon Messages postés 13 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 29 janvier 2007
17 janv. 2007 à 17:10
Salut

Ton travail me laisse sans Voix (heureusement je sais encore écrire;o)
Je suis très impressionné par ton travail et surtout l'utilité qu'il confer déjà en l'état...

bonne continuation
Je suivrait de prés
cs_Escob Messages postés 14 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 14 juin 2008
17 janv. 2007 à 14:25
Salut,

Tout simplement, Génial ! Je commence un nouveau projet avec une base de données sql server 2000 et j'ai gagné un temps fou !

Merci beaucoup

Je vais essayer d'ajouter le reverse engenering pour mysql car je vais en avoir besoin dans un futur proche !
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
17 janv. 2007 à 11:08
salut
oui en effet j'ai tendance a tout bien definir ainsi je prefere mettre machin==true car deja ainsi on sait instantanement le type de machin, et j'ai tendance a tout bien separer et definir(ainsi on peut plus facilement traiter chaque element au lieu de traiter un ensemble d'elements, pratique pour verifier par exemple la validite de cet ellement etc.)

sinon une version mise a jour va arriver(j'ai implementer les relations 0,1 et 1,1)

:) ++
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
17 janv. 2007 à 09:36
petit commentaire apres avoir regardé ton code tres rapidement (disons meme survolé) :
if (machintruc() == true), cest redondant....
si machintruc() renvoie un bool, tu test :
if (true true) ou if (false true)...et true == true est "une fonction qui renvoie true"....
voila, cest juste que ca me choque (apres si question lisibilité tu prefere, cest ton code ^^)

sinon ca a lair detre un sacré boulot, et meme si cest qu'une ébauche, félicitations pour le boulot déjà effectué
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
16 janv. 2007 à 18:29
Salut,
juste un mot pour vous dire soyez patient je suis conscient qu'il y a plusieurs choses a ajouter,ameliorer
(tester les DBNull value) mettre en place la gestion des relations, egalement mettre en placedes relations plus complexes(tables ayant plusieurs cles pour former la cle primaire ou etrangere), ameliorer la gestion des types de données , la lecture des bases de données(justement types,valeurs max et relations),enfin bref...
je suis dessus

actuellement l'application marche impeccablement pour generer des tables disposant d'une (et une seule cle primaire,auto incrementée encore mieux) et la version la ne doit pas gerer les relations entre tables mais ca vient lol ...

en fait le but avec ce genre d'appli c'est que je reflechisse bien, j'etudie bien la problematique et seulement ensuite je mette en place ce qui permettra d'y repondre efficacement, et donc pas se precipiter a coder
donc ca vient patientez lol ...
Rejoignez-nous