Suppression d'une ligne dans un datagrid

Signaler
Messages postés
5
Date d'inscription
jeudi 28 avril 2005
Statut
Membre
Dernière intervention
11 avril 2006
-
Messages postés
24
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
12 juillet 2010
-
Bonjour,
Cela fait quelques heures que je consulte le forum pour touver une solution à mon problème; main en vain.
Je fais un travail sur une gestion de stock.
Lors du démarrage de l'application, je lance une requête qui m'affiche - dans un datagrid relié à un contrôle adodc - les articles pour lequels le stock actuel est inférieur au stock minimum et pour lesquels je n'ai pas de commandes en cours.
Je rappatrie bien mes données sur ma feuille "commandes"....quand je doubleclick sur le début de la ligne choisie dans la datagrid.
Je voudrais savoir comment effacer ou coloré cette ligne dans ma datagrid lorsque la commande est acceptée.

Cela fonctionne bien si j'arrête et relance l'application. C'est normal puisque la deuxième partie de ma requête n'est plus valable puisque j'ai une commande en cours.

Merci pour votre aide

5 réponses

Messages postés
165
Date d'inscription
mardi 7 mars 2006
Statut
Membre
Dernière intervention
24 avril 2018

Bon !!!
1) Respect les règles de Codes Sources !!!
Si tu veux être aidé, donne les renseignements de bases, cela évitera les erreurs

c'est à dire: quel OS utilise tu (Win98, XP, ......)
sous quoi développe tu (VB5, VB6, VBNet, ....)
qu'est ce que tu utilises comme logiciel annexés (Excel, Access, .....)

2) Ne sachant pas tout cela, je vais donc faire appelle à mon légendaire
" Pouvoir Osmo-Télépatique " pour le deviner et donc, je l'espère t'aider un peu.

--------------------------------------------------------------------------------------

Hypothèse N°1: ABRACADABRA, madame IRMA tu es sous "XP"
Hypothèse N°2: Ne lache pas le fil, COPPERFIELD je sens la présence de "VB6"

regardes bien :

il faudrait que j'en connaisse un peu plus sur ton projet afin que cela ne te génère pas des erreurs secondaires.....
mais saches que quand tu lies un Adodc avec un Datagrid c'est pour le pire et le meilleur.
En fait, tu prend le problème à l'envers.
le Datagrid est une simple "image" de ta Base De Données (BDD), qui est liée au premier par un Adodc.
Supprime donc l'enregistrement de ta BDD, et le Datagrid sera rafraichit automatiquement.

Regarde le "Screenshot" qui suis, et le code qui va avec.

-----------------------------------------------

Private Sub dtg_DblClick()
dt.Recordset.Delete adAffectCurrent
End Sub

En clair !! Quand tu DblClick sur la ligne, et peut importe où sur cette ligne, cela supprimera l'enregistrement dans ta BDD, et comme celle-çi est liée au Datagrid par l'Adodc, ce dernier mettra à jour automatiquement l'affichage de ce Datagrid.

Bien entendu, par rapport à ton projet, cette BDD sera un clone de l'originale afin de ne pas détruire d'autres données essentielles !!!

à toi de voir si tu peux faire quelque choses de cela !!!!!

en cas de soucis contacte moi, et si je peux, je t'aiderai !!!!

Comprend vite mais il faut lui expliquer longtemp et tout en détail !!!
Messages postés
5
Date d'inscription
jeudi 28 avril 2005
Statut
Membre
Dernière intervention
11 avril 2006

Merci pour la réponse très rapide.


Je travaille avec windows et Access 2000 ainsi que VB6.


Voici une partie de mon code:


1)requête +datagrid

With FReQ
'dimensions de la fenêtre
.Top = 2000
.Width = 10500
.Height = 7250
'requête ds TArt et TFournis avec stoactu<stomin et EnCmde=0
.AdodcRechArt.RecordSource = "SELECT TArt.Libellé,TArt.BR25i,TArt.EnCmde," & _
"TArt.StoActu,TArt.StoMin,TArt.RefFournis,TArt.Colisage,TArt.Rotation, " & _
"TFournis.NFournis, TFournis.AdFournis,TFournis.Cp,TFournis.Localité," & _
"TFournis.NumClient FROM TArt,TFournis " & _
"WHERE ((TFournis.NFournis=TArt.NomFournis)AND((TArt.EnCmde=0)" & _
"AND (TArt.StoActu<=TArt.StoMin)))"
.AdodcRechArt.Refresh

2)dgrid dble click

Private Sub DGridrechArt_DblClick()


Dim rep As String
Dim c, NumRow As Integer
rep = FReQ.DGridRechArt.Columns("Libellé").CellValue(FReQ.DGridRechArt.Bookmark)MsgBox "rep" + rep>je récupère bien le "libellé" sollicité
NumLigne = FReQ.DGridRechArt.RowMsgBox " NumRow" + Str(NumLigne) > ou ici je récupère bien le numéro de ligne à effacer
Call PasserCmde

Public Sub PasserCmde()
' déplacement sur le dernier enregistrement
FCmde.Adodccmde.Recordset.MoveLast
'récupération du dernier numéro d'article
DerNumCmde = FCmde.Adodccmde.Recordset.Fields("Idcmde").Value
MsgBox "idcmde= " + Str(DerNumCmde)
With FCmde
'montret FCmde
.Visible = True
'ajout d'une nouvelle commande
.Adodccmde.Recordset.AddNew
'récupération du prochain numéro de commande
.TxIdCmde.Text = DerNumCmde + 1
'récupération des données venant du dgrid
.TxQuantCmde.Text = FReQ.DGridRechArt.Columns("Rotation").CellValue(FReQ.DGridRechArt.Bookmark) 'FCmde.Adodccmde.Recordset.Fields("Rotation").Value 'FArt.AdodcArt.Recordset.Fields("Rotation").Value
.TxColisageCmde.Text = FReQ.DGridRechArt.Columns("Colisage").CellValue(FReQ.DGridRechArt.Bookmark) 'FCmde.Adodccmde.Recordset.Fields("Colisage").Value ' FArt.AdodcArt.Recordset.Fields("Colisage").Value
.TxBR25iCmde.Text = FReQ.DGridRechArt.Columns("BR25i").CellValue(FReQ.DGridRechArt.Bookmark) 'FCmde.Adodccmde.Recordset.Fields("BR25i").Value 'FArt.AdodcArt.Recordset.Fields("BR25i").Value
.TxNFournisCmde.Text = FReQ.DGridRechArt.Columns("NFournis").CellValue(FReQ.DGridRechArt.Bookmark) 'FCmde.Adodccmde.Recordset.Fields("NomFournis").Value 'FFournis.AdodcFournis.Recordset.Fields("NFournis").Value
.TxLibelCmde.Text = FReQ.DGridRechArt.Columns("Libellé").CellValue(FReQ.DGridRechArt.Bookmark)
.TxDateCmde.Text = Format(Date, jjjjj)
'champ quantité seul champ modifiable
.TxQuantCmde.Enabled = True
'disparition du contrôle adodc
.AdodcArt.Visible = False
'disparition bouton modifier
.BtMod(0).Visible = False
'disparition bouton ajouter
.BtAjout(0).Visible = False
'disparition bouton rechercher
.BtRech(0).Visible = False
'apparition du bouton OK
.BtOk(0).Visible = True



End With 'FCmde

3)essai avec solution

Private Sub DGridrechArt_DblClick()


FReQ.AdodcRechArt.Recordset.Delete adAffectCurrent ==> error message

Insufficient key column information for updating or refreshing


erreur d'exécution....





Voilà.


merci pour l'aide


ps: comment fait-on pour attacher un fichier ou un printscreen dans la réponse d'un forum?
Messages postés
165
Date d'inscription
mardi 7 mars 2006
Statut
Membre
Dernière intervention
24 avril 2018

Questions:

N°1: à tu qu'une seule table pour gérer tous les renseignements de tes articles
(ex: code,gencod,désign,paht,Q en Stock, ....,Q en stock, Q en commande, Q en reliquats, etc.....)

Si oui => Conseil : STOP TOUT !!!! il ne faut pas !!! Pourquoi ? Parce que si un jour une donnée s'inscrit mal pour une raison X ou Y, c'est toute ta BDD qui sera illisible et qui ferra planter ton programme.
Il vaut mieux stocker les données annexes, comme les commandes par exemple dans une table spécifique. C'est un peu plus 'chiant' à programmer, mais beaucoup plus 'sécurisé'.
(on ne met pas tous ses oeufs dans le même panier !!!)

Si non :
Q N°2: pourquoi dans une une table vide, mais prévue à cet effet, par le biais d'une "moulinette" (du style "Do While ... Loop", ou "For ... Next"), ne récupèrerais tu pas les articles donc le "Stock" est inférieur au "Stock Mini" (donc à commander d'urgence).
Cette table tu la lies avec un Adodc, et le tour est joué !!!
Parce que d'après ce que je comprend dans ton code, ta requète "extrait" les données d'une table qui comporte bien plus de champs que ce que tu demandes.
Donc lorsque tu veux supprimer le programme te dit:
"pas possible, car il existe d'autres colonnes dans la table, et vous n'avez pas indiqué que je devais les supprimer aussi !! "

Donc avec cette nouvelle table que tu remplis quand tu en as besoin (et que tu as pris soin de rendre vièrge avant chaque remplissage), tu peux en supprimer les lignes une fois que tu double-clique dessus.
N'oublies pas de faire le lien avec la table principale, pour renseigner chaque article concerné, qu'une quantité en commande existe maintenant !!!

c'est pas evident d'expliquer cela de cette manière là !!!!
Voila mon MSN [mailto:erefdatacomputing@hotmail.fr erefdatacomputing@hotmail.fr]

si je sais, je t'aiderai !!!

réponse au P.S.:

Bonne prog !!!!

Comprend vite mais il faut lui expliquer longtemp et tout en détail !!!
Messages postés
5
Date d'inscription
jeudi 28 avril 2005
Statut
Membre
Dernière intervention
11 avril 2006

Ok merci j'essaie cette après-midi
ciao
Messages postés
24
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
12 juillet 2010

salut !!! ça fait présque longtemps que chui blocké, j'aimerai savoir s'il vout plait comment faire pour crée un boutton pour supprimer un enregistrement via un datagridview et la suppression se fait automatiquement sur la base de donnée en mode déconècté  ?? sous vb 2008 et sql server 2000 !!!
mèrci !!