Bonjour,
Il m'arrive un soucis assez curieux lié à une réorganisation de la base de donnée par le DBA, notamment les tablespace.
L'environnement sur lequel je travaille présente plusieurs particularités et en attendant une possible ré-écriture, il faut faire avec.
- le schéma INFO est le propriétaire de toutes les tables et indexes dans Oracle, il a quasi tous les droits
- les requêtes dans Delphi sont faites de ce genre : "select * from [schema].table" où [schema] est remplacé avant l'exécution par INFO
- la plupart des écrans travaillent sur des tables paradox temporaires issues des tables Oracle
Aujourd'hui, les utilisateurs n'ont pas de soucis, le programme fonctionne normalement pour eux. Par contre à l'informatique, on se connecte en INFO et dans certains cas, on a des plantages : "la table n'est pas indexée".
Une procédure commune créée les tables temporaires Paradox à partir des tables Oracle : on ajoute les champs et les indexes avant de faire un tableParadox.Create.
En passant en debug, je vois à quel endroit il y a le problème :
- en utilisateur normal, tableOracle.indexdefs.count est > 0
- en utilisateur INFO, tableOracle.indexdefs.count = 0 !!! donc la table Paradox n'a pas d'index donc elle plante à sa création.
Je n'arrive pas à comprendre pourquoi le "superutilisateur" et propriétaire n'arrive pas toujours à voir ses propres indexes, quelle subtilité il peut y avoir derrière ttable.indexdefs ?
Avant que les tablespace soient réorganisés, on n'avait pas le problème. Mais comme cela ne touche pas les utilisateurs, on ne s'est pas rendu compte tout de suite.
Dans un autre programme, c'est carrément vicieux : en utilisateur normal, un locate se place sur le enregistrement, et en INFO, non ! mais sans plantage, le locate ramenant true...
Si vous avez des idées, je suis preneur car là, je rame et dur de trouver quelquechose sur le net
![]()
Partager