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

 Delphi Discussion :

.ApplyRange: Comment ça marche ?


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de stfanny31
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 163
    Points
    163
    Par défaut .ApplyRange: Comment ça marche ?
    salut tt le monde
    je veux choisir un groupe d'enregistremnt pour un traitement spéciale
    voici le code que j'ai utilsé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    with table1 do
    begin
      EditRangeStart;
      FieldByName('num').Asinteger:= 3; 
      EditRangeEnd;
      FieldByName('num').Asinteger:= 4; 
      ApplyRange; 
    end;
    ca ne marche pas
    esque vous pouvé m'expliqué comment ca marche :ApplyRange;
    merci bcp

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Ton code à l'air bon, normalement ce équivaut à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    table1.filter := 'num > 3 and num < 4';
    table1.filtered := true;
    table1.first;
    mais ce n'est valable que pour l'objet table1 ...
    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
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Normalement, les Ranges fonctionnent avec un Index.

    D'abord, tu dois activer un index qui porte sur les champs que tu veux utiliser dans le Range.
    Ensuite le Range en lui même sert à restreindre l'index.

    Donc tu devrais utiliser le Range avec un code du genre :

    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
    16
    17
     
        tab : TTable;
    begin
      // Création d'un index idxNum sur le champ Num.
      tab.IndexDefs.Add('idxNum', 'num', []);
     
      // Activation de l'index idxNum.
      tab.IndexName := 'idxNum';
     
      // Ouverture de la table. Le Range ne peut être posé que sur une table ouverte.
      tab.Open;
     
      // On restreint le Range, avec les bornes <3>, <4>
      tab.SetRange([3], [4]);
      ...
      // On retourne au mode normal avec CancelRange.
      tab.CancelRange;
    Les bornes du range sont inclusivent.

    Cependant, les Ranges n'ont d'intérêt que pour les tables Paradox. Avec un autre SGBD, il faut charger la table complète en mémoire avant de pouvoir appliquer le range sur l'index. Ca ne supporte pas une volumétrie un peu importante.
    Donc autant utiliser un Filtre qui pourra servir dans une clause Where pour une requête SQL.

Discussions similaires

  1. ToAsciiEx, comment cela marche ?
    Par mikyfpc dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/02/2004, 21h39
  2. [MFC] list box : comment ça marche
    Par runn2 dans le forum MFC
    Réponses: 4
    Dernier message: 28/01/2004, 12h36
  3. [SYNEDIT] -> Comment ça marche ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 19h11
  4. [TP][Turbo Vision] comment ça marche ??
    Par Costello dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 05/08/2003, 00h24
  5. [update][req. imbriquee] Comment ca marche ??
    Par terziann dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/07/2003, 12h51

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