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 :

Problème avec "Locate".. Avez vous une suggestion à me faire?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Par défaut Problème avec "Locate".. Avez vous une suggestion à me faire?
    Bonjour,
    Bien que mon problème soit apparamment du domaine des bases de données, je pense que je suis dans le bon forum...

    Donc, j'ai une Dll qui affiche une boite de dialogue qui récupére un texte de l'utilisateur et qui vérifie que celui-ci existe dans une des tables de la base de donnée. (Access 2003)
    La fonction utilisée est la suivante:

    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
    procedure TSiwah.IdEditExit(Sender: TObject);
    begin
      EuIdent:='';
        if (IdEdit.Text<>'') then
          try
           // DmSwitchOn(PwdDm);                                                   
           //MoeDm.TblPersoGene.DisableControls;
            EuIdent:=IdEdit.Text;                                                 
            if  not (MoeDm.TblPersoGene.Locate('CompNb',
                                      IdEdit.Text,
                                      [loPartialKey])) then
              Messagedlg('Unknown ID. Please, check it again',
                          mtwarning,
                         [mbok],
                         0)
    else NameEdit.Text:=MoeDm.TblPersoGene.Lookup('Compnb', IdEdit.Text, 'Name');
            finally
              //PwdDm.TblMasterKey.EnableControls;
            end;
    end;
    Sous cette forme, lorsque la fiche fait le locate sur la Tadotable (tblpersogene) contenue dans le Tdatamodule (Moedm), ça plante!
    Si j'utilise la même configuration mais en insérant directement un TAdoconnection et un Tadotable dans la fiche ça marche correctement!
    Je n'arrive pas à comprendre pourquoi!
    Pour les pointilleux:
      1. L'ensemble des fonctions qui initialisent et connectent mon module de donnée et ses composants ont été testés et fonctionnent correctement.
      2. Dans la même fiche, un composant dbDgrid affichant la même table, focntionne parfaitement.
      3. A toutes fins utiles, l'unité FastSharemem a été rajouté en tête du Uses, sans amélioration.(retirée depuis pour cause de compatibilité avec C++)
      4. Les essais ont été menés alternativement avec des connexions "Jet 4.00" et "ODBC" sans amélioration de résultat.
    @NoisetteProd :
      1. Sur le forum, j'ai trouvé cette file de discussion mais elle n'apporte rien de nouveau...
      2. J'ai rien trouvé dans la FAQ
      3. Y'a rien sur Google
      4. Rien dans les sources
    L'un d'entre vous aurait-il une idée pour solutionner mon probléme?
    Merci d'avance,
    Cordialement,
    Hauwke

  2. #2
    Membre émérite Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Par défaut
    Citation Envoyé par Hauwke
    ...lorsque la fiche fait le locate sur la Tadotable (tblpersogene) contenue dans le Tdatamodule (Moedm), ça plante...
    Salut!

    T'as un message d'erreur ? Tu peux le poster ?

    Merci!

  3. #3
    Membre chevronné
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Par défaut
    Message d'erreur:

    "Violation d'accès à l'adresse 00F3ED30 dans le module 'Ajax.dll'. Lecture de l'adresse 0000005C."
    Merci de t'intéresser à mon problème
    Cordialement,
    Hauwke

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 236
    Par défaut
    Est ce que IdText ouTblPersoGene sont bien créés ?

    Sinon c'est bête d'écrire EuIdent:=IdEdit.Text; et de ne pas l'utiliser

    Faudrait vérifier en pas à pas si c'est vraiment sur le locate que ca plante
    Modérateur Delphi

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

  5. #5
    Membre chevronné
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Par défaut
    Citation Envoyé par Malatar
    Est ce que IdText ouTblPersoGene sont bien créés ?
    Oui, ils sont bien créés
    Citation Envoyé par Malatar
    Sinon c'est bête d'écrire EuIdent:=IdEdit.Text; et de ne pas l'utiliser
    EUIdent est une variable globale utilisée dans tout le soft, elle est correctement initialisée dans une autre unité. Le détail de cette uité n'est pas fourni afin de ne pas alourdir inutilement le post.

    Citation Envoyé par Malatar
    Faudrait vérifier en pas à pas si c'est vraiment sur le locate que ca plante
    Le pas à pas a été réalisé depuis l'IDE de Delphi et ensuite repris par un soft externe de débuggage (Eurékalog) les deux cheminements indiquent clairement le même résultat: le locate plante.
    A noter que depuis des essais ont été réalisé avec Seek, find, first, last... et que tous plantent au même endroit: L'accés à la base de donnée. Or, les accés directs par les composants d'accés tel que Dbgrid, DbEdit ou autres qu'ils soient de la vcl natifs ou bien commerciaux (devexpress) fonctionnent parfaitement dans le même temps et sur la même fiche.
    Dans le soft, j'ai 8 modules de données, 134 tables, et j'ai planifié l'usage d'une vingtaine de Dll. J'aimerai, donc, bien comprendre...
    Il me semble que ces fonctions, locate, et autres, utilisent des processus propres. Vérification planifiée ce jour avec l'emploi de zone de mémoire partagée et CoInitializeEx(). Mais je doute que celà vienne de là, sinon pourquoi les affichages fonctionnent-ils correctement?
    Le probléme vient sans doute de mon incompétence crasse en matière de Dll. Mais je tente une perçée sur le sujet...
    Cordialement,
    Hauwke

  6. #6
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Par défaut
    peut etre avant le locate faut faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      TaTable.Active:= True

Discussions similaires

  1. [Shell] Problème avec le Back-quote (ksh)
    Par bob94700 dans le forum Linux
    Réponses: 3
    Dernier message: 27/01/2008, 12h45
  2. Sudo problème avec les simples quotes
    Par Tronche dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/03/2007, 12h02
  3. [MySQL] Problème avec un double quote
    Par wormseric dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/01/2007, 14h44

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