IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Définition Index Table


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut Définition Index Table
    Bonjour,
    J'essaye de mettre un IndexName sur une table, pour ce faire, je définie donc un IndexDefs, sauf que, pour une raison que je ne comprends pas, une fois que j'ai entré la définition de mon Index, sur la petite fenêtre, une fois que je ferme cette petite fenêtre, quand je la réouvre, c'est comme si je n'avais rien fait !!!

    Et là, je n'y comprends rien du tout !!!

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Si BDE Paradox
    Faut utiliser TTable.AddIndex !

    Pour le reste, mieux vaut un SQL
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Ok, merci ShaiLeTroll j'avais vu ça dans la FAQ,...
    Mais ce que je ne comprends pas, c'est pourquoi, avec le Designer, lorsque j'essaie d'ajouter un Index, ce dernier reste, jusqu'à ce que je tente de mettre un IndexName, parce que là, je n'ai plus rien, il n'est pas dans la liste, et il n'existe plus non plus dans les IndexDefs !!!

    PS: je travaille avec Delphi 7

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu l'ajoutes, il ne dira rien contre, mais à un moment donné, il va vérifier si les index sont bons, donc ceux qui tu as ajouté vont être supprimé ... c'est une supposition, ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Ok, merci, c'est ce que je pensais, visiblement, je ne sais pas faire de bons indexs, je reviens quand j'aurai plus d'infos !
    Merci encore ShaiLeTroll

  6. #6
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Heu, j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TFicheRegleur.FormActivate(Sender: TObject);
    var myIndex : TIndexDef;
    begin
    myIndex := DataS.TableRegleur.IndexDefs.GetIndexForFields('Nom_Regleur',True);
      if myIndex = nil then
      begin
        DataS.TableRegleur.AddIndex('Classe','Nom_Regleur',[ixCaseInsensitive]);
        DataS.TableRegleur.IndexName := myIndex.Name;
        DataS.TableRegleur.Exclusive := False;
      end;
    end;
    Mais, déjà, je ne suis pas sûr que ce soit la bonne manière de procéder, ensuite j'ai un message d'erreur à l'éxécution comme quoi :
    la table ne peut pas être ouverte en mode exclusif
    Et là, je ne sais pas comment faire,...

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    pour ouvrir une table en mode exclusif , ce qui est obligatoire lorsque tu veux créer, restructurer une table il suffit de mettre sa propriété exclusive à true (avant de l'ouvrir cela va de soit) , soit au niveau du composant soit par TTable1.exclusive:=True;

    Quant à ton code .... es-tu sur que myIndex.Name est renseigné puisque déjà myIndex=nil
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Merci pour ta réponse SergioMaster.
    J'ai changé mon code, et effectivement, ça marche mieux,...
    Enfin, j'ai quand même un problème, c'est que, après l'avoir mis en mode exclusive, il semblerait qu'elle soit déja utilisé par un autre utilisateur, ce qui fait que moi je ne peut plus l'utiliser !
    Donc ma question, c'est comment faire pour "s'approprier" la table ?

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    procedure TFicheRegleur.FormActivate(Sender: TObject);
    var myIndex : TIndexDef;
    begin
    myIndex := DataS.TableRegleur.IndexDefs.GetIndexForFields('Nom_Regleur',True);
      if myIndex = nil then
      begin
        DataS.TableRegleur.Close;
        DataS.TableRegleur.Exclusive := True;
        DataS.TableRegleur.Open;
        DataS.TableRegleur.AddIndex('Classe','Nom_Regleur',[ixCaseInsensitive]);
        DataS.TableRegleur.IndexName := 'Classe';
        DataS.TableRegleur.Exclusive := False;
      end;
    end;
    Or, sur le open, il me dit que ma table est déja utilisé par quelqu'un d'autre, pourtant, je ne vois pas comment ce serait possible,....

    Merci

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    si, c'est possible surtout si tu exécutes l'appli à partir de Delphi . et tu as du le faire souvent lors de tes essais . Un redémarrage devrait régler le problème ? enfin j'espère
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure TFicheRegleur.FormActivate(Sender: TObject);
    Mauvaise idée que de mettre ce code dans le FormActivate, car a chaque fois que la form va avoir le focus , le code va être exécuter.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  11. #11
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Non, j'ai redémarré mon PC, mais ça n'a rien changé,...
    Est-ce-que le fait de mettre la table dans mon projet suffit à l'ouvrir, je suppose que oui (quand je dis mettre dans mon projet, cela signifie créer une TTable dont le TableName soit ma table,...)
    Mais ce qui m'étonne, c'est que je suis dans le même projet, avec le même utilisateur et tout et tout, alors pourquoi il me dit que la table est ouverte par un AUTRE utilisateur,...
    J'y comprends rien, ...

  12. #12
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Bon, j'ai pas compris pourquoi, mais de toute façon, en le mettant directement dans le designer à Exclusive := True, ça marche !

    Je viens de lire le message de Rayek, que j'avais sauté, désolé,...

    En fait, je le mets dans la formActivate seulement pour pouvoir faire, une fois seuleemnt un AddIndexDefs, c'est provisoire, parce que je ne réussis pas à en créer un avec le Designer
    Mais, là, je crois que ça marche, merci !!!

  13. #13
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Ok, confirmation effectué, ça marche, j'ai enfin réussi à faire ce AddIndex

    Merci Rayek, SergioMaster et ShaiLeTroll !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Temps de création index table InnoDB trop long
    Par ctobini dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 22/02/2008, 09h23
  2. [XMLTYPE] - Index - TABLE ACCESS FULL
    Par jacquesh dans le forum SQL
    Réponses: 10
    Dernier message: 16/01/2008, 22h51
  3. [INDEX] table de références
    Par tux2005 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 16/10/2007, 11h01
  4. doclect.db corrupt index table header
    Par westpc dans le forum Paradox
    Réponses: 2
    Dernier message: 14/06/2007, 17h55
  5. Définition des tables sys.v$...
    Par poc dans le forum Oracle
    Réponses: 2
    Dernier message: 22/02/2006, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo