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 :

D10 ADOTABLE FINDKEY et LOCATE


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut D10 ADOTABLE FINDKEY et LOCATE
    salut a tous

    je travaille avec delphi 10 et sql server

    MA REQUETTE FONCTIONNAIS PARFAITEMEMENT AVANT QUE JE TRANSFORMAIS composant BDE TTABLE EN composant ADOTABE

    comment rendre la ligne qui copmorte FINDKEY avec le fonction LOCATE "remplacer FINDKEY par LOCATE"
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    
    Case ComboWilaya.itemindex of
          0:Wilaya:='09';
          1:Wilaya:='16';
          2:Wilaya:='35';
          3:Wilaya:='42';
          End;
    
     if Ajouter then      ////nouveau
        begin
        mdd.ADOTDernierOV.Close;
        mdd.ADOTDernierOV.Open;
       If mdd.ADOTDernierOV.FindKey([wilaya]) then   ///// cette ligne a transformé avec locate  ///////////////////////////////////////
      
          begin
           DernierOV:=mdd.ADOTDernierOV.FieldByName('DernierOVAide').AsString;
           If DernierOV='' then
            begin
            OVAjouter:= '0001'+'/'+ Wilaya +'/'+annee ;
            edit11.Text:=OVAjouter;
            mdd.ADOTDernierOV.Insert;
             mdd.ADOTDernierOV.FieldByName('DernierOVAide').AsString:=edit11.Text;
              mdd.ADOTDernierOV.FieldByName('code').AsString:=wilaya;
             // mdd.TDernierOV.Post;
    
    
            end
             Else
            Begin
             sequentiel:=Copy(DernierOV,1,4);
             sequentiel := InttoStr(StrToInt(sequentiel)+1);
            While (length(sequentiel)<4) Do
              sequentiel:='0'+sequentiel;
              OVAjouter:= sequentiel+'/'+Wilaya+'/'+Annee;
              edit11.Text:=OVAjouter;
    
    
             End;
    
           End
        Else
         Begin
            OVAjouter:= '0001'+'/'+ Wilaya +'/'+annee;
            edit11.Text:=OVAjouter;
           mdd.ADOTDernierOV.Insert;
             mdd.ADOTDernierOV.FieldByName('DernierOVAide').AsString:=edit11.Text;
              mdd.ADOTDernierOV.FieldByName('code').AsString:=wilaya;
            //  mdd.TDernierOV.Post;
    
    
         End;
    merci

  2. #2
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Les composants ADO n'ont pas les mêmes propriétés et méthodes que les composants du BDE.

    Pourquoi ne pas plutôt être passé à FireDAC qui lui aurait fonctionné globalement sans difficulté ?
    Quelle version de Delphi est utilisée ?

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par pprem Voir le message
    Quelle version de Delphi est utilisée ?
    Delphi 10, mais c'est vrai que c'est loin d'être clair puisque cela couvre Berlin à Rio en passant par Tokyo on a presque fait le tour du monde De plus la "saveur" CE, Pro, Entreprise ou Architecte ferait qu'il y aura des contraintes de fonctionnalités à ma souvenance SQL server n'est accessible avec Firedac qu'à partir de la version entreprise. Ce qui explique peut-être le choix ADO

    Citation Envoyé par pprem Voir le message
    Pourquoi ne pas plutôt être passé à FireDAC qui lui aurait fonctionné globalement sans difficulté ?
    Ou, selon budget et version, à ZEOSDBO. D'une manière je suis contre ADO mais ça c'est mon choix

    Pour en revenir à votre code ma question serait plutôt pourquoi un Locate une requête paramétrée SELECT * FROM TABLE WHERE WILAYA=:W serait beaucoup plus rapide et efficace et moins consommatrice de données, vous rendez vous compte qu'à chaque fois vous récupérez toute la table avant de pouvoir faire votre Locate Ce qui était valable pour BDE et Paradox ne l'est certainement pas pour un SGBD ! AMHA c'est tout le traitement qui est à revoir.

    Pour en revenir à ADO et les fonctions Findkey (non implémentée) et Locate

    Findkey est remplacée par Seek mais plusieurs conditions doivent être réalisées pour que cela fonctionne (CursorLocation = clUseServer, TableDirect = True et un nom d'index)
    Locate a une syntaxe à respecter Locate('WILAYA',wilaya,[loPartialKey]);Mais,encore une fois, une requête sera beaucoup plus rapide

  4. #4
    Membre actif
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Delphi 10, mais c'est vrai que c'est loin d'être clair puisque cela couvre Berlin à Rio en passant par Tokyo on a presque fait le tour du monde De plus la "saveur" CE, Pro, Entreprise ou Architecte ferait qu'il y aura des contraintes de fonctionnalités à ma souvenance SQL server n'est accessible avec Firedac qu'à partir de la version entreprise. Ce qui explique peut-être le choix ADO


    Ou, selon budget et version, à ZEOSDBO. D'une manière je suis contre ADO mais ça c'est mon choix

    Pour en revenir à votre code ma question serait plutôt pourquoi un Locate une requête paramétrée SELECT * FROM TABLE WHERE WILAYA=:W serait beaucoup plus rapide et efficace et moins consommatrice de données, vous rendez vous compte qu'à chaque fois vous récupérez toute la table avant de pouvoir faire votre Locate Ce qui était valable pour BDE et Paradox ne l'est certainement pas pour un SGBD ! AMHA c'est tout le traitement qui est à revoir.

    Pour en revenir à ADO et les fonctions Findkey (non implémentée) et Locate

    Findkey est remplacée par Seek mais plusieurs conditions doivent être réalisées pour que cela fonctionne (CursorLocation = clUseServer, TableDirect = True et un nom d'index)
    Locate a une syntaxe à respecter Locate('WILAYA',wilaya,[loPartialKey]);Mais,encore une fois, une requête sera beaucoup plus rapide


    merci pour votre aide

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

Discussions similaires

  1. [Merci] [ADO] Options de Locate dans une BD Access
    Par Jilam dans le forum Bases de données
    Réponses: 4
    Dernier message: 11/11/2004, 11h52
  2. Pb Filtre sur ADOTable
    Par liazidf dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/11/2004, 11h34
  3. [BCB5][IBX5.4]TIBDataSet et fonction Locate() ??
    Par Sitting Bull dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 02/07/2004, 18h46
  4. LOCATE sous Oracle 8
    Par SubZero2 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/05/2004, 13h47
  5. Problème Locate avec espaces
    Par Clezio dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/03/2004, 19h06

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