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 :

OleDb - Base de données Access - Update


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut OleDb - Base de données Access - Update
    Bonjour tous le monde.
    J'ai un petit souci sur un bout de programme.

    Mon problème :

    J'ai un fichier base de données acces. Donc un xxx.mdb

    Actuellement je sais ajouter un nouvel enregistrement dans la base de donnée grâce à ceci :

    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
     
    Imports System.Data.OleDb
     
    Public Class Form2
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim cn As OleDbConnection
            Dim cmd As OleDbCommand
            Dim dr As OleDbDataReader
            Dim icount As Integer
            Dim str As String
            '        Try
            cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Florent\Desktop\Programme test\test1.mdb")
            cn.Open()
            str = "insert into tab1 (col1,col2,col3) values(" & TextBox1.Text & "," & TextBox2.Text & "," & TextBox3.Text & ")"
            'string stores the command and CInt is used to convert number to string
            cmd = New OleDbCommand(str, cn)
            cmd.ExecuteNonQuery()
            '            MessageBox.Show(icount)
            'displays number of records inserted
            '        Catch
            '        End Try
            cn.Close()
     
            MsgBox("OK")
     
        End Sub
    Donc ce bout de programme me permet d'ajouter une nouvelle ligne dans ma base de données.

    Ensuite je sais lire la base de donnée grâce à ceci.

    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
       Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim cn As OleDbConnection
            Dim cmd As OleDbCommand
            Dim dr As OleDbDataReader
            Dim icount As Integer
            Dim str As String
     
            Try
                cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\Florent\Desktop\Programme test\test1.mdb;")
                'provider to be used when working with access database
                cn.Open()
                cmd = New OleDbCommand("select * from tab1", cn)
                dr = cmd.ExecuteReader
                While dr.Read()
                    Me.ComboBox1.Items.Add(dr(0))
                End While
            Catch
            End Try
            dr.Close()
            cn.Close()
        End Sub
    Ce code me permet de rajouter dans ma "combobox" l'incrémentation qui me permet de choisir ensuite la ligne que je veut lire. Une fois la ligne sélectionnée je peut insérer les enregistrements dans mes "Textbox" grâce au code suivant.
    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
     
       Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Dim cn As OleDbConnection
            Dim cmd As OleDbCommand
            Dim dr As OleDbDataReader
            Dim icount As Integer
            Dim str As String
     
            Dim txt
            Dim txt1
     
            txt = Me.ComboBox1.Text
     
            If txt = "" Then
                MsgBox("veuillez sélectionner un numero")
                Exit Sub
            End If
     
            Try
                cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\Florent\Desktop\Programme test\test1.mdb;")
                'provider to be used when working with access database
                cn.Open()
                cmd = New OleDbCommand("select * from tab1", cn)
                dr = cmd.ExecuteReader
                While dr.Read()
     
                    txt1 = dr(0)
     
                    If txt1 = txt Then
                        Me.TextBox1.Text = dr(0)
                        Me.TextBox2.Text = dr(1)
                        Me.TextBox3.Text = dr(2)
                    End If
                End While
            Catch
            End Try
            dr.Close()
            cn.Close()
     
            MsgBox("Fini")
        End Sub
    Voila jusque la, je sais
    1 - Ajouter une nouvelle ligne dans la base
    2 - Lire la base de données.

    Mais la ou je bloque,,, Une fois que j'ai lu une ligne de la base de données, c'est de modifier une valeur et ensuite de la ré-injecter dans la bonne colonne et ligne dans la base de données ????


    Si quelqu'un à une idée ????

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut
    Petit PS :
    J'ai pas marqué dans mon précédent mail, mais j'ai quand même ajouter les références nécessaire dans le projet (normal puisque sa marche).

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    il ne faut pas utiliser [quote] pour le code, mais [code], sinon c'est illisible

    pour modifier dans une table c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE nomtable SET TelleColonne = NouvelleValeur WHERE condition
    le where se fait en général sur la clé primaire
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    S'il s'agit de mettre à jour un enregistrement, l'update doit toujours se faire avec un where contenant au MINIMUM la(les) clé(s) primaire.

    J'ai tout de même quelque petites remarques sur ta question.

    On utilise en principe un bloc Using...End Using pour la gestion d'un objet de connexion (base de donnée, fichier). Ca remplace le try catch finally avec l'instruction close.

    Cette façon de procéder pour accéder a une base de donnée est actuellement un peu veillot. A des fins didactiques c'est intéressant de savoir le faire. Mais ensuite je te recommande de te renseigner sur les mécanismes d'accès aux données à l'aide des "dataset, datatable, datarow" ou d'entity framework.

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par sinople Voir le message
    Cette façon de procéder pour accéder a une base de donnée est actuellement un peu veillot. A des fins didactiques c'est intéressant de savoir le faire. Mais ensuite je te recommande de te renseigner sur les mécanismes d'accès aux données à l'aide des "dataset, datatable, datarow" ou d'entity framework.
    vieillot non
    les datasets, EF et autres sont pratiques, mais sur des gros projets ce n'est pas utilisable à cause des performances (microsoft a annoncé que EF4 était plus rapide, et avec des requetes générées moins moches, ca reste à tester ...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Quand on demande la syntaxe d'une requête SQL UPDATE, je considère pas qu'on est dans le thème du gros projet informatique désolé....

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/07/2015, 09h44
  2. Accès base de données Access oledb
    Par melleb dans le forum MFC
    Réponses: 6
    Dernier message: 11/05/2009, 15h22
  3. Réponses: 15
    Dernier message: 25/10/2004, 11h50
  4. [Déploiement]Base de donnée Access
    Par Giovanny Temgoua dans le forum Bases de données
    Réponses: 9
    Dernier message: 09/08/2004, 20h48
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

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