IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Questions d'un bleu venant de access


Sujet :

VB.NET

  1. #1
    Membre éclairé Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Par défaut Questions d'un bleu venant de access
    Bonjour,

    Je suis en train de penser à développer désormais mes applications sou vb2005.

    C'est très ressemblant à Access.

    Mais comme dans tout début dans un nouveau système on galère pour faire les bases, et dès que l'on a saisie, ca va très vite.

    1°/ Est ce que une classe est un module de classe et un module un module standrad?

    2°/ J'ai à peu pret compris comment faire fonctionner une relation à une base en allant de l'acces aux données à l'affichage en passant par la méthode de traitement. J'ai pris un exemple du site de plassere, avec un access en XML (bien que j'utiliserai mde pour bdd ou Mysql).
    Je voulais savoir si il existait une methode pour faire comme dans acces.
    Dans access, quand j'ai un formulaire avec des lignes et colonnes, si j'ajoute un enregistrement ou que j'en modifie un des que je lache le focus d'un champs, ca enregistre automatiquement la MAJ. Ici dans l'exemple XML on est obligé de faire enregistrer.
    Est il possible de faire comme dans access? (ne pas avoir à appuyer sur enregistrer)

    3°/ J'ai une table clients. A l'interieur je stocke une cle etrangere qui vient d'une autre table. Je veux une liste déroulante qui me liste le descriptif present dans la table etrangere, mais qui stocke ma cle etrangere.
    Un tutorial?




    Merci

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2007
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par défaut
    Salut,

    1°/ Est ce que une classe est un module de classe et un module un module standrad?
    La classe se rapproche du module de classe. Sauf que cette fois, c'est vraiment de l'objet (héritage, constructeur et déstructeur, ...)

    2°/ et 3°/
    Regarde du côte de l'objet DataSet (System.Data). Il ne te permettera pas de faire ce que tu veux, mais de le simuler de façon plus obtimisé que ce que peut faire accès. Il te permet de recréer une base de donnée dans ton code, de travailler en mode déconnecter et d'enregister tes données en une seul fois. Il est bien plus puissant, et ne te fait pas perdre de temps, ni de consomation procésseur inutile.

    @ +

  3. #3
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Hugo, je crois que nous avons le même probléme toi et moi ! J'avais aussi un bien belle appli sur Access qui marchait nickel et je la passe en vb.net actuellement.
    C'est un peu sport et clairement j'ai du tout reconcevoir plutôt que de repartir du source initial ! --> à noter que c'est l'occassion de repenser quelques truc foireux !

    Donc pour ta question de MAJ en automatique, tu peux utiliser un datagridview avec comme datasource un dataset basé sur un dataadaptater. A chaque fois que l'utilisateur quitte la ligne (evt RowValidated), tu fais un update sur le dataadapter : monAdapt.Update(monDataset) par exemple.

    Bon courage, je suis avec toi !

  4. #4
    Membre éclairé Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Par défaut
    En fait pour ton te dire, j'aurai aimer passer sur Java, tant qu'à reapprendre un langage, mais cela semble demander trop d'investissements pour apprivoiser JAva.

    Je vais donc rester sur mon idée de VB.NET, bien que moins portable.

    J'ai encore du mal à apprivoiser ces termes datagrid, dataview, dataset et à les maitriser, je vais continuer mes efforts.
    Si ya un bon tuto sur ces fonctions spécifiquement, ou un tuto spécialement fait pour les gens qui viennet de access, pour dire comment faire quelque chose sur VB.NET que l'on savait faire sur Access, je suis preneur.

  5. #5
    Membre éclairé Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Par défaut
    Pour ma mise à jour automatique, sur une vue "DETAILS", ton astuce fonctionne également?

    Je suis un peu pommé, et j'ai du mal à voir comment m'y prendre pour insérer ce code. A quel endroit? je cree un sub?

  6. #6
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Allez ! Comme c'est toi je te poste un exemple à 20 cents !

    J'ai juste un datagridview DataGridView1 dans une form Form4

    Evidemment je considère que la saisie faite est bonne, mais dans la réalité il faut gérer les erreurs de saisies potentielles. De plus je ne teste même pas que la ligne est bien modifiée ! (c'est du code pondu en 10 min !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Option Strict On
    Option Explicit On
    Imports System
    Imports System.Data.OleDb
     
    Public Class Form4
     
        Private daListe As OleDbDataAdapter
        Private cbListe As OleDbCommandBuilder
        Private dsListe As New DataSet
        Private myCnn As New OleDbConnection
     
        Private Sub Form4_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
     
     
            ' Connexion à la base
            myCnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""C:\Add\Add\Suivi Projet\Suivi Projet AF.mdb"""
            myCnn.Open()
            '
            ' Chargement du schéma de la table et du dataset
            '
            Dim strSqlQuery As String = "SELECT * FROM TableIntervenant"
            Try
                ' adaptateur pour la base de donnée
                daListe = New OleDbDataAdapter(New OleDb.OleDbCommand(strSqlQuery, myCnn))
                ' assure que la MAJ est possible --> c'est le constructeur des ordres SQL
                ' sur le dataadaptater
                cbListe = New OleDbCommandBuilder(daListe)
                daListe.FillSchema(dsListe, SchemaType.Mapped)
                daListe.Fill(dsListe)
            Catch ex As Exception
                MsgBox("Ca alors ! Une erreur : " & ex.Message)
            End Try
     
            ' Charge le datagridview 
            Me.DataGridView1.DataSource = dsListe.Tables(0)
     
        End Sub
     
        ' Evt lorsqu'une ligne est validée (quand on la quitte)
        Private Sub DataGridView1_RowValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.RowValidated
            daListe.Update(dsListe)
        End Sub
     
    End Class
    Hésites pas si tu sèches.

    Pour un trés bon tutoriel vb.net, regarde http://plasserre.developpez.com/vsommair.htm
    C'est vraiment excellent !

    Cdt.

  7. #7
    Membre éclairé Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Par défaut
    tout cela me semble bien lourd pour une simple liste deroulante.

    Je cherche un outils qui me permette de développer assez rapidement, sans trop de code sur des fonctions courantes et qui soit serieux.

    je crois, bien que j'avais pas trop envie d'aller vers windev, que c'est finalement ce que je vais faire.

    merci

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Par défaut Même pb !
    Bonjour,
    J'ai le même pb qu'Hugo pour mettre à jour ma base de donnée.Je suis bien évidemment débutant en VB.NET ... ET comme toi Olsimare je dois reprendre une appli Access et faire un outil similaire sous VB2005.

    J'ai essayé ta proposition olsimare,mais toujours pas de mise à jour ...

    Je ne vois pas le pb ...
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    Imports Microsoft.VisualBasic
     
    Public Class Form2
        Inherits System.Windows.Forms.Form
     
        'déclaration des variables
        Private cnx As OleDbConnection
        Private cmd As OleDbCommand
        Private dta As OleDbDataAdapter
        Private cmdb As OleDbCommandBuilder
        Private dts As New DataSet
        Private dtt As DataTable
     
        Private dtc As DataColumn
        Private dtr As DataRow
        Private rownum As Integer
        Private conn As String
        Private sql As String
     
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Me.Text = "Pégase"
     
            Me.AUTOMATETableAdapter.Fill(Me.AutomateDataSet.AUTOMATE)
            'ouverture de la connection(à partir du répertoire de l'application)
            conn = "provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\Automate.mdb;"
            'Application.StartupPath
            cnx = New OleDbConnection
            cnx.ConnectionString = conn
            cnx.Open()
            sql = "select AUTOMATE.ID_API, AUTOMATE.DESCRIPTION from AUTOMATE"
            cmd = New OleDbCommand(sql)
            dta = New OleDbDataAdapter(cmd)
            cmdb = New OleDbCommandBuilder(dta) 'Rajout pour mise a jour de la BDD
            cmd.Connection() = cnx
     
            dta.FillSchema(dts, SchemaType.Mapped) 'Rajout pour mise a jour de la BDD
            'chargement du DataSet à partir du DataAdapter                  
            dta.Fill(dts, "AUTOMATE")
            'chargement de la DataTable à partir du DataSet                 
            dtt = dts.Tables("AUTOMATE")
            'si la table est vide alors
            If rownum > dtt.Rows.Count - 1 Then
     
                Me.Show()
                Me.txtnom.Focus()
            Else
                'affichage des données dans les textbox             
                Me.Descrpt.Text = dtt.Rows(rownum).Item("DESCRIPTION")
                Me.txtnom.Text = dtt.Rows(rownum).Item("ID_API")
     
                Me.dataGridView1.DataSource = dts
                Me.dataGridView1.DataMember = "AUTOMATE"
     
     
            End If
     
     
        End Sub
     
        Private Sub butsuiv_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles butsuiv.Click
     
            'si fin du fichier ou table vide message et sortie de procédure
            If rownum = dtt.Rows.Count - 1 Or rownum > dtt.Rows.Count - 1 Then
     
                MessageBox.Show("Vous êtes sur le dernier enregistrement ou la table ne contient aucun enregistrement !", "Info...", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
     
            End If
     
            'aller à la ligne suivante
            rownum += 1
     
            'affichage des données dans les texbox
            Me.Descrpt.Text = dtt.Rows(rownum).Item("DESCRIPTION")
            Me.txtnom.Text = dtt.Rows(rownum).Item("ID_API")
     
     
        End Sub
     
        Private Sub butprec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butprec.Click
            'si fin du fichier ou table vide message et sortie de procédure
            If rownum = 0 Or rownum > dtt.Rows.Count - 1 Then
     
                MessageBox.Show("Vous êtes sur le premier enregistrement ou la table ne contient aucun enregistrement !", "Info...", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
     
            End If
     
            'aller à la ligne précedente
            rownum -= 1
     
            'affichage des données dans les texbox
            Me.Descrpt.Text = dtt.Rows(rownum).Item("DESCRIPTION")
            Me.txtnom.Text = dtt.Rows(rownum).Item("ID_API")
     
        End Sub
        Private Sub DataGridView1_RowValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dataGridView1.RowValidated
            dta.Update(dts) 'Rajout pour mise a jour de la BDD
        End Sub
     
        Private Sub butquit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles butquit.Click
     
            'fermeture du formulaire
            Me.Close()
     
     
        End Sub
     
     
    End Class

  9. #9
    Membre éprouvé
    Inscrit en
    Mars 2007
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par défaut
    Salut,

    alors, j'ai peur que ca ne t'aide pas.

    Mais Infragistic, à créer des contrôles, dont un, en autre, nommée UltraGrid, qui fait ce que tu souhaite. Mais, 1 c'est payant (500 $ de mémoire), y a peut être une version de teste, et 2 c'est super gourmant en mémoire. Cependant, c'est super efficace.

    L'idéale est de créer ton contrôle toi-même. C'est moins difficile qu'il n'y parait. Je ne connais pas de tutoriel, là dessus. Mais je connais un excellent oeuvrage qui ce nomme "Au coeur de Visual Basic.net". C'est le meilleur oeuvrage sur le sujet.

    Bon courage, @ +

  10. #10
    Membre éclairé Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Par défaut
    apparement ya des versions de test, je vais voir.

    Je m'en fou un peu des 500 euros, c'est pour changer de langage pour du professionnel.

    Si faut les mettre, je les mettrai.

    merci.

  11. #11
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Igmar, je vois pas le soucis désolé...

    Hugo, oui ça semble un peu lourd mais ça peut s'encapsuler dans une classe perso ce qui allège le code sur la form.
    C'est qu'un exemple pour montrer un peu le fonctionnement.

    Désolé de ne pas t'avoir aidé sur le sujet.

    Cdt.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Par défaut
    Ca y est j ai trouvé ... A force de chercher ... bah tu trouves !
    Merci Olsimare.

  13. #13
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Et pour la culture, tu fais comment finalement ?

    Cdt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. question a propos des bonnes pratiques ACCESS
    Par amne26 dans le forum IHM
    Réponses: 1
    Dernier message: 25/09/2008, 18h52
  2. Question sur le fractionnement de base access
    Par pierremichel01 dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/08/2008, 10h27
  3. Question pour un bleu
    Par statquant dans le forum C++
    Réponses: 3
    Dernier message: 26/06/2008, 10h08
  4. question sur le déploiement d'application access
    Par tojiji dans le forum Access
    Réponses: 4
    Dernier message: 18/07/2006, 11h38
  5. [Excel] mise en page d'un export venant d'Access
    Par kleenex dans le forum Access
    Réponses: 14
    Dernier message: 28/06/2006, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo