ADO.NET SANS DOULEUR

bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 18 avril 2010 à 23:11
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015 - 9 août 2015 à 06:57
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/51639-ado-net-sans-douleur

mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
2 août 2015 à 09:02
@PCPC et @ ARCEF
Si vous connaissez un tuto pour approfondir / changer / améliorer ce type de code, merci de me donner le lien car j'ai cherché 2 heures sur google mais sans grand succès.. c'est soit hors de ma portée (trop technique) soit cela ne répond pas vraiment à ma recherche (VB.net POO, gestion BDD avec relations entre tables)

@ cs_Patrice99. Je pense commander ce bouquin, a moins que, depuis, tu n'ai eu connaissance de quelque chose de plus intéressant (en 5 ans, il s'en passe des choses..

Merci a tous.
Whismeril Messages postés 19089 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 13 juillet 2024 658 > mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
2 août 2015 à 09:42
Bonjour je me suis permis d'éditer ton 2eme message pour préciser le langage dans la coloration syntaxique.
Concernant Link, ça ne marche pas avec Acces.
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015 > Whismeril Messages postés 19089 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 13 juillet 2024
9 août 2015 à 06:57
Salut Whismeril, Merci pour la correction de coloration, c'est beaucoup mieux comme ça, je ferai attention la prochaine fois.
Concernant LINK, effectivement j'ai lu ça quelque part, par contre, je code également en My-Sql pour un autre projet et là, cela doit pouvoir fonctionner, je n'ai pour l'instant, pas encore essayé. connais tu un tuto bien fait sur Link//My-sql ? (platform WampServer)

Amicalement,
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
Modifié par Whismeril le 2/08/2015 à 09:41
Salut Bouv.
bon, dès fois, faut juste essayer... et ca marche.
Je n'ai pas eu à refaire une classe de liaison car les liaisons fonctionnent avec 2 lignes de code :-)
j'ai procédé comme suit:
    Private Sub FillLV()

        With LV
            'On efface tous les éléments de la LV'
            .Items.Clear()

            'On créé l objet TAB_Products'
            Dim MyProducts As New OLEDB.Table.TAB_PRODUCTS

            'Michel : j ajoute ici l objet TAB_UNIT.'
            Dim myUnit As New OLEDB.Table.TAB_UNIT

            'On liste tout les enregistrements de la table'
            Dim iproducts As List(Of Integer) = MyProducts.EnumRecords

            'On remplit la LV'
            For Each i As Integer In iproducts

                'On récupère les infos complètes de l enregistrement'
                MyProducts.Index = i
                MyProducts.Read()

                'On ajoute l enregistrement'
                With .Items.Add(MyProducts.Index)
                    myUnit.Index = MyProducts.ProdIdUnit
                    myUnit.Read()

                   'Ce programme est en deux langues (Thai et Anglais, c est pour un' 
                    'pote cuisto qui a du mal avec l anglais mais qui essaye :-)'
                    If Main.Lang = 0 Then ' EN THAI'
                        .SubItems.Add(MyProducts.THProductName)
                        .SubItems.Add(MyProducts.ProdIdUnit)
                        .SubItems.Add(myUnit.THNameUnit)
                        .SubItems.Add(MyProducts.ProdPrice)
                        .SubItems.Add(MyProducts.ProdDate)
                        .SubItems.Add(MyProducts.ENProductName)
                    Else 'EN ANGLAIS'
                        .SubItems.Add(MyProducts.ENProductName)
                        .SubItems.Add(MyProducts.ProdIdUnit)
                        .SubItems.Add(myUnit.ENNameUnit)
                        .SubItems.Add(MyProducts.ProdDate)
                        .SubItems.Add(MyProducts.ProdPrice)
                        .SubItems.Add(MyProducts.THProductName)
                    End If
         'les colones 2, 5 et 6 du LV sont cachées, elles ne servent que '
        'pour la modification du produit afin de ne pas avoir a refaire une requette'
                End With
            Next i
        End With
    End Sub

Marche nickel... je ne le dirai jamais assez : MERCIIIIIII
Bien entendu, si il y a une meilleure méthode, je suis preneur...
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
2 août 2015 à 06:30
Salut Bouv,
Je sais que ce post date d'il y a 5 ans, mais qu'importe, pour moi il est d'actualité.
Avant tout, un grand merci, programmeur débutant, ce code m'a permis de comprendre bien des choses... Ce n'est peut être pas écrit a la perfectionn il n'y a peut être pas de LINK mais c'est clair, facile à comprendre et donc exactement ce qu'il me fallait pour comprendre.
toutefois, une petite question. J'ai créé une BDD avec 5 tables. il y a bien entendu des relations entre ces tables. Elles ont été définie dans Access.
Y as t-il un moyen simple (poo) pour gérer ces relations???
J'avoue ne pas avoir encore beaucoup cherché sur ce sujet mais le pas de géant qu'il m'a été permis de faire grâce a ton code me dis que, peut être, si tu as dans un tiroir une version plus évoluée de ce code, je pourrai peut être faire un autre pas de géant dans ce monde d'objets..
Merci encore. Amicalement.
aserf Messages postés 114 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 1 juillet 2011
20 avril 2010 à 14:03
Une nouvelle version est en ligne, tu genere le code en V2 (beta) il est beaucoup plus light, de plus il gere beaucoup de chose,
property en enum, mise a jour de structure, ... mais bon effectivement en 2 ans il a evoluer, et je n'es jamais mis la doc a jour (elle date d'au moins 4 à 5 ans) donc enormement de fonction/options ne sont pas documenté ...

De plus le code V2 permet de changé de base de donnée a la voler (passer de access a sql server et mysql ) sans changé une seul ligne de code.
ce qui permet de faire des applications multibase de donnée facilement.

a+
seb
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
20 avril 2010 à 13:38
Merci pour vos commentaires.

PCPT>>La partie requête est gérée. Voir procédure EnumRecords dans la région Enum.
Mais pas (encore) avec les jointures et en mode très léger je te l'accorde.
En revanche pas de généricité c'est clair.

Aserf>>Je connais ton logiciel. Je l'ai essayé il y à 1 ou 2 ans. Il m'a permis de comprendre pas mal de chose sur ADO.Net en lisant le code qu'il produit.
Seulement, si mes souvenirs sont exacts, il ne tire pas profit de l'heritage et produit donc un code un peu plus lourd.

Je ne connais pas LINK mais je vais me renseigner. Merci du tuyaux.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
19 avril 2010 à 15:52
Au-dessus (et à coté) de Linq, voici aussi un exellent bouquin sur le mapping objet-relationnel pour la programmation :
Programming Entity Framework
Building Data Centric Apps with the ADO.NET Entity Framework
http://oreilly.com/catalog/9780596520298
aserf Messages postés 114 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 1 juillet 2011
19 avril 2010 à 14:11
Salut,

J'ai ne pas vue ou tu a ecrit le code qui genere la class, autrement effectivement LINQ, ainsi que les dataset Type permette deja de faire ce genre de chose, autrement j'ai developper un logiciel qui fait a peu pres la meme chose, www.database2code.com, il genere des class pour chaque table, mais en ce basant sur le DataSet, de plus fonctionne pour SqlServer, Access, et MySql.

Autrement bon debut,
Séb
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
19 avril 2010 à 06:14
salut Bouv,

au final tu refais LINQ mais sans la partie requête et sans la généricité... ?
http://msdn.microsoft.com/fr-fr/library/bb397926.aspx

++
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
18 avril 2010 à 23:11
J'oubliais de préciser. J'utilise les DataRow pour affecter les valeurs aux champs en mode Add et Edit.
Cela évite les problèmes suivants :
Date : pas besoin de faire la conversion au format mm/jj/aaaa
Texte : inutile de doubler les caractères du type ' et "
Champs OLE : ils sont gérés. Passer simplement un tableau de Byte en valeur
Etc,...