Récupérer lignes datagridview
sistaroro
-
Scalpweb Messages postés 1483 Statut Membre -
Scalpweb Messages postés 1483 Statut Membre -
Bonjour,
j'ai un petit souci. Voila mon problème: j'ai un datagridview ou il y a des données. Et en fait je veux insérer une partie de ces données dans une table.
Pour cela je le fait avec une boucle mais seulement la première ligne du datagridview est insérée dans la base de données. Voici le code. Merci d'avance.
Public Sub insertion_ligne_facturebdd(ByVal numero_facture AsInteger)
'Déclaration de la connexion à la base de données'
Dim MaConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=librairie.mdb")
Dim Macommande As OleDbCommand = MaConnexion.CreateCommand()
Dim i AsInteger
Dim j AsInteger
j = ajouter_facture.grille.Rows.Count
For i = 0 To i = j
'Conversion de la quantité en integer'
Dim quantite AsInteger
quantite = CType(ajouter_facture.grille(3, i).Value.ToString, Integer)
'Conversion du numéro du produit'
Dim num_produit AsInteger
num_produit = CType(ajouter_facture.grille(0, i).Value.ToString, Integer)
'Commande avec la requete d'insertion dans la table composer' Macommande.CommandText = "INSERT INTO composer(num_facture,num_produit,quantité_achetée) VALUES(" & numero_facture & "," & num_produit & "," & quantite & ") ;"
Dim MyDataAdapter AsNew OleDbDataAdapter(Macommande)
'On fait appel au dataAdapter puis on ouvre la connexion
MaConnexion.Open()
'on éxécute la commande
MyDataAdapter.UpdateCommand = Macommande
MyDataAdapter.UpdateCommand.ExecuteNonQuery()
Dim Macommande3 As OleDbCommand = MaConnexion.CreateCommand()
'Commande avec la requete pour retirer le stock dun produit'
Macommande3.CommandText = "UPDATE produit SET stock_actuel=(stock_actuel-" & quantite & ") WHERE num_produit=" & num_produit & ";"
Dim MyDataAdapter3 AsNew OleDbDataAdapter(Macommande3)
'On fait appel au dataAdapter puis on ouvre la connexion
'on éxécute la commande
MyDataAdapter3.UpdateCommand = Macommande3
MyDataAdapter.UpdateCommand.ExecuteNonQuery()
'et on ferme la connexion
MaConnexion.Close()
Next
End Sub
j'ai un petit souci. Voila mon problème: j'ai un datagridview ou il y a des données. Et en fait je veux insérer une partie de ces données dans une table.
Pour cela je le fait avec une boucle mais seulement la première ligne du datagridview est insérée dans la base de données. Voici le code. Merci d'avance.
Public Sub insertion_ligne_facturebdd(ByVal numero_facture AsInteger)
'Déclaration de la connexion à la base de données'
Dim MaConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=librairie.mdb")
Dim Macommande As OleDbCommand = MaConnexion.CreateCommand()
Dim i AsInteger
Dim j AsInteger
j = ajouter_facture.grille.Rows.Count
For i = 0 To i = j
'Conversion de la quantité en integer'
Dim quantite AsInteger
quantite = CType(ajouter_facture.grille(3, i).Value.ToString, Integer)
'Conversion du numéro du produit'
Dim num_produit AsInteger
num_produit = CType(ajouter_facture.grille(0, i).Value.ToString, Integer)
'Commande avec la requete d'insertion dans la table composer' Macommande.CommandText = "INSERT INTO composer(num_facture,num_produit,quantité_achetée) VALUES(" & numero_facture & "," & num_produit & "," & quantite & ") ;"
Dim MyDataAdapter AsNew OleDbDataAdapter(Macommande)
'On fait appel au dataAdapter puis on ouvre la connexion
MaConnexion.Open()
'on éxécute la commande
MyDataAdapter.UpdateCommand = Macommande
MyDataAdapter.UpdateCommand.ExecuteNonQuery()
Dim Macommande3 As OleDbCommand = MaConnexion.CreateCommand()
'Commande avec la requete pour retirer le stock dun produit'
Macommande3.CommandText = "UPDATE produit SET stock_actuel=(stock_actuel-" & quantite & ") WHERE num_produit=" & num_produit & ";"
Dim MyDataAdapter3 AsNew OleDbDataAdapter(Macommande3)
'On fait appel au dataAdapter puis on ouvre la connexion
'on éxécute la commande
MyDataAdapter3.UpdateCommand = Macommande3
MyDataAdapter.UpdateCommand.ExecuteNonQuery()
'et on ferme la connexion
MaConnexion.Close()
Next
End Sub
A voir également:
- Récupérer lignes datagridview
- Recuperer message whatsapp supprimé - Guide
- Récupérer mon compte facebook désactivé - Guide
- Comment recuperer une video sur youtube - Guide
- Comment récupérer un compte facebook piraté - Guide
- Impossible de récupérer mon compte gmail - Guide
22 réponses
Merci beaucoup, mais maintenant j'ai un autre souci. Je veux convertir le texte contenu dans certaines cellules en integer.Mais je ne sais pas comment faire pour récupérer la valeur de type string.
je n'ai pas très bien compris.je veux récupérer le texte qui est dans la cellule et le convertir en integer pour l'insérer dans la base de données
Apparemment, tu as déjà réussi :
num_produit = CType(ajouter_facture.grille(0, i).Value.ToString, Integer)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ben sa ne fonctionne pas.je veux récupérer le numéro des produits qui existent dans la base et j'ai un message d'erreur(Vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requis dans la table 'PRODUIT'.). alors je pense que sa ne me retourne pas la valeur ki est contenue dans les cellules.merci davance
En fait, sa me retourne 0 pour le numéro du produit et la quantité alors que les valeurs affichées c'est 2 pour le produit et 1 pour la quantité
ben je pense que non, pour la quantité je fais :
quantite = CType(grille(3, i).Value, Integer) avec i le nombre de lignes de la facture
et le numéro du produit
num_produit = CType(grille(0, i).Value, Integer)
et je fais une boucle pour de i=0 jusqau nombre de lignes.
Sur le datagridview, la quantité est la 4eme colonne et le numéro du produit la 1ere colonne.
j'ai cru comprendre que l'on commencait a compter a partir de 0.
quantite = CType(grille(3, i).Value, Integer) avec i le nombre de lignes de la facture
et le numéro du produit
num_produit = CType(grille(0, i).Value, Integer)
et je fais une boucle pour de i=0 jusqau nombre de lignes.
Sur le datagridview, la quantité est la 4eme colonne et le numéro du produit la 1ere colonne.
j'ai cru comprendre que l'on commencait a compter a partir de 0.
Oui c'est bien ça...
JE ne suis pas expert en VBA, et la je sèche...
jvais réfléchir.
passe moi un lien vers ton fichier au pire
JE ne suis pas expert en VBA, et la je sèche...
jvais réfléchir.
passe moi un lien vers ton fichier au pire
Pour que tu gagnes un peu de temps, en VB2005 :
quantite = CType(ajouter_facture.grille(3, i).Value.ToString, Integer)
peut s'écrire :
quantite = ajouter_facture.grille(3, i).Value
quantite = CType(ajouter_facture.grille(3, i).Value.ToString, Integer)
peut s'écrire :
quantite = ajouter_facture.grille(3, i).Value
Et avec ce code là ?
For i = 1 to 5
For j = 1 To 10
msgbox i & ";" & j & "->" & ajouter_facture.grille(i,j).value.ToString
Next
Next
For i = 1 to 5
For j = 1 To 10
msgbox i & ";" & j & "->" & ajouter_facture.grille(i,j).value.ToString
Next
Next
Il faut savoir les valeurs i et j correspondantes au valeurs que tu veux...
Pour être sur que ta boucle pointe bien vers les bonnes.
Tu comprends ?
Pour être sur que ta boucle pointe bien vers les bonnes.
Tu comprends ?
oui mais une fois que je sais,
le numéro du produit c'est (0,i) et pour la quantité c'est (3,i) .
Je dois faire 2 pour imbriqués ou un seul suffit?
le numéro du produit c'est (0,i) et pour la quantité c'est (3,i) .
Je dois faire 2 pour imbriqués ou un seul suffit?
Ton code devrait marcher...
Essayes de rajouter :
msgbox quantite & "-" & num_produit
Après :
Est-ce les bonnes valeurs qui s'affichent ?
Essayes de rajouter :
msgbox quantite & "-" & num_produit
Après :
Dim num_produit AsInteger num_produit = CType(ajouter_facture.grille(0, i).Value.ToString, Integer)
Est-ce les bonnes valeurs qui s'affichent ?