Un sacré challenge pour moi, peut être une formalité pour vous : voici le casse-tête auquel je me heurte ces jours-ci*:
Sous Delphi 7, j'utilise un composant TibTable, un datasource, et un dbgrid.
J'affiche les enregistrements de ma table dans le DBGrid. Ils sont triés sur la clé primaire de la table (Inc avec générateur)
Je voudrais pouvoir, insérer un enregistrement dans la table grâce à la grille, mais je voudrais que l'enregistrement inséré, reste à l'emplacement où je les créé dans la grille.
Un exemple pour être clair :
Soit 5 enregistrements dans une table à 3 champs. Champ 1 = PK, champ 2 = position, champ 3 = ville.
Soit, les enregistrements suivants déjà existants dans la base :
PK Pos Ville
___ ___ ___
1 1 Lille
2 2 Amiens
3 3 Paris
4 4 Lyon
5 5 Marseille
Je souhaite inséré dans ma grille la ville "Montélimar", entre Lyon et Marseille. J'ai donc créé un événement sur doubleclique dans la grille, je double clique sur Marseille, et j'insère mon enregistrement "devant "Marseille" parce que je récupéré en champ 2 (position), la valeur de Marseille.
Le problème, c'est qu'avec ma méthode, après l'insertion, je dois renuméroter toute la table car Marseille ne doit plus être en 5 mais en 6. Et c'est la galère, car avant tri, Montelimar et Marseille ont maintenant la même valeur position = 5 ! Et Marseille repasse avant Montelimar dans ma grille !
Et puis maintenant que j'ai 50 000 villes, le tri prend un temps considérable.
Cette notion de position est essentielle, puis qu'il s'agit de créer des parcours, dans lesquels les villes sont traversées dans un ordre donné.
L'autre souci majeur rencontré, comment changer la position d'une ville facilement et efficacement ? Un vrai cas d'école... Pour l'utilisateur, l'idéal est le Drag & Drop. Si la grille pouvait permettre d'insérer, ou de déplacer, et aussi supprimer des villes de manière visuelle, ça serait génial. J'imagine l'utilisateur qui glisse Lyon en position 2 car il change l'ordre de son parcours, c'est le top. Mais pour moi, c'est un cauchemar.
Mais là, j'ai atteint mes limites !
Évidemment, je ne demande pas un code tout prêt pour faire ça, mais un échange de point de vue sur la meilleure approche pour offrir un outil de gestion d'enregistrement via une grille avec pour enjeu majeur le confort de l'utilisateur.
Merci pour vos idées.
Partager