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 :

MySQL (composants MyDAC) et FindKey, FindNearest etc.


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 73
    Points : 61
    Points
    61
    Par défaut MySQL (composants MyDAC) et FindKey, FindNearest etc.
    Bête question a priori : mais que faut-il de spécial pour que des instructions aussi élémentaires que FindKey fonctionnent avec MySQL ?

    J'utilise les composants MyDAC, de Core Lab, version 4.40... Y a-t-il d'autres ici qui ont des problèmes ? Les FindKey ne retournent pas vrai/faux selon que l'article existe ou pas, ce qui est quand même un peu embêtant, non ?

    Bref, si quelqu'un pouvait me jurer que ça marche, je me sentirais encouragé à continuer à chercher :-)))

    Paul

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Points : 115
    Points
    115
    Par défaut ProgD
    ce que je sais, est que les fonction FindKey et FindNearest propre au objet BDE Ttable et TQuery pour les autres Objet com ADO, InterBase IB, ainsi que MyDac, je vous conseil d'utilisé la fonction LOCATE.

    Bonne continuation.

  3. #3
    Membre du Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 73
    Points : 61
    Points
    61
    Par défaut
    Merci, je vais chercher par là.
    Le locate est "techniquement" équivalent ? Il fait une recherche via index ? C'est sans doute un bête réflexe de terminologie, mais quand je pense plutôt à une recherche par balayage, sans utilisation de l'index, tandis que le FindKey, par définition, on sait qu'il fait une recherche sur clé... Mais je suppose que je me gourre.
    Merci du conseil !
    Paul

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 98
    Points : 72
    Points
    72
    Par défaut
    j'utilise pas ces composants, mais
    de souvenir à ce qu'on m'en avait dit c'est plus optimisé par le findkey d'ou son existance, qui fait une recherche par index, alors que pour le locate il ne crée pas automatiquement d'index. maintenant je me souviens avoir eu des probleme avec des findkey et j'avais du passer par locate (pouquoi exactement je me souviens plus j'ai la memoire passoire)

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_article FROM article WHERE code_article = "Pull Bleu"
    Une requête, c'est pas le mieux qu'une ouverture de Table (TMyTable) ce qui peut être lent car cela fait un "SELECT * FROM article" (sans limit, voir Fetch) et ensuite un Locate ...

    N'extraire que la donnée utile réduit le flux réseau, l'occupation processeur du serveur, la mémoire tampon en local ...

    Je travaille depuis 15 mois avec MyDAC CoreLab, et c'est 99% de SQL ... on n'a des TMyTable que pour les tables courtes chargées au début de l'application comme les Paramètres Utilisateurs et Systèmes ...
    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

  6. #6
    Membre du Club
    Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 73
    Points : 61
    Points
    61
    Par défaut
    Ah, chouette, quelqu'un qui connaît le produit...

    Je ne m'y retrouve pas dans la jungle SQL et mon impression est quand même que les performances varient fortement d'un moteur à l'autre, et donc que les stratégies à mettre en oeuvre peuvent différer.

    Je travaille beaucoup sur AS400, et là je peux te dire que si tu veux lire une centaine d'articles de même clé dans un fichier volumineux (disons 1 million d'articles), t'as vachement intérêt à oublier SQL...
    Du coup, j'ai sans doute de mauvais réflexes face à d'autres moteurs...
    Ainsi, si je te comprends bien, il est plus performant avec MySQL de faire un "select ... where" plutôt qu'une recherche je dirais "traditionnelle" ?

    Ma difficulté est que notre équipe essaie d'écrire du code qui, sur simple changement d'une directive de compilation, pourrait travailler sur un AS400 ou sur une base SQL (MySQL pour le moment)...

    Pour ça, on a créé des classes qui héritent (selon la directive) soit d'un TDataBase soit d'un TMyConnection, et d'un TTable / TMyTable... D'où nécessité d'avoir des instructions communes. Bref, il semble qu'il faudrait donc surcharger le FindKey du TMyTable pour le changer par un LocateEx ou mieux, si je te comprends bien, par un "select...where" ?

    Merci pour ton temps,

    Paul

Discussions similaires

  1. Connexion MYSQL avec composant MYDAC
    Par Matt27 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/03/2012, 08h15
  2. Réponses: 6
    Dernier message: 20/08/2008, 08h41
  3. Composants Semi-Transparent -TGroupBox TButton etc
    Par PiPo123 dans le forum Delphi
    Réponses: 1
    Dernier message: 21/05/2007, 17h18
  4. [MySQL] Sauvegarder du texte (db mysql) CR, single-quote, double-quote, etc
    Par vandeyy dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2007, 11h22
  5. c++ et Mysql => Composant ?
    Par kilian dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/12/2005, 12h21

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