Précédent   Forum des professionnels en informatique > Environnements de développement > WinDev
WinDev Forum d'entraide sur la programmation en WinDev
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2012, 12h14   #1
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Par défaut HSupprime sur un enregistrement lié

Bonjour à tous,

Je viens de faire un tableau reliée à une de mes tables et lorsque une de mes lignes est sélectionnée on puissent la supprimer par le biais d'un bouton.

Voila le code associer au bouton :

Code :
1
2
3
4
5
6
7
8
9
10
11
SI TableSelect(TABLE_Liste) = -1 ALORS RETOUR

SELON OuiNon("Supprimer la liquidation?")
	CAS Oui
		
		HSupprime(Entête,0,hIgnoreIntégrité)
		TableAffiche(TABLE_Liste)
		
	CAS Non
		
FIN
J'aimerais que lorsque je supprime une entête que les lignes associées à cette entête soit supprimées aussi, mais je n'arrive pas à faire cela à chaque fois j'ai des erreur d'intégrité (que la j'ai désactivé dans mon code).

J'ai une table (entête) et une table (ligne)

et une liaison 0,99 ---> 0,1

Les lignes sont rattachées a une entête grâce au numéro de IDEntete.

Merci d'avance.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 12h20   #2
Membre Expert
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 940
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 940
Points : 1 337
Points : 1 337
Qqchose dans ce goût là devrait faire l'affaire :
Code :
1
2
3
4
5
6
hlitrecherchepremier(ligne,identete,entete.identete)
tantque htrouve(ligne)
  hsupprime(ligne)
  hsuivant(ligne)
fin
supprime(entete)
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 12h21   #3
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Je test cela de suite et je te tiens au courant merci.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 13h17   #4
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Citation:
Dump de l'erreur du module <WD110HF.DLL> <11.00Dq>.

- Niveau : erreur non fatale (EL_ONRETURN)

- Code erreur : 70015

- Code erreur WD55 : 15

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
Erreur d'intégrité.
L'application de la fonction aurait entraîné le non-respect de la contrainte d'intégrité référentielle 'restrict' entre les rubriques <Entête.IDEntête> (clé primaire) et <Ligne.IDEntête> (clé étrangère).

- Infos de debug :
iehf=14008

- Infos attachées :
EIT_LOGICALTABLENAME : <Entête>
EIT_ITEMNAME : <IDEntête>
EIT_LINKNAME : <Contrainte_Entête_Ligne>

- Identifiant dans le .err : 70910

Voici l'erreur que j'ai avec ce code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SI TableSelect(TABLE_Liste) = -1 ALORS RETOUR

SELON OuiNon("Supprimer la liquidation?")
	CAS Oui
		
		HLitRecherchePremier(Ligne,IDEntête,Entête.IDEntête)
		TANTQUE HTrouve(Ligne)
			HSupprime(Ligne)
			HSuivant(Ligne)
		FIN
		HSupprime(Entête)
		TableAffiche(TABLE_Liste)
		
	CAS Non
		
FIN
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 13h33   #5
Membre Expert
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 940
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 940
Points : 1 337
Points : 1 337
j'ai peut-etre oublié ça avant :
Code :
hlitrecherche(entete,numLiquidation,tableliquidation.numLiquidation)
A adapter suivant ton cas. Tu dois bien te placer sur le bon "entete" avant de suprimer les "ligne".
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 13h35   #6
Membre du Club
 
Homme Pascal Castry
Développeur informatique
Inscription : mai 2009
Messages : 102
Détails du profil
Informations personnelles :
Nom : Homme Pascal Castry
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2009
Messages : 102
Points : 68
Points : 68
Envoyer un message via MSN à Pascal26120 Envoyer un message via Skype™ à Pascal26120
Bonjour.
Le plus simple reste de mettre une liaison dans ton analyse, avec la bonne contrainte d'intégrité "Règle de suppression d'une entête", tel que :
"Supprimer l'entête et toutes ses lignes".

Ensuit tu as juste à utiliser le code suivant :
Code :
1
2
3
4
5
SI HLitRecherchePremier(entete,Ident,MaTable.Colonne) ALORS
	HSupprime(entete,hNumEnrEnCours)
FIN
TableAffiche(MaTable)
La règle d'intégrité fait le reste.
Bien sur, il ne faut pas désactiver l'intégrité.
__________________
Cordialement.
Pascal26120 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/02/2012, 13h39   #7
Membre Expert
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 940
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 940
Points : 1 337
Points : 1 337
Exact. Je n'y ai pas pensé. Je mets rarement ce genre de choses. Je préfère gérer ça "manuellement".
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 14h20   #8
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Merci Pascal26120, sa marche parfaitement !

Merci à toi aussi Frenchsting

(Pour éviter de recréer un sujet)

J'en profite j'ai une autre petite question dans ma fenêtre j'ai deux tableau 1 liée a ma table entête et le 2 liée a ma table ligne.

J'aimerais que dans le tableau ligne seul les lignes correspondant a la l’entête sélectionné dans l'autre tableau soit affiché est-ce possible? Je pensait a une requête peut-être? avez vous des pistes ou des idées ?

Merci.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 14h28   #9
Membre Expert
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 940
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 940
Points : 1 337
Points : 1 337
oui c'est possible :
dans le code de sélection d'une ligne de ta table entete :
Code :
1
2
3
4
5
6
7
8
Tablesupprimetout(tableLigne)
hlitpremier(ligne,numEntete)
tantque pas hendehors(ligne)
  si ligne.identete = tableentete.identete alors
    tableajoute(tableligne,ligne.xxx+tab+...+ligne.yyy)
  fin
  hlitsuivant(ligne,numentete)
fin
A améliorer : on peut faire une requete aussi
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 14h32   #10
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Enfaite vu que le tableau ligne est liée a ma table ligne il m'affiche toute les lignes direct alors que j'aimerais que rien ne soit visible et que apparaissent seulement les lignes en liée a l’entête sélectionné.

Je pensait faire une requête puis recréer une table liée a cette requête mais je dois avouer que j'ai un peu du mal a construire ma requête avec Windev ...
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 14h41   #11
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Citation:
Envoyé par frenchsting Voir le message
oui c'est possible :
dans le code de sélection d'une ligne de ta table entete :
Code :
1
2
3
4
5
6
7
8
Tablesupprimetout(tableLigne)
hlitpremier(ligne,numEntete)
tantque pas hendehors(ligne)
  si ligne.identete = tableentete.identete alors
    tableajoute(tableligne,ligne.xxx+tab+...+ligne.yyy)
  fin
  hlitsuivant(ligne,numentete)
fin
A améliorer : on peut faire une requete aussi

Je ne comprend pas cette partie du code :

" tableajoute(tableligne,ligne.xxx+tab+...+ligne.yyy) "


Cela ne vas t'il pas supprimer mes lignes dans le fichier ligne.fic ?
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 14h47   #12
Membre Expert
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 940
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 940
Points : 1 337
Points : 1 337
Citation:
Envoyé par juliendu01 Voir le message
Je ne comprend pas cette partie du code :

" tableajoute(tableligne,ligne.xxx+tab+...+ligne.yyy) "


Cela ne vas t'il pas supprimer mes lignes dans le fichier ligne.fic ?
1) je ne connais pas les champs que affiches dans ta table ? ligne.date ? Ligne.nom ?

2) C'est juste un parcours. Il n'y a ni hajoute, ni hmodifie, ni hsupprime...
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 14h52   #13
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
ahhhh autant pour moi erreur interprétation.

ok je test et je te tiens au courant ! Merci
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 15h03   #14
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Code :
1
2
3
4
5
6
7
8
9
10
11
TableSupprimeTout(TABLE_ListeLigne)
HLitPremier(Ligne,IDEntête)

TANTQUE PAS HEnDehors(Ligne)
	
	SI Ligne.IDEntête = Entête.IDEntête ALORS
		TableAjoute(TABLE_ListeLigne,Ligne.UF +TAB+ Ligne.Produit +TAB+ Ligne.Designation +TAB+ Ligne.NumBesoin +TAB+ Ligne.NumCompte +TAB+ Ligne.MarcheLot +TAB+ Ligne.Qte +TAB+ Ligne.MonTTC +TAB+ Ligne.TauxTVA)

	HLitSuivant(Ligne,IDEntête)
	FIN
FIN
Je ne sais pas pourquoi mais maintenant quand je lance la page rien ne lance enfin sa ce lance mais la page ne s'affiche pas et l'application ce mais a planté ...
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 15h10   #15
Membre actif
 
Inscription : avril 2009
Messages : 305
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 305
Points : 172
Points : 172
sort le HLitSuivant(Ligne,IDEntête) du SI.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
TableSupprimeTout(TABLE_ListeLigne)
HLitPremier(Ligne,IDEntête)

TANTQUE PAS HEnDehors(Ligne)

SI Ligne.IDEntête = Entête.IDEntête ALORS
TableAjoute(TABLE_ListeLigne,Ligne.UF +TAB+ Ligne.Produit +TAB+ Ligne.Designation +TAB+ Ligne.NumBesoin +TAB+ Ligne.NumCompte +TAB+ Ligne.MarcheLot +TAB+ Ligne.Qte +TAB+ Ligne.MonTTC +TAB+ Ligne.TauxTVA)


FIN
HLitSuivant(Ligne,IDEntête)
FIN
rednight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 15h14   #16
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Merci rednight cela à réglé le problème de l'affichage de la fenêtre.

Cependant le code ne fonctionne pas rien ne ce passe à l'écran.

Déjà toute les lignes du fichier ligne.fic s'affiche et lorsque je sélectionne une autre entête sa affiche toujours toutes les lignes du fichier ligne.fic ...
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 15h25   #17
Membre actif
 
Inscription : avril 2009
Messages : 305
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 305
Points : 172
Points : 172
Tu n'aurais pas laissé ta table "ligne" liée au fichier ?
Si oui, soit tu coche remplie par programmation dans la description.
Ou alors tu fait filtre sur ta table ligne avec la clef "entête".

Ta plusieurs possibilités.
rednight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 15h31   #18
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Effectivement j'ai oublié d'enlever la liaison du tableau et cela fonctionne maintenant.

Cependant lorsque j’efface la dernière entête du tableau ces lignes reste affiché?

Mais seulement lors de la suppression de la dernière entête du tableau.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 16h13   #19
Membre Expert
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 940
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 940
Points : 1 337
Points : 1 337
fais un :
Code :
executetraitement(tableentete,trtselection)
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 11h45   #20
Futur Membre du Club
 
Inscription : janvier 2012
Messages : 171
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 171
Points : 16
Points : 16
Bonjour et désolé du retard,

Je dois mettre cette ligne de code ou?

Merci.
juliendu01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h25.


 
 
 
 
Partenaires

Hébergement Web