begin process at 2010 02 10 05:35:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > GÉNÉRATEUR DE CODE - [ARCHITECTURE 2-TIERS - 3-TIERS - N-TIERS] [VB - CSHARP] [.NET 1.1 ET .NET 2.0] [ACCESS,SQL SERVER][GENERATION ANGLAIS -FRANCAIS]

GÉNÉRATEUR DE CODE - [ARCHITECTURE 2-TIERS - 3-TIERS - N-TIERS] [VB - CSHARP] [.NET 1.1 ET .NET 2.0] [ACCESS,SQL SERVER][GENERATION ANGLAIS -FRANCAIS]


 Information sur la source

Note :
10 / 10 - par 5 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Source .NET ( DotNet ) Classé sous :persistance, xml, ado, metier, access Niveau :Débutant Date de création :16/01/2007 Date de mise à jour :01/05/2007 10:30:17 Vu / téléchargé :26 454 / 2 981

Auteur : romagny13

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (46)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Bonsoir,
Voila mon début de générateur de code
L'objectif de ce générateur est simple :
générer tout le code d'accès aux données, vous n'avez plus qu'à coder la couche présentation (en fait faire simplement appel aux méthodes appropriées)
de cette manière vous pouvez définir une couche présentation en windows forms (.NET 1.x,.NET 2.0), ASP.NET,mais aussi .NET 3.0 (WPF) trés facilement



- Choix de "langue" dans laquelle est généré le code
> Français
> Anglais
-Projet Visual Studio généré:
> Projet bibliothèque de classes .NET 2.0  Visual Studio 2005
> Projet bibliothèque de classes .NET  1.x  Visual Studio 2003
- Choix de l'architecture de l'application :
> 2-tiers : couche présentation  (IHM) + couche persistance (accès aux données)
> 3-tiers : couche présentation  (IHM) + couche métier (classes et classes collections) + couche persistance (accès aux données)
> n-tiers : couche présentation  (IHM) + Controleur + couche métier (classes et classes collections) + couche persistance (accès aux données)

- Choix du Language:
>C#
>VB.NET
-Génération pour une source de données :
>Access
>Sql Server

- Génération Script SQL de création de la base de données (procédures stockées en plus pour Sql Server)

La génération se base sur la structure de la base de données (tables,champs,relations,contraintes)
- Vous pouvez définir votre base de données dans le générateur à partir de « zéro »
- Ou ouvrir une base de données (Access ou Sql Server 2000-2005) (les informations de la base seront extraites)
- Vous avez également la possibilité de sauvegarder le projet en cours .

Note :
Pour entrer facilement le script SQL de création de la base pour Access je vous conseille d’utiliser cet outil que j’avais posté, bien pratique :
http://www.csharpfr.com/codes/OUTIL-MANAGEMENT-B ASES-DONNEES-POUR-ACCESS-MDB-FICHIERS_39559.aspx

++


Objectifs et idées suivantes :
- Génération couche présentation pour .net 1.1 et .net 2.0 (voir également pour Asp.net)
- Gestion complete des acces concurrentiels
- gestion acces concurrentiel optimiste
- optimisation et amélioration du code

Source

  • //// Ne pas oublier de renseigner la chaine de connexion à la base de données
  • BData.OleDbConnected.sConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\romagny\Mes documents\Access\Contacts.mdb";
  • // ******** 2 tiers *******************
  • //// la couche UI(interface utilisateur) interagit avec la classe couche persistance (BData) avec le code généré pour architecture 2-tiers
  • BData.OleDb.CONTACT oCONTACT;
  • oCONTACT = new BData.OleDb.CONTACT();
  • DataTable oDataTable = oCONTACT.FillDataTableCONTACTs();
  • //// Afficher
  • dataGridView1.DataSource = oDataTable;
  • // ******** 3 tiers *******************
  • // la couche UI(interface utilisateur) interagit avec la couche metier (BObject)
  • BObject.CONTACTs oCONTACTs;
  • oCONTACTs = new BObject.CONTACTs();
  • oCONTACTs.LoadCONTACTs();
  • // Afficher la liste (ici j'utilise simplement la datasource mais on peut personnaliser le datagridview par code en definissant les colonnes,lignes et cellules)
  • dataGridView1.DataSource = oCONTACTs;
  • // ******** n tiers *******************
  • // la couche UI(interface utilisateur) interagit avec le controleur
  • Ctrl.CONTACT oCONTACT;
  • oCONTACT = new Ctrl.CONTACT();
  • oCONTACT.LoadCONTACTs();
  • // Afficher
  • dataGridView1.DataSource = oCONTACT.BObjectCONTACTs;
  • // ici un contact va etre ajouter a la fois a la collection de contacts et ajoute en base de données
  • oCONTACT.AddBOjectAndBDataCONTACT(1, "Dupond", "Dominique", "", 1, 2, "1960/03/10");
  • // ici le contact n'est ajouté qu'à la collection de contacts
  • oCONTACT.AddBObjectCONTACT(1, "Dupond", "Dominique", "", 1, 2, "1960/03/10");
  • // 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();
  • //
  • // annuler les changements apportes a une ligne en local > il faut passer la "cle primaire"
  • oCONTACT.RejectChangesBObjectCONTACT(10);
  • // annuler tous les changements apportes en local
  • oCONTACT.RejectChangesBObjectCONTACTs();
     //// Ne pas oublier de renseigner la chaine de connexion à la base de données
            BData.OleDbConnected.sConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\romagny\Mes documents\Access\Contacts.mdb";

            // ******** 2 tiers *******************
            //// la couche UI(interface utilisateur) interagit avec la classe couche persistance (BData) avec le code généré pour architecture 2-tiers
            BData.OleDb.CONTACT oCONTACT;
            oCONTACT = new BData.OleDb.CONTACT();
            DataTable oDataTable = oCONTACT.FillDataTableCONTACTs();

            //// Afficher 
            dataGridView1.DataSource = oDataTable;

            // ******** 3 tiers *******************
            // la couche UI(interface utilisateur) interagit avec la couche metier (BObject)
            BObject.CONTACTs oCONTACTs;
            oCONTACTs = new BObject.CONTACTs();
            oCONTACTs.LoadCONTACTs();
            // Afficher la liste (ici j'utilise simplement la datasource mais on peut personnaliser le datagridview par code en definissant les colonnes,lignes et cellules)
            dataGridView1.DataSource = oCONTACTs;

            // ******** n tiers *******************
            // la couche UI(interface utilisateur) interagit avec le controleur
            Ctrl.CONTACT oCONTACT;
            oCONTACT = new Ctrl.CONTACT();
            oCONTACT.LoadCONTACTs();
            // Afficher
            dataGridView1.DataSource = oCONTACT.BObjectCONTACTs;

            // ici un contact va etre ajouter a la fois a la collection de contacts et ajoute en base de données
            oCONTACT.AddBOjectAndBDataCONTACT(1, "Dupond", "Dominique", "", 1, 2, "1960/03/10");
            
            // ici le contact n'est ajouté qu'à la collection de contacts
            oCONTACT.AddBObjectCONTACT(1, "Dupond", "Dominique", "", 1, 2, "1960/03/10");
            // 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();
            //
            // annuler les changements apportes a une ligne en local > il faut passer la "cle primaire"
            oCONTACT.RejectChangesBObjectCONTACT(10);
            // annuler tous les changements apportes en local
            oCONTACT.RejectChangesBObjectCONTACTs();

 Conclusion

Démarche :
- Ouvrir le projet (en double cliquant dessus)
- Ajouter un projet Windows Forms à la solution par exemple
- Possibilité de réorganiser les fichiers ,projets (ex : créer un projet pour la couche métier,un autre projet pour la couche perssistance,un pour le controleur,un pour la couche présentation)
- Ajouter la ou les  références aux projets

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 janvier 2007 21:09:29 :
- gestion des relations - amelioration de la gestion des types de données(SQL et C#) - gestion DBNull - prise en charge des cles auto incrementees et des System.Guid - etc.
17 janvier 2007 22:02:21 :
.
18 janvier 2007 23:32:38 :
. prise en charge des cles sur plusieurs colonnes . début de gestion des caractères (caractères blancs et speciaux) . etc.
19 janvier 2007 22:11:34 :
. gestion des noms des tables et champs a 2 niveaux permettant la saisie espaces et caracteres speciaux . gestion des cles multiples . recuperation des cles etrangeres des base Access ...
19 janvier 2007 22:14:57 :
.
19 janvier 2007 23:31:08 :
.
20 janvier 2007 22:24:03 :
. recuperation des cles etrangeres pour les bases de données Sql Server
21 janvier 2007 12:06:31 :
. Amélioration de la procédure d'extraction des informations des bases Access(plus rapide) . procédures stockées dans le script SQL(uniquement pour la génération pour Sql Server)
21 janvier 2007 12:17:42 :
.
21 janvier 2007 16:52:27 :
.
23 janvier 2007 19:51:02 :
.génération pour .net 1.1 . génération VB.NET
23 janvier 2007 19:53:55 :
. nouvelle capture
25 janvier 2007 21:36:06 :
. revision requetes SQL pour Access . doublons methodes Trouverde et Modifierde (apparaissant avec plsueirs clés etrangeres composées) . etc.
31 janvier 2007 20:52:16 :
. Méthodes TrouverElementsDe (exemple : trouver tous les contacts du type de contact)
01 février 2007 20:44:05 :
. génération au choix architecture 2-tiers ou architecture 3-tiers
02 février 2007 00:43:53 :
.
03 février 2007 15:50:18 :
. Ajout de méthodes (renvoyant DataTable) pour "génération architecture 2-tiers" . bonne scéance de tests . etc.
03 février 2007 15:54:57 :
.
03 février 2007 20:22:00 :
. mises à jour des procédures stockées . détails . etc.
11 février 2007 12:43:23 :
. réecriture de l'application (ce qui lui permettra de lui ajouter facilement les nombreuses fonctionnalités que je désire) . Choix de la langue dans laquelle le code est généré (en français ou en anglais) . modification au niveau des classes collections générées (couche métier - Architecture 3-tiers) > j'ai mis la classe en collection générique plutot que de declarer une liste generique dans cette classe ainsi que ce soit en .net 1.x ou .net 2.0 on peut facilement affecter a une datasource par exemple en n'affectant que la classe collection (ex : dataGridView1.DataSource = oContacts;)
12 février 2007 22:15:32 :
. petite mise à jour (possibilité de lancer desormais directement le générateur lorsuqe l'on double clique sur le type de fichier *.rxml ou en sélectionnant l'application permettant ouvrir ce type de fichier) . quelques petites choses
12 février 2007 22:26:26 :
.
25 février 2007 00:56:14 :
. des changements en profondeur qui devront permettre à terme à la fois de travailler en connecte ou en deconnecte facilement,le code mis en place devra permettre egalement de gerer facilement le control datagridview (avec une personnalisation poussée) . je tacherai de mettre une aide la generation n-tiers devrait arriver car c'est avec un controleur que la methode sera la mieux "structurée"
25 février 2007 16:30:41 :
. gestion de la connexion
25 février 2007 17:10:45 :
.
25 février 2007 17:52:46 :
.
25 février 2007 17:55:20 :
.
27 février 2007 00:29:42 :
.
28 février 2007 00:27:27 :
. debut implementation couches n-tiers . attention il faudra que je fasse une bonne sceance de tests (car il se peut qu'il y ait des erreurs)
28 février 2007 00:32:06 :
.
28 février 2007 09:59:16 :
.
29 avril 2007 00:01:15 :
. correction bug pour sql server
01 mai 2007 01:44:47 :
. amélioration gestion namespaces,mise à jour de la fenêtre de connexion à une source de données,..
01 mai 2007 10:30:17 :
.

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) REPOSITORY GENERATOR (FOR ENTERPRISE LIBRARY)
Source avec Zip Source avec une capture Source .NET (Dotnet) [ CS2GEN ] - GENERATEUR DE CODE NTIERS POUR BASES DE DONNÉE...
Source avec Zip Source avec une capture Source .NET (Dotnet) [.NET 3.0] OPENXML MANAGER - CHARGEMENT ET EDITION/SAUVEGAR...
Source avec Zip Source avec une capture Source .NET (Dotnet) [.NET 2.0] - CLASSE POUR GÉRER FACILEMENT LES PREDICATE POUR...
Source avec Zip Source avec une capture Source .NET (Dotnet) CS2GENLINQTOXML - XML + XPATH VISUALIZER + LINQ TO XML GENE...

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) DEMO_XML_BASE_DE_DONNÉES par DanMor498
Source avec Zip Source avec une capture Source .NET (Dotnet) EXPORTER SCRIPT SQL SQL SERVER (CREATE - DROP - INSERT - TAB... par citt
Source avec Zip Source .NET (Dotnet) BULKINSERT EN C# par Malkuth
Source avec Zip Source avec une capture Source .NET (Dotnet) SPLIT SQL SANS TABLE TEMPORAIRE par TheOnlyMaX
Source avec Zip Source .NET (Dotnet) MOTEUR CSV ET RECORDSET PERSO par SwitchApocalyps

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) [.NET3.5] SYSTEM.IO.PIPES - UTILISATION D'UN CANAL NOMMÉ par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) [ CS2GEN ] - GENERATEUR DE CODE NTIERS POUR BASES DE DONNÉE... par romagny13
Source avec Zip Source avec une capture Source .NET (Dotnet) EXPORTER VOS DONNEES (SQL SERVER,ACCES,XML,EXCEL) RAPIDEMENT... par romagny13
Source avec Zip Source avec une capture Source .NET (Dotnet) [WPF] - EXEMPLES SOURCES DE DONNÉES (BASE DONNÉES,OBJET,FICH... par romagny13
Source avec Zip Source .NET (Dotnet) LIAISON DE DONNÉES BASE ACCESS (.NET 2) par bestmomo

Commentaires et avis

Commentaire de romagny13 le 16/01/2007 18:29:32

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 ...

Commentaire de leprov le 17/01/2007 09:36:10

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é

Commentaire de romagny13 le 17/01/2007 11:08:34

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)

:) ++

Commentaire de Escob le 17/01/2007 14:25:37

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 !

Commentaire de Liptipoyon le 17/01/2007 17:10:26

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


Commentaire de romagny13 le 18/01/2007 13:22:21

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
++

Commentaire de Liptipoyon le 18/01/2007 16:24:32

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...
;]

Commentaire de romagny13 le 18/01/2007 18:20:18

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 +

Commentaire de Liptipoyon le 19/01/2007 14:21:10

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+++

Commentaire de romagny13 le 19/01/2007 22:01:18

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

++ :)

Commentaire de Liptipoyon le 22/01/2007 11:57:20

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+ ;)




Commentaire de Malkuth le 22/01/2007 13:21:16

Super !!!

Commentaire de Liptipoyon le 22/01/2007 13:30:36

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

Commentaire de romagny13 le 23/01/2007 02:15:10

éé 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


++

Commentaire de Liptipoyon le 23/01/2007 09:22:50

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



Commentaire de Liptipoyon le 25/01/2007 12:03:47

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

Commentaire de romagny13 le 25/01/2007 21:39:22

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
++

Commentaire de Liptipoyon le 29/01/2007 09:19:24

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 ... ;)

Commentaire de romagny13 le 29/01/2007 13:14:52

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
++ :)

Commentaire de Liptipoyon le 29/01/2007 13:30:50

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++

Commentaire de TheSaib le 31/01/2007 01:23:01 administrateur CS

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
...

Commentaire de romagny13 le 31/01/2007 20:57:16

erf se referer au second message (plus haut ^^) je vais pas me repeter

Commentaire de romagny13 le 31/01/2007 21:15:57

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

++

Commentaire de TheSaib le 31/01/2007 23:16:50 administrateur CS

"L'efficace" est bien ce qui m'amenait à un pattern strategy. Et je n'ai jamais parlé d'une seule classe, mais au contraire.

Commentaire de romagny13 le 31/01/2007 23:27:20

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

Commentaire de romagny13 le 31/01/2007 23:55:43

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

++

Commentaire de Escob le 01/02/2007 12:17:49

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 ?

Commentaire de Escob le 01/02/2007 12:20:55

Une autre question, avez-vous prevu d'ajouter la génération des vues ?

Commentaire de romagny13 le 01/02/2007 21:09:31

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"...
++

Commentaire de Escob le 01/02/2007 21:41:29

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é.

Commentaire de romagny13 le 01/02/2007 22:12:57

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  ...

++

Commentaire de romagny13 le 02/02/2007 00:58:29

"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
++

Commentaire de romagny13 le 09/02/2007 11:23:19

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
++

Commentaire de rahmed le 08/03/2007 20:13:30

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.

Commentaire de romagny13 le 09/03/2007 00:07:52

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)
++

Commentaire de leproc le 27/03/2007 16:51:34

Alors la je sais pas quoi dire Bravo, tes génial, magnifique.

Commentaire de romagny13 le 28/03/2007 01:17:14

éé mercii :p
mais ce n'est pas fini
je ne suis plus trop dessus en ce moment mais j'y pense

Commentaire de CALCAREA le 04/04/2007 22:28:02

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

Commentaire de pdl le 25/04/2007 16:05:30

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
[code]
#  // 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();
[/code]


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

[code]
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");
[/code]

D'avance merci pour les éclaircicements.

Commentaire de vkuttyp le 26/04/2007 10:22:02

Thanks

Commentaire de zhaojc le 27/04/2007 08:10:14

I want to get the english version.please

Commentaire de pdl le 27/04/2007 15:55: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.

Commentaire de romagny13 le 29/04/2007 00:20:23

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
+

Commentaire de romagny13 le 29/04/2007 00:25:08

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

Commentaire de ecosmose le 23/01/2008 16:06:45

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

Commentaire de ecosmose le 23/01/2008 18:49:38 10/10

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..

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Xml au format ADO et Datagrid [ par scoadou ] SalutJ'ai un fichier XML au format ADO (Schema + Données). J'aimerais le "binder" à un datagrid dans une Webform. J'ai lu que les formats de support du XML avec ADO.NET 1.0 [ par romagny13 ] Bonjour juste une petite questionavec Visual studio .NET 2003 (Framework 1.1) et SQL Server 2000est ce qu'il y a un support comme avec visual studio 2 XML vers Access [ par sveleg ] Bonjour. Je gère un entrepôt logistique pour des produits industriels variés. J'ai de bonnes notions en Access mais aucunes pour le language XML. J'ai ADO. net C# 2.0 - modifier base access [ par JiPe86 ] Salutvoilà je travail depuis qq jours sur une appli windows (avec Visual Studio2005) qui gère des données sur Access par l'intermédiare d'in WinForm.m c# et ADO [ par JiPe86 ] salutje souhaiterais developper une appli avec un ebase de données access.le probleme st que le client n'a pas Access sur son poste de travailleQuesti Mettre en cache dans le DataSet le contenu d'un fichier xml [ par herve_labenere ] Je réalise actuellement un lecteur MP3. Je stocke au 1er lancement de l'application la liste des mp3 dans un fichier XML. J'utilise pour cela la class XML Internationalization [ par herissonne_4 ] Bonjour,mon pb est assez specifique, j espere que qqun pourra m aider.Je dois creer une application sous VS2005 qui fait appel a differents .resx pour Envoyer plusierus requete access en meme tps [ par sandra26 ] Salut, Je voudrais savoir si il est possible d'envoyer plusieurs requete en meme tps de C# vers Access, vous savez comme avec SQL.Mon but est de gagne regex pour balises xml et html [ par romagny13 ] Bonjour,quelquun aurait t'il une bonne expression reguliere pour trouver les balises HTML ou XML ?je cherches pas tres complique la mais jai juste un Generation de classes à partir d'un fichier XML complexe [ par ip2x ] Bonjour, comme indiqué dans le sujet, je cherche a generer des fichiers classe a partir d'un fichier XML assez complexe et, il faut bien l'admettre, j


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales