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 :

VB dataset tableadapter update oledb / odbc


Sujet :

VB.NET

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut VB dataset tableadapter update oledb / odbc
    Bonjour,

    j'essaie depuis qq jours de trouver une solution a mon pb, mais rien....

    je veux recuperer les donnees d'une base access dans un dataset et une datagrid. jusque la pas de probleme.
    voir code a la fin

    Mais ce que je veux, c 'est afficher des requetes variables a la demande, pouvoir modifier les donnees dans le datagrid, et mettre a jour avec un update la base access.

    Créer la requete de l'update n 'est pas un probleme, la question est comment gérer l'update, c'est a dire la descente d'infos de la datagrid vers le dataset et le data adapter ?

    Je sais que Visual Studio génere automatiquement le codage, mais les requetes sont fixes, ou paramétrées. Moi, je vais effectuer des requetes dynamiques, c 'est a dire que les parametres peuvent passer de 1 a plusieurs

    ex requete 1
    SELECT date, nom, valeur FROM table WHERE (valeur => '100')
    j affiche, je modifie, j envoie dans la base
    puis dans la userform, je mets de nouveaux parametres
    SELECT date, nom, valeur, type FROM table WHERE (valeur <> '100') AND (type = 'A')
    j affiche le resultat dans le meme datagrid, puis je modifie, j'envoie dans la base.......et ainsi de suite





    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
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim cn As Odbc.OdbcConnection
     
            Dim connectionString As String = "Dsn=mydatabase;dbq=C:\mabase.mdb;driverid=25;fil=MS Access;maxbuffersize=2048;pagetimeout=5;uid=admin"
     
     
            cn = New Odbc.OdbcConnection(connectionString)
     
            cn.Open()
     
            Dim cmd As New Odbc.OdbcCommand("select * from matable", cn)
     
            Me.dataAdapter = New Odbc.OdbcDataAdapter(cmd)
     
            ' With dataGridView1.ColumnHeadersDefaultCellStyle
     
            With DataGridView1
     
                .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
     
                .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader
     
                .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader
     
            End With
     
            Dim commandBuilder As New Odbc.OdbcCommandBuilder(Me.dataAdapter)
     
            Dim table As New DataTable()
     
            table.Locale = System.Globalization.CultureInfo.InvariantCulture
     
            Me.dataAdapter.Fill(table)
     
            Me.bindingSource1.DataSource = table
     
            Me.DataGridView1.DataSource = Me.bindingSource1
     
            Me.DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Aqua
     
            Me.DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
     
            Dim data As New DataSet()
     
            data.Locale = System.Globalization.CultureInfo.InvariantCulture
     
        End Sub

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vous devriez plutôt poser votre question sur le forum VB.NET

    @++

  3. #3
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonsoir,

    Il suffit de construire votre requête SQL en fonction de vos conditions de code. (Pour avoir fait un peu de VB )

    Exemple

    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
    Dim cmdString As String
     
    cmd = 'SELECT colonne1, colonne2 FROM dbo.table WHERE '
     
    If (votre predicat) Then
      cmdString = cmdString & '(valeur => ''100'')'
    Else
      cmdString = cmdString & '(valeur <> ''100'') AND (type = ''A'')'
    End If
     
    ..
     
    Dim cmd As New Odbc.OdbcCommand(cmdString,cn)
     
    ..
    ++

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut explication
    Bonjour, merci pour la rapidité de réponse.
    Mais le problème n 'est pas dans la création des requetes sql, mon problème est comment prendre en compte les modification faite dans le datagrid par l'utilisateur pour les envoyer et mettre a jour la base de données.

    J'arrive a faire des requetes pour afficher ce que je veux dans le datagrid, mais comment faire en MANUEL pour UPDATER la base access avec les modifications.
    Je sais que VISUAL STUDIO génére automatiquement ce code, mais pour mon projet, je vais avoir des requetes DYNAMIQUES, donc je dois le faire en codant à la main.


    Merci d avance

  5. #5
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

Discussions similaires

  1. SQlexception sur TableAdapter.Update
    Par bilou972 dans le forum C#
    Réponses: 8
    Dernier message: 09/12/2008, 21h06
  2. [ODBC] UPDATE sous ODBC
    Par nawak.seb dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/11/2008, 15h52
  3. DBConcurrencyException sur un TableAdapter update
    Par TCW78 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/11/2008, 22h23
  4. Réponses: 1
    Dernier message: 25/01/2008, 11h17
  5. OLEDB / ODBC
    Par philou80 dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/07/2005, 16h20

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