Aide sur le VB.net [Résolu]

Messages postés
58
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
10 juin 2011
- - Dernière réponse : gillestang
Messages postés
58
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
10 juin 2011
- 11 août 2009 à 19:03
Bonjour je suis vraiment coincé ça fait quelque jours que j'essaie de trouver une solution mais je n'arrive pas voila mon probleme.
j'ai une form Visite qui comporte un combobox (nom et prenom) pour faire le choix et permettre d'afficher les données du client.
parmis ces données j'ai index, nom, prenoms, datenais,..... tous sont des données de la table Client.
j'ai une listebox qui comporte la liste des achats éffectues par le client (date, article,..) lié au client pas index

je veu que lorsqu'un choisi sur le combobox qu'il affiche les données lié à ce client (nom, prenom,... date, article).

je ne veu pas utiliser le dataset fortement type je veu programme l'accées aux données, la modificaiton, et autres.
Je ne me retrouve vraiement pas dans les terminologies, les utilisations (Dataset, DataAdapter, BindingSource, DataReader,...)

c'est le quel en defini d'abore?

ensuite vien la definition de quoi?

Comment mettre met deux tables dans le même dataset (si c'est possible)

comment liée le dataset au dataadapter au bindingsource
comment acceder aux données depuis le choix dans le combobox? et charger mon form avec les données selectionées?

Merci d'avance pour l'aide
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
13
3
Merci
Salut,

Tout d'abord, je te conseille d'aller faire un tour ici. Lis les 3 chapitres.

De plus tu pose beaucoup de questions sans donner de précisions sur ton projet, on ne connait pas le SGBD, ni le schéma de ta base, comment veux-tu que l'on te réponde précisément ?

Donne plus de détails :

je veu que lorsqu'un choisi sur le combobox qu'il affiche les données lié à ce client (nom, prenom,... date, article).


Afficher dans quoi ? Si dans une liste, de quel type ? Si dans des contrôles, utiliseront-il un BindingSource.

je ne veu pas utiliser le dataset fortement type je veu programme l'accées aux données


Ce n'est pas un choix entre l'un ou l'autre, tu peux utiliser la combinaison des deux, le dataset typé peut être instancié par code, et les requuêtes des TableAdaper peuvent-être modifiés.

@+ Mayzz.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Mayzz
Messages postés
38
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
25 mars 2014
3
Merci
Bonjour,
je peux essayé de te débloquer mais comme le dit Mayzz, il est important de savoir quel type de BD tu utilises car la définition du dataset, data adapter ne sa pas la même

dans le projet
Private DR_LC As SqlDataReader
Private DA_Fic As New SqlDataAdapter
Private DS_Fic As New DataSet
Private WRowF As DataRow

'Alimentation de la CB
Req = "select distinct Nom,Prenom FROM Client"
With Cmd
.CommandType = CommandType.Text
.CommandText = Req
.Connection = Cnx
End With
DR_LC = Cmd.ExecuteReader()
CBClient.Items.Clear()
While DR_LC.Read()
CBClient.Items.Add(DR_LC("Nom).ToString() + " " +DR_LC("Prenom))
End While
DR_LC.Close()

'Selection de la CB
Code à mettre dans l'evenement de la CBClient "SelectedIndexChanged"
wClient = CBClient.SelectedItem

'Alimentation de la listview
Req = "SELECT * FROM Achats where Client='" & WClient & "'"
With Cmd
.CommandType = CommandType.Text
.CommandText = Req
.Connection = Cnx
End With
DA_Fic.SelectCommand = Cmd
DS_Fic.Clear()
DA_Fic.Fill(DS_Fic, "Achats")
l = 0
ListView1.SmallImageList = ImageList1
Do Until l > DS_Fic.Tables("Achats").Rows.Count - 1
WRowF = DS_Fic.Tables("Achats").Rows(l)
Dim Lvt As New ListViewItem
Lvt.Text = WRowF("article")
Lvt.ImageIndex = 1
ListView1.Items.Add(Lvt)
l = l + 1
Loop


Mais pourquoi ne pas utiliser un DatGrid à la place d'un ListView ?
En tout cas, j'espère que cela t'aura débloqué

Bonne journée !

Viviane

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_viviane44
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
13
3
Merci
Heu... je n'ai pas bien compris, quel sont ces 'objets' des contrôles?

datareader sur un objet A => ok

datareader sur un objet B => ok

un dataset sur un objet C tous ayant pour clé numcli => un dataset n'a pas de clé, c'est un ensemble de Tables.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Mayzz
Messages postés
58
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
10 juin 2011
0
Merci
Ok merci pour le lien, j'utilise une base de données MS Access 2007, j'ai charger mon combobox :
ClientComboBox1.DisplayMember = "INDEXAFFIDSTANDART"
ClientComboBox1.ValueMember = "NUMClient"
ClientComboBox1.DataSource = DSet.Tables("Client")
ClientComboBox1.Text = ""
Numclient étant la clés de la table Client, et la clé sécondaire de la table article (data, article)
le nom, le prenom sont des textbox et ListBox3 et une listebox charger ainsi.

DReader = CommandOLE.ExecuteReader()
ListBox3.Items.Clear()
If DReader.HasRows Then
Do While DReader.Read()
ListBox3.Items.Add(DReader.GetValue(2).ToString + " " + DReader.GetValue(1).ToString + " " + DReader.GetValue(3).ToString)
Loop
DReader.Close()
End If
il faut noter que pour charger le commandOLE la requette est faite sur la table article comd = "SELECT ARTICLE.* FROM ARTICLE"

mon form comporte des textbox et la listebox pour les articles je veu affiche les données du client selection dans le form (textbox et listebox = pour l'article).
Mon souhait ai que cela soit dans un bindingSource.

"dataset typé peut être instancié par code, et les requuêtes des TableAdaper peuvent-être modifiés."

oui c'est que je veu faire.
Commenter la réponse de gillestang
Messages postés
58
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
10 juin 2011
0
Merci
J'ai lu le document dans le lien, j'ai compris apresent comment structure mon form, ce que je veu savoir a présent comment peut ton lier un datareader sur un objet A et un datareader sur un objet B et un dataset sur un objet C tous ayant pour clé numcli.
Commenter la réponse de gillestang
Messages postés
58
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
10 juin 2011
0
Merci
Oui c'est bien c'était une erreur pour la clé sur l'objet C lier au dataset. Merci pour les explications
Commenter la réponse de gillestang
Messages postés
58
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
10 juin 2011
0
Merci
Bonjour j'ai un probléme avec la mise ajour de mes données en VB.net
voici le message d'erreur qu'il affiche : L'opération doit utiliser une requête qui peut être mise à jour.

vois le code :
que ce soit une un evenement click ou valided ça me donne le même message.


If PRENOMUSUELTextBox.Text = "" Then
MsgBox("Il faut entrer le prenom !")
Else

'on crée une commande avec le code d'une requête sql de mise à jour
Dim Mycommand1 As OleDbCommand = ConnexionOLE.CreateCommand()
Mycommand1.CommandText "UPDATE PATIENTS SET PATIENTS.PRENOMUSUEL'" & PRENOMUSUELTextBox.Text & "' WHERE ((PATIENTS.NUMPAT)=-2146250084)"

'on crée notre DataAdapter
Dim MyDataAdapter As New OleDbDataAdapter(Mycommand1)

'm'a connexion est déjà ouverte

MyDataAdapter.UpdateCommand = Mycommand1
'On éxécute notre requête
MyDataAdapter.UpdateCommand.ExecuteNonQuery() 'le message souligne cette ligne

End If
Commenter la réponse de gillestang