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 :

Remplir commande et details de commande automatiquement à l’aide de deux procedures


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut Remplir commande et details de commande automatiquement à l’aide de deux procedures
    Bonjour tous le monde,
    SVP je besoin de vos aides
    J’aimerai remplir une commande et details de commande automatiquement à l’aide de deux procedures
    1er : procedure ajout commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub AddCommande(ByVal NumCommande As Integer, ByVal DateCommande As Date, ByVal NumCLient As Integer, ByVal Description_Commande As String)
     
            If CN.State = ConnectionState.Closed Then
                CN.Open()
            End If
                    Dim cmdCMDCLtPrdt As New OleDb.OleDbCommand
            cmdCMDCLtPrdt.Connection = CN
     
            cmdCMDCLtPrdt.CommandText = "insert into Commandes(NumCommande,DateCommande,NumClient,Description_Commande)" & _
                                               "values('" & txtNCdclt.Text & "','" & dateCmdClt.Text & "','" & txtnumclient.Text & "','" & txtdescmdClt.Text & "')"
                    cmdCMDCLtPrdt.ExecuteNonQuery()
            IdAutoCommandeCltPrdt()
            CN.Close()
        End Sub
    2ème : procedure ajout dans details de commande:
    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
    Public Sub AddDetailCommande(ByVal Reference As Integer, ByVal NumCommande As Integer, ByVal Prix_unitaire As Double, ByVal Quantite As Integer, ByVal PVenteHT As Double, ByVal taux As Integer, ByVal TVA As Integer, ByVal PrixVenteTTC As Double, ByVal Remise As Integer, ByVal MontantTotPrixVente As Double)
     
            If CN.State = ConnectionState.Closed Then
                CN.Open()
            End If
             Dim cmdDetailcd As New OleDb.OleDbCommand
     
     
            cmdDetailcd.Connection = CN
            cmdDetailcd.CommandText = "insert into Details_commandes(Reference,NumCommande,Prix_unitaire,Quantite,PVenteHT,Taux,TVA,PrixVenteTTC,Remise,MontantTotPrixVente)" & _
                                              "values('" & txtIRefproduit.Text & "','" & txtNCdclt.Text & "','" & txtPrix.Text & "','" & txtQte.Text & "','" & txtPVHT.Text & "','" & txtTaux.Text & "','" & txtTVA.Text & "','" & txtPVTTC.Text & "','" & txtRemise.Text & "','" & txtTMntTTC.Text & "')"
     
     
            cmdDetailcd.ExecuteNonQuery()
     
     
     
            CN.Close()
        End Sub
    3 ème : Appel de deux procedure par click sur une bouton:
    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
    Private Sub btnAddCommande_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddCommande.Click
            'ajouter donnée dans commande
            Dim i As Integer
            AddCommande(txtNCdclt.Text, dateCmdClt.Value, txtnumclient.Text, txtdescmdClt.Text)
     
            'jouter dans details de commande
     
            For i = 0 To dgvProduits.Rows.Count - 1
                AddDetailCommande(dgvProduits. Rows(i).Cells(0).Value, _
                                                                 dgvProduits.Rows(i).Cells(2).Value, _
                                   dgvProduits.CurrentRow.Cells(3).Value, _
                                   dgvProduits.Rows(i).Cells(4).Value, _
                                   dgvProduits.Rows(i).Cells(5).Value, _
                                   dgvProduits.Rows(i).Cells(6).Value, _
                                   dgvProduits.Rows(i).Cells(7).Value, _
                                   dgvProduits.Rows(i).Cells(8).Value, _
                                   dgvProduits.Rows(i).Cells(9).Value)
     
            Next
     
     
            MsgBox("Le commande a été ajouté avec succée !!!", vbInformation + vbOKOnly, "Information ")
     
        End Sub
    Pour e premier procedure tous va bien et je peux vir les données sur la table commande. Mais pour le deuxième procedure j’ai reçu le probleme suivant :

    La conversion de la chaîne "Anneau de dentition refrigerant " en type 'Integer' n'est pas valide.

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Quand on développe, il faut connaitre les points d'arrêts et le pas-à-pas. C'est la base.

    Pour faire cela tu cliques dans la marge de ton code sur la ligne de code qui t'intéresse, ça mets un point rouge et le code s'arrête quand tu y arrives.

    Du coup tu vas le mettre ici dans la méthode AddDetailCommande. sur une des première ligne...

    Quand le code s'y arrête, tu passes la souris au dessus des paramètres... Ca va t'afficher une info-bulle avec la valeur des paramètres...
    Et là tu te rendra compte que pour un paramètre censé être un Integer (Prix ou je ne sais quoi), tu lui à passé en paramètres du texte.

    Donc tu en concluras que tu as passé, en paramètre de cette procédure, une mauvaise colonne de ton DatagridView, il faut trouver laquelle.


    PS : Sinon, pour bien faire les choses, il ne faut pas executer les requetes de cette manière à l'ancienne justement pour éviter ce genre d'erreur... Mais d'utilisé les requêtes paramétrées. Il y a plein de tutorial partout
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    j'ai essayé mais sans vain!!!!!!!!!!
    Images attachées Images attachées  

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Passe la souris au dessus des ".Value" et trouve laquelle contient le texte incriminé
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    rang par colonne de parcours de datagridview
    'r(0) = txtIRefproduit.Text
    'r(1) = txtDesignProduit.Text (n'exite pas au detail de commande"
    'r(2) = txtPrix.Text
    'r(3) = txtQte.Text
    'r(4) = txtPVHT.Text
    'r(5) = txtTaux.Text
    'r(6) = txtTVA.Text
    'r(7) = txtPVTTC.Text
    'r(8) = txtRemise.Text
    'r(9) = txtTMntTTC.Text

    j'essaye de corrigé mais j'ai pas trouvé l'idee pouvez m'aider
    merci
    Images attachées Images attachées  

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Passe la souris au dessus des ".Value" et trouve laquelle contient le texte incriminé
    il ya des "" pour tous les parametre sauf le numéro de commande je peux voir son valeur

  7. #7
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Tu n'as pas fais ce que j'ai dis : Passer la souris sur les ".value", et trouver quelle colonne contient la chaîne de caractère "Anneau de dentition refrigerant ". ici :

    Nom : img1.JPG
Affichages : 255
Taille : 57,2 Ko


    Car le problèmes vient bien du fait que ta méthode attends des paramètres... certains sont des integers :

    Nom : img2.JPG
Affichages : 219
Taille : 12,3 Ko


    Or toi, tu envois directement du contenu, en pensant que c'est les bonnes colonnes...

    Nom : img3.JPG
Affichages : 287
Taille : 32,8 Ko


    Déjà, normalement, on utilise pas trop l'index pour indiquer quelle colonne... Car le jour où tu changes les colonnes do'rdre.. Ca ne marchera plus.
    En plus, (et c'est peut être ton problème), si tu as des colonnes invisibles... Toi tu crois que la deuxième colonne que tu vois à l'indice 1, or c'est peut être 4 ou 5 si il y a 3-4 colonnes invisible.

    Pour bien faire, il faut aller en Mode Design, clique-droit sur le datagridview, sélectionner une colonnes, et récupérer son name

    Et pour récupérer une valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Datagridview1.Item(Me.NomdeMacolonne.Name,indexLigne).value
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  8. #8
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Si tu n'en sors toujorus pas avec la souris, pour trouver quelle valeur ne va pas... Bah ma foi, fais les étapes une par une, ça déclenchera une erreur sur la bonne ligne :


    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
    Dim Reference As Integer
    Dim NumCommande As Integer
    Dim Prix_unitaire As Double
    Dim Quantite As Integer
    Dim PVenteHT As Double
    Dim taux As Integer
    Dim TVA As Integer
    Dim PrixVenteTTC As Double
    Dim Remise As Integer
    Dim MontantTotPrixVente As Double
     
     For i = 0 To dgvProduits.Rows.Count - 1
     
         'L'erreur va arrivé ici !!!! au moment ou tu veux mettre une chaine dans un Integer
         Reference = dgvProduits. Rows(i).Cells(0).Value,                                            
         NumCommande = dgvProduits.Rows(i).Cells(1).Value
         Prix_unitaire  = dgvProduits.CurrentRow.Cells(2).Value
         Quantite = dgvProduits.Rows(i).Cells(3).Value
         PVenteHT = dgvProduits.Rows(i).Cells(4).Value
         taux = dgvProduits.Rows(i).Cells(5).Value
         TVA = dgvProduits.Rows(i).Cells(6).Value
         PrixVenteTTC = dgvProduits.Rows(i).Cells(7).Value
         Remise = dgvProduits.Rows(i).Cells(8).Value
         MontantTotPrixVente = dgvProduits.Rows(i).Cells(9).Value
     
         AddDetailCommande(Reference ,NumCommande ,Prix_unitaire,Quantite  ,PVenteHT, taux,TVA,PrixVenteTTC,Remise,MontantTotPrixVente     )
     
    Next
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Tu n'as pas fais ce que j'ai dis : Passer la souris sur les ".value", et trouver quelle colonne contient la chaîne de caractère "Anneau de dentition refrigerant ". ici :

    Nom : img1.JPG
Affichages : 255
Taille : 57,2 Ko


    Car le problèmes vient bien du fait que ta méthode attends des paramètres... certains sont des integers :

    Nom : img2.JPG
Affichages : 219
Taille : 12,3 Ko


    Or toi, tu envois directement du contenu, en pensant que c'est les bonnes colonnes...

    Nom : img3.JPG
Affichages : 287
Taille : 32,8 Ko


    Déjà, normalement, on utilise pas trop l'index pour indiquer quelle colonne... Car le jour où tu changes les colonnes do'rdre.. Ca ne marchera plus.
    En plus, (et c'est peut être ton problème), si tu as des colonnes invisibles... Toi tu crois que la deuxième colonne que tu vois à l'indice 1, or c'est peut être 4 ou 5 si il y a 3-4 colonnes invisible.

    Pour bien faire, il faut aller en Mode Design, clique-droit sur le datagridview, sélectionner une colonnes, et récupérer son name

    Et pour récupérer une valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Datagridview1.Item(Me.NomdeMacolonne.Name,indexLigne).value

    j'ai essaye de faire au premier ce que vous m'avez dit pour afficher Passer la souris sur les ".value", mais je n'arrive pas pour tous les argument sauf pour le numero de commande j'ai le vu.

    en fait en mode design de datagridview je le fait pas creation de table comme sa:
    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
      Private Sub CreateDataTableProduits()
     
     
            dtProduits.Columns.Add("Reference")
            dtProduits.Columns.Add("Designation")
            dtProduits.Columns.Add("Prix Unitaire")
            dtProduits.Columns.Add("Quantité")
            dtProduits.Columns.Add("Prix de vente")
            dtProduits.Columns.Add("Taux")
            dtProduits.Columns.Add("TVA")
            dtProduits.Columns.Add("Prix de venteTTC")
            dtProduits.Columns.Add("Remise")
            dtProduits.Columns.Add("Montant Total")
     
            dgvProduits.DataSource = dtProduits
     
        End Sub
    Images attachées Images attachées  

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Si tu n'en sors toujorus pas avec la souris, pour trouver quelle valeur ne va pas... Bah ma foi, fais les étapes une par une, ça déclenchera une erreur sur la bonne ligne :


    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
    Dim Reference As Integer
    Dim NumCommande As Integer
    Dim Prix_unitaire As Double
    Dim Quantite As Integer
    Dim PVenteHT As Double
    Dim taux As Integer
    Dim TVA As Integer
    Dim PrixVenteTTC As Double
    Dim Remise As Integer
    Dim MontantTotPrixVente As Double
     
     For i = 0 To dgvProduits.Rows.Count - 1
     
         'L'erreur va arrivé ici !!!! au moment ou tu veux mettre une chaine dans un Integer
         Reference = dgvProduits. Rows(i).Cells(0).Value,                                            
         NumCommande = dgvProduits.Rows(i).Cells(1).Value
         Prix_unitaire  = dgvProduits.CurrentRow.Cells(2).Value
         Quantite = dgvProduits.Rows(i).Cells(3).Value
         PVenteHT = dgvProduits.Rows(i).Cells(4).Value
         taux = dgvProduits.Rows(i).Cells(5).Value
         TVA = dgvProduits.Rows(i).Cells(6).Value
         PrixVenteTTC = dgvProduits.Rows(i).Cells(7).Value
         Remise = dgvProduits.Rows(i).Cells(8).Value
         MontantTotPrixVente = dgvProduits.Rows(i).Cells(9).Value
     
         AddDetailCommande(Reference ,NumCommande ,Prix_unitaire,Quantite  ,PVenteHT, taux,TVA,PrixVenteTTC,Remise,MontantTotPrixVente     )
     
    Next
    Merci pour la reponse mais toujours erreur comme vous m'avez dis
    pour la ligne NumCommande = dgvProduits.Rows(i).Cells(1).Value ******>La conversion de la chaîne "Aide minceurs vital " en type 'Integer' n'est pas valide.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    j'ai rectifier le parcours de gdvproduits comme et je peux voir les valeurs de chaque colonne au niveau de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Reference = Convert.ToInt32(dgvProduits.Rows(i).Cells(0).Value)
                NumCommande = Convert.ToInt32(txtNCdclt.Text).ToString ' une seul commande peux avoir plusieurs produits 
                Prix_unitaire = dgvProduits.CurrentRow.Cells(2).Value
                Quantite = dgvProduits.Rows(i).Cells(3).Value
                PVenteHT = dgvProduits.Rows(i).Cells(4).Value
                taux = dgvProduits.Rows(i).Cells(5).Value
                TVA = dgvProduits.Rows(i).Cells(6).Value
                PrixVenteTTC = dgvProduits.Rows(i).Cells(7).Value
                Remise = dgvProduits.Rows(i).Cells(8).Value
                MontantTotPrixVente = dgvProduits.Rows(i).Cells(9).Value
    Mai j'ai reçu l'erreur suivant au niveau de procedure deatils de commande comme il es indiquer ci-joint:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmdDetailcd.CommandText = "insert into Details_commandes(Reference,NumCommande,Prix_unitaire,Quantite,PVenteHT,Taux,TVA,PrixVenteTTC,Remise,MontantTotPrixVente)" & _
                                              "values('" & txtIRefproduit.Text & "','" & txtNCdclt.Text & "','" & txtPrix.Text & "','" & txtQte.Text & "','" & txtPVHT.Text & "','" & txtTaux.Text & "','" & txtTVA.Text & "','" & txtPVTTC.Text & "','" & txtRemise.Text & "','" & txtTMntTTC.Text & "')"
    lors de debogage tous:
    txtIRefproduit.Text =""
    txtPrix.Text .text=""
    ...
    ...
    ...
    Tous sauf NumeroCommande=txtNCdclt.text=une valeur que j'ai saisi
    SVP Help
    je sais pas comm
    Images attachées Images attachées  

  12. #12
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    SVP AIDEZ moi, j'ai cherché partous mais sans vain:
    le probleme c'est dans le procedure suivant:
    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
     Public Sub AddDetailCommande(ByVal Reference As Integer, ByVal NumCommande As Integer, ByVal Prix_unitaire As Double, ByVal Quantite As Integer, ByVal PVenteHT As Double, ByVal taux As Integer, ByVal TVA As Integer, ByVal PrixVenteTTC As Double, ByVal Remise As Integer, ByVal MontantTotPrixVente As Double)
     
            If CN.State = ConnectionState.Closed Then
                CN.Open()
            End If
            If Len(Trim(txtIRefproduit.Text)) = 0 Then
                MessageBox.Show("Veuiller entrer la reference du produit", "Erreur dé saisir", MessageBoxButtons.OK, MessageBoxIcon.Error)
                txtIRefproduit.Focus()
                Exit Sub
            End If
            'ajouter les données à la table
     
            Dim cmdDetailcd As New OleDb.OleDbCommand
            cmdDetailcd.Connection = CN
            Try
                cmdDetailcd.CommandText = "insert into Details_commandes(Reference,NumCommande,Prix_unitaire,Quantite,PVenteHT,Taux,TVA,PrixVenteTTC,Remise,MontantTotPrixVente)" & _
                                                     "values('" & txtIRefproduit.Text & "','" & txtNCdclt.Text & "','" & txtPrix.Text & "','" & txtQte.Text & "','" & txtPVHT.Text & "','" & txtTaux.Text & "','" & txtTVA.Text & "','" & txtPVTTC.Text & "','" & txtRemise.Text & "','" & txtTMntTTC.Text & "')"
     
                cmdDetailcd.ExecuteNonQuery()
     
            Catch ex As Exception
     
            End Try
     
     
     
            CN.Close()
        End Sub
    en faite lorsque j'ai fait un test sur un element des parametres de procedure comme par exemple Reference il m'affiche "Veuiller entrer la reference du produit
    alors que la reference j'ai ajouté dans la datgridview =dgvprduit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     If Len(Trim(txtIRefproduit.Text)) = 0 Then
                MessageBox.Show("Veuillez entrer la reference du produit", "Erreur dé saisir", MessageBoxButtons.OK, MessageBoxIcon.Error)
                txtIRefproduit.Focus()
                Exit Sub
            End If
    je sais pas comment modifier ce procedure
    SVP c'est trés urgent

  13. #13
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Oulalala.... tu pars de loin, visiblement.... et tu tentes des trucs dans tous les sens, qui ne sont pas logiques.


    Déjà ça, ça va pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmdDetailcd.CommandText = "insert into Details_commandes(Reference,NumCommande,Prix_unitaire,Quantite,PVenteHT,Taux,TVA,PrixVenteTTC,Remise,MontantTotPrixVente)" & _
                                                     "values('" & txtIRefproduit.Text & "','" & txtNCdclt.Text & "','" & txtPrix.Text & "','" & txtQte.Text & "','" & txtPVHT.Text & "','" & txtTaux.Text & "','" & txtTVA.Text & "','" & txtPVTTC.Text & "','" & txtRemise.Text & "','" & txtTMntTTC.Text & "')"
    J'imagine que txtIRefproduit c'est le nom de la colonne... Je n'ai jamais dis d'accéder à la données comme ça... Ca veut rien dire.

    J'ai plutôt que au lieu de faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Quantite = dgvProduits.Rows(i).Cells(3).Value
    Il fallait mettre le nom de la colonne plutôt que son numéro, donc ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Quantite = dgvProduits.Rows(i).Cells(txtPrix.Name).Value

    Ensuite ton problème, c'est ta requête insert (à l'ancienne) : Tu mets des quotes partout : les '
    Or pour les integer il n'en faut pas. Si tu écris une requetes "en dur", ça ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insert into matable (colonneTexte,colonneEntier) Values ('Montexte',4)
    Donc pour les colonnes entières, pas de ''.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  14. #14
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Remets au propre tes 3 procédures...

    Copie le code ici.

    Et si la requete ne passe pas : Mets un point d'arrêts juste avant que la requête ne s’exécute, passe la souris sur la variable :

    cmdDetailcd.CommandText

    Pour voir la vrai requête qui est exécutée, ce qu'il y a dedans. Pas juste le code.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  15. #15
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    [QUOTE=mactwist69;8356646]Oulalala.... tu pars de loin, visiblement.... et tu tentes des trucs dans tous les sens, qui ne sont pas logiques.


    Merci votre aide
    je veux vous montrez mon aider: voir ci joint
    Images attachées Images attachées  

  16. #16
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut Vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requis dans la table
    Citation Envoyé par mactwist69 Voir le message
    Remets au propre tes 3 procédures...

    Copie le code ici.

    Et si la requete ne passe pas : Mets un point d'arrêts juste avant que la requête ne s’exécute, passe la souris sur la variable :

    cmdDetailcd.CommandText

    Pour voir la vrai requête qui est exécutée, ce qu'il y a dedans. Pas juste le code.
    svp je besoin de vos aide. j'ai changé tous et j'ai reçu cette erreur Vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requis dans la table « Produits ».
    1er: Procedure ajout commande

    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
    Public Sub AddCommande(ByVal NumCommande As Integer, ByVal DateCommande As Date, ByVal NumCLient As Integer, ByVal Description_Commande As String)
     
            '---------------------2eme  methode ----------------------------
            '-----------------------------------------------------------------
            Using CN As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\GesCom\Base\GesCom.accdb")
                Using command As New OleDbCommand("insert into Commandes (NumCommande, DateCommande, NumClient, Description_Commande) VALUES (?, ?, ?, ?)", CN)
     
                    command.Parameters.AddWithValue("NumCommande", NumCommande)
                    command.Parameters.AddWithValue("DateCommande", DateCommande)
                    command.Parameters.AddWithValue("NumClient", NumCLient)
                    command.Parameters.AddWithValue("Description_Commande", Description_Commande)
                    CN.Open()
                    command.ExecuteNonQuery()
                End Using
            End Using
    End sub
    2: Ajout détail commande:
    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
     Public Sub AddDetailCommande(ByVal Reference As Integer, ByVal NumCommande As Integer, ByVal Prix_unitaire As Double, ByVal Quantite As Integer, ByVal PVenteHT As Double, ByVal taux As Integer, ByVal TVA As Integer, ByVal PrixVenteTTC As Double, ByVal Remise As Integer, ByVal MontantTotPrixVente As Double)
     
            '-------------------------2eme methode-----------------------
            '-----------------------------------------------------------
            Using CN As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\GesCom\Base\GesCom.accdb")
     
     
                Using command As New OleDbCommand("insert into Details_commandes(Reference, NumCommande, Prix_unitaire, Quantite, PVenteHT, Taux, TVA, PrixVenteTTC, Remise, MontantTotPrixVente) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CN)
                    command.Parameters.AddWithValue("Reference", Reference)
                    command.Parameters.AddWithValue("NumCommande", NumCommande)
                    command.Parameters.AddWithValue("Prix_unitaire", Prix_unitaire)
                    command.Parameters.AddWithValue("Quantite", Quantite)
                    command.Parameters.AddWithValue("PVenteHT", PVenteHT)
                    command.Parameters.AddWithValue("Taux", taux)
                    command.Parameters.AddWithValue("TVA", TVA)
                    command.Parameters.AddWithValue("PrixVenteTTC", PrixVenteTTC)
                    command.Parameters.AddWithValue("Remise", Remise)
                    command.Parameters.AddWithValue("MontantTotPrixVente", MontantTotPrixVente)
     
                    CN.Open()
                    command.ExecuteNonQuery()
                   End Using 
    End Sub
    3:Appel des deux procedure:
    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
     Private Sub btnAddCommande_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddCommande.Click
     
            '----------------2eme methode----------------
            '-------------------------------------------
     
            'ajouter donnée dans commande
     
            Dim i As Integer
     
            AddCommande(txtNCdclt.Text, dateCmdClt.Value, txtnumclient.Text, txtdescmdClt.Text)
     
            'jouter dans details de commande
     
            Dim Reference As Integer
            Dim NumCommande As Integer
            Dim Prix_unitaire As Double
            Dim Quantite As Integer
            Dim PVenteHT As Double
            Dim taux As Integer
            Dim TVA As Integer
            Dim PrixVenteTTC As Double
            Dim Remise As Integer
            Dim MontantTotPrixVente As Double
     
            For i = 0 To dgvProduits.Rows.Count - 1
     
                Reference = Convert.ToInt32(dgvProduits.Rows(i).Cells(0).Value)
                NumCommande = Convert.ToInt32(txtNCdclt.Text).ToString
                Prix_unitaire = dgvProduits.CurrentRow.Cells(2).Value
                Quantite = dgvProduits.Rows(i).Cells(3).Value
                PVenteHT = dgvProduits.Rows(i).Cells(4).Value
                taux = dgvProduits.Rows(i).Cells(5).Value
                TVA = dgvProduits.Rows(i).Cells(6).Value
                PrixVenteTTC = dgvProduits.Rows(i).Cells(7).Value
                Remise = dgvProduits.Rows(i).Cells(8).Value
                MontantTotPrixVente = dgvProduits.Rows(i).Cells(9).Value
     
                AddDetailCommande(Reference, NumCommande, Prix_unitaire, Quantite, PVenteHT, taux, TVA, PrixVenteTTC, Remise, MontantTotPrixVente)
            Next
            IdAutoCommandeCltPrdt()
            MsgBox("Le commande a été ajouté avec succée !!!", vbInformation + vbOKOnly, "Information ")
     
     End Sub
    Remarques: 1- je peux voir les données que j'ai saisi pour la 1er fois et aprés je reçu l'erreur Vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requis dans la table « Produits ».
    2-La table details de commandes contient deux clé "Reference" viens de la Table Produits et "NumCommande" viens de Table Commande
    3- l'idée c'est l'ajout de données se fait de la maniere suivant pour la table détails de commande: je saisi les données dans des textboxes aprés je l'envois au datagridview et par la suite je l'envoi à la base de donnée

  17. #17
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    L'erreur dit que tu ajoutes un "détail commande"... Mais que tu lui donne une valeur pour la clé étrangère de Produit qui n'existe pas dans la table "Produit".
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  18. #18
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    L'erreur dit que tu ajoutes un "détail commande"... Mais que tu lui donne une valeur pour la clé étrangère de Produit qui n'existe pas dans la table "Produit".
    Merci pour votre explication. mais je sais pas pourquoi cette erreur malgré que j'ai verifié dans la base que la clé étrangère (reference dans la table détail de commande) existe bien dans la table produit, en plus j'importe la reference de la table produit directement à partir d'une datagridview qui affiche la liste des produits.
    ci-joint les relations de ma base données.
    y'a t'il une erreur de dans?
    Merci
    Images attachées Images attachées  

Discussions similaires

  1. Remplir l'objet d'un email automatiquement
    Par tibogaet dans le forum VBA Access
    Réponses: 4
    Dernier message: 08/07/2008, 18h36
  2. Remplir un formulaire et se loguer automatiquement
    Par Enhide dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/03/2008, 10h50
  3. [MySQL] Aide envoie commande (calcul quantité + prix commande total)
    Par klue_ dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/05/2007, 11h49
  4. Réponses: 2
    Dernier message: 04/02/2007, 19h48
  5. Lancer une commande (type ligne de commande) depuis programme Java
    Par rprom1 dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 15/12/2006, 12h06

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