cs_SEB73460
Messages postés271Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention29 novembre 2022
-
26 juin 2007 à 10:58
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 2007
-
1 juil. 2007 à 20:54
Bonjour à tous,
Lors de la mise à jour de ma base Access avec l'instruction "Update" je n'arrive pas à mettre à jour la ligne que j'ai selectionnée dans mon listview
J'ai du oublier quelque chose dans mon code !
Merci pour votre aide
A+
Mon code :
'Initialisation de la chaine de paramŠtres pour la connection
'Donne … la propri‚t‚ connectionstring les paramŠtres de connexionobjconnection.ConnectionString = ConnString
'Ouverture de la connectionobjconnection.Open()
'Fermeture de la connectionobjconnection.Close()
'Requete de mise … jour de la baseSQLString "UPDATE PROG SET [Fabricant]'" & TextBox7.Text &
"', [Type] ='" & TextBox8.Text &
"', [D‚signation] ='" & TextBox2.Text &
"', [Taille m‚moire] ='" & TextBox1.Text &
"', [Boitier] ='" & TextBox9.Text &
"', [Temps d'accŠs] ='" & TextBox3.Text &
"', [Nombre d'octets] ='" & TextBox4.Text &
"', [Code Fabricant] ='" & TextBox6.Text &
"', [Code Composant] ='" & TextBox5.Text &
"' WHERE Fabricant ='" & form11.ListView1.Items(form11.ListView1Position).Text &
"'"
Try
'Code qui execute la requeteobjconnection.Open()
Dim objCommand
As
New OleDb.OleDbCommand(SQLString, objconnection)objCommand.ExecuteNonQuery()
objconnection.Close()
'Gestionnaire d'erreurs sur la requete
Catch ex
As ExceptionMsgBox(ex.ToString)
End
Try
'Mise … jour de la listview de la form11 - Contenu des textbox dans le listview de la form11form11.ListView1.Items(form11.ListView1Position).SubItems(0).Text = TextBox7.Text
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 26 juin 2007 à 12:13
Pour la question de la clé primaire,
le N° auto est déconseillé.C' est un truc pour la compta de pépère...:-)
Utilises un EntierLong que tu pourras gérer à ta guise.
WHERE Fabricant ='" & form11.ListView1.Items(form11.ListView1Position).Text & "'"
ne suffit pas pour être précis.
Si tu as plus d' une ligne pour un même fabriquant.
Toutes ses occcurences vont être mises à jour
Questions :
For Each ListView1Position In ListView1.SelectedIndices
???
Next
If ListView1.SelectedIndices.Count <> 0 Then
???
End If
Met plutôt
If ListView1.SelectedIndices.Count = 0 Then Exit Sub tout au début
et avant même l' ouverture de la connection.
fiko81
Messages postés381Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention 5 septembre 20103 26 juin 2007 à 11:02
Salut,
Je pense que tu n'as rien oublié... au contraire tu ouvres ta base mais la referme aussi tot :
'Initialisation de la chaine de param?tres pour la connection
ConnString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & Application.StartupPath &
"\PROG.mdb;"'Donne ? la propri?t? connectionstring les param?tres de connexionobjconnection.ConnectionString = ConnString
'Ouverture de la connectionobjconnection.Open()
<strike>'Fermeture de la connectionobjconnection.Close()
</strike>'Requete de mise ? jour de la baseSQLString "UPDATE PROG SET [Fabricant]'" & TextBox7.Text &
"', [Type] ='" & TextBox8.Text &
"', [D?signation] ='" & TextBox2.Text &
"', [Taille m?moire] ='" & TextBox1.Text &
"', [Boitier] ='" & TextBox9.Text &
"', [Temps d'acc?s] ='" & TextBox3.Text &
"', [Nombre d'octets] ='" & TextBox4.Text &
"', [Code Fabricant] ='" & TextBox6.Text &
"', [Code Composant] ='" & TextBox5.Text &
"' WHERE Fabricant ='" & form11.ListView1.Items(form11.ListView1Position).Text &
"'"Try'Code qui execute la requeteobjconnection.Open()
Dim objCommand
AsNew OleDb.OleDbCommand(SQLString, objconnection)objCommand.ExecuteNonQuery()
objconnection.Close()
'Gestionnaire d'erreurs sur la requeteCatch ex
As ExceptionMsgBox(ex.ToString)
EndTry'Mise ? jour de la listview de la form11 - Contenu des textbox dans le listview de la form11form11.ListView1.Items(form11.ListView1Position).SubItems(0).Text = TextBox7.Text
cs_Exploreur
Messages postés4822Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 26 juin 2007 à 11:05
Re,
Car je crois que tu récupère la position de ton listview, qui n'est pas forcément la position de ton record dans ta base de donnée....
Si tu as créer une clé primaire, je te conseille de l'utiliser, cela sera plus pratique pour toi, pour te positionner sur le bon record à modifier...
Tu n'as cas créer un colonne dans ta listview qui affiche le numéro auto de ta table et quand tu fais ta requête tu te sers de celui-ci pour te positionner dessus dans ta table...
cs_SEB73460
Messages postés271Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention29 novembre 2022 26 juin 2007 à 11:12
Merci à tous pour vos réponses,
pour Exploreur,
-non je n'ai pas creer de clé primaire et je ne prefere pas l'utiliser pour le moment
car apres avoir fais des essais , si je supprime un enregistrement je me retrouve avec un trou dans les clés
Voici le code que j'ai quand je Doubleclick sur mon listview :
' Pour ˆtre sur que vous avez s‚lectionner un item
If
ListView1.SelectedIndices.Count <> 0
Then
End
If
' Pour faire la ligne s‚lectionn‚ avec toutes les colonnes
For
Each
ListView1Position
In
ListView1.SelectedIndices
Next
'Affiche contenu de la ligne s‚lectionn‚e du listview1 dans les textbox de la Form11
cs_Exploreur
Messages postés4822Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 26 juin 2007 à 11:20
Salut,
Tu as raison pour les trous, mais cela est parfois très utile d'avoir une clé primaire...Mais il existe des source pour pouvoir compacter et réparer une base de donnée sur le site, cela enlève justement les trous...Mais comme tu le dis, chacun fais comme il a envie....
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 26 juin 2007 à 14:15
Salut Exploreur,
Ma remarque traduit mon antipathie pour le N° Auto :-)
En plus c' est vrai...Microsoft l' a prévu pour des petites applic
pour gérer le budget familiale ou tout autre gestion pour la quel
on ne se soucie guère de la clé.
Du moment ou elle permet d' avoir un index pour afficher dans
l' ordre d' entrée,on s' en contrete.
PS: @ SEB, tu aurais compris cerainement que c' était sans
méchanceté de ma part.
cs_SEB73460
Messages postés271Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention29 novembre 2022 26 juin 2007 à 15:12
Merci pout ta réponse Chaibat05
"Utilises un EntierLong que tu pourras gérer à ta guise." je ne comprends pas !
je débute en vb.net
peut tu me donner un peu plus d'infos à ce sujet ?
Merci beaucoup
A+
im_no_angel_510
Messages postés7Date d'inscriptionmercredi 16 mai 2007StatutMembreDernière intervention15 juillet 2007 1 juil. 2007 à 13:19
dans une gestion commercial si un client a commandé une quantité on doi faire sortir cette quantité du stock donc on doit automatiquement faire un mise a jour a notre base de donnée pour reduire le nombre de ce produit dans le stock mai je sais pas comment y faire dans vb
please help me ,
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 1 juil. 2007 à 20:54
En règle général,
la quantité disponible d' un produit est calculée à partir de
(Stock_Initial+SommeQteEntree)-SommeQteSortie
En liant ta table Produits (Stock_iniial) à une requete regroupement
sur ta table Details_Commandes ou Detail_Mouvements (Qte entrée et Qte sortie)
tu peux générer un tel calcul.
Pour faire de telle requete, tout dépend si tu as une table pour les entrées
et une pour les sorties ou si tu n' as qu' une seule table avec un libellé:
achat ou vente. et donc entrée ou sortie
Difficile de te répondre avec précision si on ignore tout de ta base et
de la structure de tes tables.
En tout cas moi j' intervertis juste Qte en - Qte en cas de vente lors de ma requete
regroupement.
Je dis bien générer et non mettre à jour qte en stock.Pour moi , cette donnée ne figure
nulle part.C' est à dire qu' elle n' est pas enregistrée mais juste calculée au moment
ou je désire avoir une idée sur le stock.