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 :

Remplissage de 2 tables via Dataset et position curseur


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut Remplissage de 2 tables via Dataset et position curseur
    Bonsoir alors voilà je me connecte via une base de donnée Access, je travaille en ADO.net sur VB 2010.

    J'arrive à me connecter, me déplacer via des boutons suivant, précédent,.. mais lorsque je dois ajouter ou supprimer un enregistrement il me choisit toujours le premier des enregistrements, j'aimerais pouvoir comme avec les recordset en ADO simple lui dire d'effacer l'enregistrement sur lequel je me trouve lorsque je parcours via mes boutons de déplacements.

    L'autre petit problème c'est me connecter à 2 tables via un dataset, dois-je créer un dataview obligatoirement?

    Voilà, si vous avez des questions par rapport à mon code n'hésitez pas à demander!

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour Awesome99.
    Comme awesome peut signifier dans la douce langue de Shakespear à la fois dement et genial(ambiguite specifique au caractere retors des anglais) ce doit etre le cas de ton code ..........que l'on ne vois pas d'ailleurs et que seul toi connait?......

    En tout cas tu peux uiliser autant de tables que tu pourrais avec un DataSet.Il suffit de les ajouter au DataSet avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    tonDataSet.Tables.Add("nomdetaDataTable")
    Avec de plus amples informations sur ton code de navigation on pourrait peut etre t'aider............
    bon code

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut
    Tout d'abord merci de votre réponse ! pour la première partie de mon code je l'ai résolu mais en ce qui concerne le dataset et le nombre de tables qu'il contient toujours un petit problème 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
     
     Dim firstSql As String
     Dim secsql As String
     
                adapt.SelectCommand = New OleDbCommand(firstSql, connec)
                adapt.Fill(ds, "patient")
     
     
                adapt.SelectCommand.CommandText = secsql
                adapt.Fill(ds, "docteur")
     
                mybbase = Me.BindingContext(ds, "patient")
                mybbase = Me.BindingContext(ds, "docteur")
     
                txt_nom.DataBindings.Add(New Binding("text", ds, "patient.nom_patient"))
                txt_id_patient.DataBindings.Add(New Binding("text", ds, "patient.id_patient"))
     
                txt_nom_doc.DataBindings.Add(New Binding("text", ds, "docteur.nom_doc"))
                txt_id_docteur.DataBindings.Add(New Binding("text", ds, "docteur.id_docteur"))
     
                'Pour le bouton ajouter
     
            LaLigne = ds.Tables("patient").NewRow()
            LaLigne = ds.Tables("uf").NewRow()
     
            LaLigne("Nom_patient") = txt_nom.Text
            LaLigne("Nom_doc") = txt_doc_nom.Text
     
            ds.Tables("patient").Rows.Add(LaLigne)
            ds.Tables("docteur").Rows.Add(LaLigne)
     
            CmdBuild = New OleDbCommandBuilder(adapt)
     
            adapt.Update(ds, "patient")
            adapt.Update(ds, "docteur")
     
            adapt.Fill(ds, "patient")
            adapt.Fill(ds, "docteur")
    Alors voilà j'utilise donc BindingManagerBase pour mes textbox, et pour ce qu'il en ai de l'ajout je n'y arrive pas de cette manière, il me dit par exemple qu'une telle table n'appartient pas à cette colonne.

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour Awesome99
    Ton code a besoin d'etre serieusement lifte pour ce qui de l'utilisation de variables et vers quoi elles pointent.Faut faire attention.
    Ensuite mauvais 'utilsation de OleDbCommandBuilder avec 2 tables .
    -Il pointe toujours vers la derniere table utilisee et il faut le rediriger sur la table desiree avec le Texte de ta commande avant de l'executer(myCmd.CommandText=strSQL1,myCmd.CommandText=strSQL2 etc....)
    Pour cela declare une variable Commande au niveau form pour pouvoir faire la redirection.
    Pour le manager un seul suffit sur un form .Il coordonne tous les controles du form lies à ton datasource(ds).
    ton code relifte:
    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
     
    Imports System.Data.OleDb
     
    Public Class FormAwesome
    	Private firstSql As String
    	Private secSQL As String
    	Private myConnection As OleDbConnection
    	'declare ici une variable commande en portee class (ton form) 
    	Private myCmd As OleDbCommand
    	Private adapt As OleDb.OleDbDataAdapter
    	'declare ici le builder en porte class
    	Private CmdBuild As OleDb.OleDbCommandBuilder
    	Private ds As DataSet
    	'un seul manager suffit pour tous les controles lies de la forme
    	Private myManager As BindingManagerBase
     
    	Private Sub FormAwesome_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     
    	End Sub
    	Private Sub btnLoadData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoadData.Click
    		myConnection = New OleDb.OleDbConnection
    		myConnection.ConnectionString = My.Settings.MEDECINECnStr
    		'init adapter
    		adapt = New OleDb.OleDbDataAdapter
    		'init commande avec connection
    		myCmd = New OleDbCommand
    		myCmd.Connection = myConnection
     
    		'init ds
    		ds = New DataSet
     
    		'fill "patient"
    		firstSql = "SELECT * FROM Patient"
    		myCmd.CommandText = firstSql
    		adapt.SelectCommand = myCmd
    		adapt.Fill(ds, "patient")
     
    		'fill "docteur"
    		secSQL = "SELECT * FROM Docteur"
    		myCmd.CommandText = secSQL
    		adapt.Fill(ds, "docteur")
     
    		myManager = Me.BindingContext(ds, "patient")
     
     
    		txt_nom.DataBindings.Add(New Binding("text", ds, "patient.nom_patient"))
    		txt_id_patient.DataBindings.Add(New Binding("text", ds, "patient.id_patient"))
    		Me.DataGridViewPatient.DataSource = Me.ds
    		Me.DataGridViewPatient.DataMember = Me.ds.Tables("patient").TableName
     
    		txt_doc_nom.DataBindings.Add(New Binding("text", ds, "docteur.nom_docteur"))
    		txt_id_docteur.DataBindings.Add(New Binding("text", ds, "docteur.id_docteur"))
    		Me.DataGridViewDocteur.DataSource = Me.ds
    		Me.DataGridViewDocteur.DataMember = Me.ds.Tables("docteur").TableName
     
    	End Sub
    	'Pour le bouton ajouter
    	Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
     
    		' Abus dans le nom des variables :
    		'ta variable ligne contient n'importe n'importe quoi
    		Dim LaLigne As DataRow
     
     
    		'ajout ligne à table "patient" 
    		'ta variable LaLigne pointe maintenant pointe vers "patient"
    		LaLigne = ds.Tables("patient").NewRow()
    		LaLigne("nom_patient") = Trim(txt_nom.Text)
    		LaLigne("id_patient") = Trim(txt_id_patient.Text)
    		ds.Tables("patient").Rows.Add(LaLigne)
     
    		'init builder 
    		CmdBuild = New OleDbCommandBuilder(adapt)
     
    		'builder doit pointer sur table "patient" en reinitialisant commandText 
    		myCmd.CommandText = firstSql
    		CmdBuild.GetInsertCommand()	'utilise ca (& update,ou delete suivant le cas)
    		adapt.Update(ds, "patient")
     
    		'ta variable LaLigne pointe maintenant pointe vers "docteur"
    		LaLigne = ds.Tables("docteur").NewRow()
    		LaLigne("nom_docteur") = Trim(txt_doc_nom.Text)
    		LaLigne("id_docteur") = Trim(txt_id_docteur.Text)
    		ds.Tables("docteur").Rows.Add(LaLigne)
     
    		'builder pointe sur "docteur" en reinitialisant commandText 
    		myCmd.CommandText = secSQL
    		CmdBuild.GetInsertCommand()	'utilise ca & update,ou delete suivant le cas
    		adapt.Update(ds, "docteur")
     
     
     
    		'code inutile.pourquoi?
    		'adapt.Fill(ds, "patient")
    		'adapt.Fill(ds, "docteur")
     
    	End Sub
     
     
    End Class
    Bon code..........

Discussions similaires

  1. Accéder a plusieurs tables via Dataset
    Par Mustang83 dans le forum ADO.NET
    Réponses: 17
    Dernier message: 16/10/2013, 16h09
  2. Réponses: 3
    Dernier message: 19/01/2010, 16h56
  3. Remplissage d'une table via requete SQL
    Par PyMon dans le forum WinDev
    Réponses: 3
    Dernier message: 11/06/2008, 12h08
  4. Remplissage de table via un recordset
    Par Frog74 dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/05/2008, 13h20
  5. [c# 2.0] Mise à jour d'une table via DataSet
    Par tscoops dans le forum ASP.NET
    Réponses: 4
    Dernier message: 04/01/2008, 13h52

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