|
Liaison de 2 lignes d'une table |
Started by djay06, Jul., 09 2024 4:31 PM - 11 replies |
| |
| | | |
|
| |
Registered member 11 messages |
|
Posted on July, 09 2024 - 4:31 PM |
Bonjour à tous,
J'aurais besoin d'aide svp, j'ai importé un fichier Excel, j'ai stocké ses données dans une table de données et je les affiches dans une fenêtre dans un tableau.
Je souhaite lier manuellement des lignes entre elles, pour ce faire je peux déjà avec la touche ctrl + clic de la souris sélectionner les lignes à lier.
Evidement je souhaite sauvegarder ces liaisons en bdd, j'ai prévu à cet effet un emplacement dans la bdd.
Pouvez-vous m'aider?
en vous remerciant Cordialement. |
| |
| |
| | | |
|
| | |
| |
Registered member 2,676 messages |
|
Posted on July, 09 2024 - 5:00 PM |
Bonjour,
Qu'est-ce que tu ne sais pas faire en fait ?
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Registered member 4,111 messages |
|
Posted on July, 09 2024 - 5:17 PM |
Bonjour, Qu'appelle tu "lier les lignes" ? Un truc du type précède/succède (un chaînage) ou les regrouper dans une même sous famille ?
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Registered member 11 messages |
|
Posted on July, 10 2024 - 8:30 AM |
Bonjour
je souhairetais lier les 2 lignes oranges et faire une sauvegarde de la liaison des ID
merciMessage modified, July, 10 2024 - 8:35 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 11 messages |
|
Posted on July, 10 2024 - 8:35 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 2,676 messages |
|
Posted on July, 10 2024 - 8:52 AM |
Pour faire ce que tu souhaites, il te faut un fichier stockant les ID sélectionnés et un ID de référence, comme lorsque l'on fait un lettrage en comptabilité.
Il te faut donc générer un ID unique pour relier ces fameux ID. Tu peux utiliser un UUID par exemple.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Registered member 11 messages |
|
Posted on July, 10 2024 - 11:16 AM |
Je suis arrivé à ceci mais cela ne fonctionne pas, je ne sais pas par quoi remplacer TableRecherche Pouvez-vous m'aider svp?
bddImport est un xlsDocument Sfichier est une chaîne // Ouvre le sélecteur de fichiers Sfichier = fSélecteur("", "", "Sélectionnez un fichier...", "Tous les fichiers (*.*)" + TAB + "*.*", "*.*")
//ouverture du fichier Excel bddImport = xlsOuvre(Sfichier)
//On vide la table et réinitialise les variables HSupprimeTout(Articles) HRAZ(Articles)
//Choix de la feuille à importer bddImport..Feuille = 1
// Utilisation d'une table de hachage pour stocker les combinaisons uniques de Marque et RefMarque TableRef est un tableau associatif (dynamique de 8 octets)
// on parcours toute la feuille Excel à partir de la 2e ligne POUR i = 2 À bddImport..NombreLigne SI HLitRecherche(Articles, IdArticle, xlsDonnée(bddImport, i, 2)) = Faux ALORS Articles.Entite = xlsDonnée(bddImport, i, 1) Articles.IdArticle = xlsDonnée(bddImport, i, 2) Articles.OwnNumber_IDunique_Alias = xlsDonnée(bddImport, i, 3) Articles.Freq = xlsDonnée(bddImport, i, 4) Articles.CodeArticle = xlsDonnée(bddImport, i, 5) Articles.NomArticle = xlsDonnée(bddImport, i, 6) Articles.Description = xlsDonnée(bddImport, i, 7) Articles.Marque = xlsDonnée(bddImport, i, Articles.Marque_Corrigée = xlsDonnée(bddImport, i, 9) Articles.Compare_Marque = xlsDonnée(bddImport, i, 10) Articles.LibMarque = xlsDonnée(bddImport, i, 11) Articles.RefMarque = xlsDonnée(bddImport, i, 12) Articles.RefMarque_Corrigée = xlsDonnée(bddImport, i, 13) Articles.Compare_Ref = xlsDonnée(bddImport, i, 14) Articles.Cat1 = xlsDonnée(bddImport, i, 15) Articles.Cat2 = xlsDonnée(bddImport, i, 16) Articles.Cat3 = xlsDonnée(bddImport, i, 17) Articles.Hauteur = xlsDonnée(bddImport, i, 18) Articles.Largeur = xlsDonnée(bddImport, i, 19) Articles.Profondeur = xlsDonnée(bddImport, i, 20) Articles.Poids = xlsDonnée(bddImport, i, 21) Articles.Image_filename = xlsDonnée(bddImport, i, 22) Articles.CredateTime = xlsDonnée(bddImport, i, 23) Articles.UpdDateTime = xlsDonnée(bddImport, i, 24) Articles.DelDateTime = xlsDonnée(bddImport, i, 25) Articles.PU_HT = xlsDonnée(bddImport, i, 26) // Création d'une clé unique pour Marque et RefMarque CléUnique est une chaîne = Articles.Marque + "-" + Articles.RefMarque // Vérification de la combinaison Marque et RefMarque SI TableRecherche(TableRef, CléUnique) ALORS Articles.IDPivot = TableRef[CléUnique] SINON // Générer un nouvel IDPivot IDPivotNouveau est un entier = HLitDernier(Articles) + 1 TableRef[CléUnique] = IDPivotNouveau Articles.IDPivot = IDPivotNouveau FIN HAjoute(Articles) FIN FIN
xlsFerme(bddImport) Remplir() |
| |
| |
| | | |
|
| | |
| |
Registered member 698 messages |
|
Posted on July, 10 2024 - 12:31 PM |
Bonjour, Vous pourriez faire quelque chose qui ressemble à ceci : il faut une colonne Liaison (Entier , clé avec doublon) qui recevra le numéro de lien
MaRequete est une Source dede Données HExécuteRequêteSQL(MaRequete , "SELECT MAX(FichierHFSQL.Liaison) AS maximum_Liaison FROM FichierHFSQL")
POUR TOUT LIGNELIGNE SELECTIONNEESELECTIONNEE DE MaTable MaTable.Liaison = MaRequete .maximum_Liaison + 1 FIN
Il faut ensuite enregistrer dans le fichier HFSQL. Attention si vous avez oublié de sélectionner une ligne, il ne faut plus utiliser ce code
La solution de Philippe SB est une autre solution efficace. Cdlt
edit : POUR TOUT LIGNE SÉLECTIONNÉE DE MaTableMessage modified, July, 10 2024 - 12:32 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 11 messages |
|
Posted on July, 10 2024 - 12:56 PM |
merci je vais essayer cette solution
-- Merci de votre aide, je débute avec windev et junior en code |
| |
| |
| | | |
|
| | |
| |
Registered member 4,111 messages |
|
Posted on July, 10 2024 - 7:13 PM |
Ta boucle d'importation serait plus lisible avec un HImporteXLS. L'affectation du pivot pourrait se faire grâce à un trigger après sur HAjoute. Dans ton HLitDernier, il serait bien de préciser la rubrique de parcours. Pars ailleurs, HLitDernier renvoie 0 ou 1 donc IDPivotNouveau vaut 1 ou 2. Cela correspond il à ce que tu désires. -- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué utilise l'option RTFMMessage modified, July, 10 2024 - 7:42 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 11 messages |
|
Posted on July, 11 2024 - 10:18 AM |
Bonjour merci pour cette réponse je n'ai jamais utilisé de trigger mais cela me semble être une bonne solution, effectivement j'ai regardé pour le HImporteXLS, ce que j'ai fait c'est que je ne sais pas quel fichier l'utilisateur veut charger, d'où mon choix qui n'est pas le meilleur je pense. donc je vais me renseigner pour le trigger, à savoir comment l'utiliser etc... |
| |
| |
| | | |
|
| | |
| |
Registered member 4,111 messages |
|
Posted on July, 11 2024 - 9:09 PM |
Jay a écrit :
...ce que j'ai fait c'est que je ne sais pas quel fichier l'utilisateur ...
Où est le problème ? Pour déclarer ton xlsDocument tu utilises une chaine issue de fSélecteur. Le paramètre concernant le chemin du classeur dans HImporteXLS est lui aussi une chaine ...
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | | | |
| | |
|