|
| Suppression multiple à partir d'une table fichier |
| Iniciado por Max, 20,mar. 2019 15:31 - 7 respuestas |
| |
| | | |
|
| |
Miembro registrado 13 mensajes |
|
| Publicado el 20,marzo 2019 - 15:31 |
Bonjour à tous, j’ai un petit souci avec mon application j’aimerais solliciter votre aide svp. Voila, j’ai une table rempli a partir d’une requête et la requête en question comporte plusieurs fichiers de données dont deux sont relié. Je veux faire une suppression a partir de ma table, avant ca posait problem a cause du contrainte d’intégrité, j’ai finalement par faire la suppression. Mais le problem c’est que veux faire une suppression multiple ou du moins une suppression ou il y a repetition de la clé étrangère dans le fichier qui concerne la suppression, cela me retourne encore l’erreur d’intégrité. Aider moi svp a cerné ce problème. Merci Voici mon code :
i est un entier NbSelectionne est un entier = TableSelectOccurrence(TABLE_Liste_Commande) TitreSuivant("Confirmation") SI OuiNon("Voulez-vous vraiment faire la suppression")= Oui ALORS POUR i = NbSelectionne A 1 PAS -1 HLitRecherchePremier(Ligne_commande,Numero_commande,COL_Numero_commande) SI HTrouve()=Vrai ALORS POUR TOUT Ligne_commande AVEC Numero_commande=COL_Numero_commande HSupprime(Ligne_commande) TableAffiche(TABLE_Liste_Commande,taRéExécuteRequete)
FIN FIN FIN ToastAffiche("Commande(s) supprimée(s)",toastCourt,cvMilieu,chCentre) FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.321 mensajes |
|
| Publicado el 21,marzo 2019 - 08:01 |
Et le message d'erreur est ???
-- Bon dev, Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 299 mensajes |
|
| Publicado el 21,marzo 2019 - 08:38 |
Dans un cas comme celui là où vous passez des ordres successifs (Delete, Insert, Update) il est plus propre de travailler à l'intérieur d'une transaction. cela vous permet d'eviter en cas d'erreur qu'une partie des ordres soit prise en compte pas le reste
HTransactionxxx
Dans votre cas précis il faut définir une variable chaine La boucle de traitement va stocker dans cette variable les identifiants des lignes à supprimer sous la forme x est une chaine = "1, 2, 5, 6, etc"
En sortie de la dernière boucle un seul ordre Delete supprime l'ensemble des lignes
lc_sql est une chaîne = "Delete from MaTable where ID in (" + x + ")" SI PAS HExécuteRequêteSQL(Req,lc_sql) Erreur("Requête interrompue : "+HErreurInfo()) FIN |
| |
| |
| | | |
|
| | |
| |
| Publicado el 21,marzo 2019 - 09:34 |
Bonjour, je pense que tu ne supprimes pas les bonnes lignes de commande (donc rajout du [i] pour plus de sécurité) d'ou peut-être l'erreur d'intégrité d'autre part puisque la table est remplie à partir d'une requête, il faut aussi supprimer "manuellement" l'entête de la commande. Quant au rafraichissement de la table, je ne le ferais qu'à la fin du traitement de suppression (mais je ne connais pas bien ce que fait exactement ta requête)
i est un entier NbSelectionne est un entier = TableSelectOccurrence(TABLE_Liste_Commande) TitreSuivant("Confirmation") SI OuiNon("Voulez-vous vraiment faire la suppression")= Oui ALORS POUR i = NbSelectionne A 1 PAS -1 POUR TOUT Ligne_commande AVEC Numero_commande=COL_Numero_commande[i] HSupprime(Ligne_commande) FIN si HLitRecherchePremier(commande,Numero_commande,COL_Numero_commande[i]) alors hsupprime(commande) FIN TableAffiche(TABLE_Liste_Commande,taRéExecuteRequete) FIN
Yves
"Max" a écrit dans le message de groupe de discussion : 2019231470d7b18047b862e8967901b44393@news.pcsoft.fr...
Bonjour à tous, j’ai un petit souci avec mon application j’aimerais solliciter votre aide svp. Voila, j’ai une table rempli a partir d’une requête et la requête en question comporte plusieurs fichiers de données dont deux sont relié. Je veux faire une suppression a partir de ma table, avant ca posait problem a cause du contrainte d’intégrité, j’ai finalement par faire la suppression. Mais le problem c’est que veux faire une suppression multiple ou du moins une suppression ou il y a repetition de la clé étrangère dans le fichier qui concerne la suppression, cela me retourne encore l’erreur d’intégrité. Aider moi svp a cerné ce problème. Merci Voici mon code :
i est un entier NbSelectionne est un entier = TableSelectOccurrence(TABLE_Liste_Commande) TitreSuivant("Confirmation") SI OuiNon("Voulez-vous vraiment faire la suppression")= Oui ALORS POUR i = NbSelectionne A 1 PAS -1 HLitRecherchePremier(Ligne_commande,Numero_commande,COL_Numero_commande) SI HTrouve()=Vrai ALORS POUR TOUT Ligne_commande AVEC Numero_commande=COL_Numero_commande HSupprime(Ligne_commande) TableAffiche(TABLE_Liste_Commande,taRéExecuteRequete)
FIN FIN FIN
ToastAffiche("Commande(s) supprimée(s)",toastCourt,cvMilieu,chCentre) FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 299 mensajes |
|
| Publicado el 21,marzo 2019 - 10:02 |
Dans une instruction comme celle-ci :
POUR TOUT Ligne_commande AVEC Numero_commande=COL_Numero_commande[i] HSupprime(Ligne_commande) FIN
Vous supprimez les enregistrements de la sélection que vous êtes en train de parcourir. Ca ne vous choque pas un peu ? C'est un peu comme si vous étiez en train de scier la branche sur laquelle vous êtes monté. Et cela indépendamment du fait que cela représente un nombre très important d'accès aux données donc quelque chose de mal optimisé.Mensaje modificado, 21,marzo 2019 - 10:04 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 21,marzo 2019 - 10:22 |
Hello,
Pourquoi ne pas crééer une requete plutot que s'embeter avec une boucle ?
MaReq est une requete SQL = [ DELETE FROM Ligne_commande WHERE Ligne_commande.Numero_commande = {pNumero_commande} ]
MaReq.pNumero_commande = COL_Numero_commande[i] SI HExécuteRequêteSQL(MaReq,hModifieFichier) ALORS RENVOYER Vrai SINON RENVOYER Faux FIN Mensaje modificado, 21,marzo 2019 - 10:24 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 13 mensajes |
|
| Publicado el 21,marzo 2019 - 18:42 |
Bonsoir les amis, Merci pour tous vos suggestion, vos aides étaient précieuses, ca a marcher avec l’idée de requête. J’ai crée une requête pour chaque fichier et les executes dans une boutons. Merci.
Avant de termine avec ce sujet, j’ai une question. J’ai l’habitude de formatter mes champs telephone ainsi: 99 99 9999. Mais à present je veux mettre une préfixe (509), ca ne marche pas avec masque de saisie (509)99 99 9999. Si le premier chiffre de mon numéro est 7 ou 6, cela donne respectivement (507) xx xx xxxx, (506) xx xx xxxx. Une idée svp. Merci |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 13 mensajes |
|
| Publicado el 21,marzo 2019 - 18:43 |
Bonsoir les amis, Merci pour tous vos suggestions, vos aides étaient précieuses, ça a marcher avec l’idée de requête. J’ai crée une requête pour chaque fichier et les exécutes dans une bouton. Merci.
Avant de termine avec ce sujet, j’ai une question. J’ai l’habitude de formater mes champs téléphone ainsi: 99 99 9999. Mais à présent je veux mettre une préfixe (509), ça ne marche pas avec masque de saisie (509)99 99 9999. Si le premier chiffre de mon numéro est 7 ou 6, cela donne respectivement (507) xx xx xxxx, (506) xx xx xxxx. Une idée svp. Merci |
| |
| |
| | | |
|
| | | | |
| | |
|