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 :

Erreur lors d'execution requete


Sujet :

Delphi

  1. #1
    Membre éclairé Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 576
    Par défaut Erreur lors d'execution requete
    Bonjour à tous,

    Voici mon probleme

    Le message suivant s'affiche lors d'une execution de requete
    Nom : Erreur.jpg
Affichages : 500
Taille : 18,8 Ko

    La requete n'est pas compliqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     MyQuery:= TMyQuery.Create(nil);
          try
            with MyQuery do
            begin
              Connection:= MyConnection1;
              SQL.Clear;
              SQL.add('SELECT champ1, champ2, champ3  FROM maTable  WHERE  id=' + inttostr(monId));
     
              Execute;
    Le message s'affiche lors de l'execution

    Du coup, j'ai voulu tenté avec une requete que je fais fais en début de programme pour initialisation qui fonctionne. Je l'ai placé à cet endroit là et là le message apparait.

    Pour information,
    j'utilise Delphi 7 et MySQL

    je suis toujours dans la meme unité, je libère MyQuery à chaque fois dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    finally
            MyQuery.Free;
    end;
    Quelqu'un saurait-il m'aider ?

    Merci d'avance
    Cdlt,

    Marsup

  2. #2
    Membre chevronné Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Par défaut
    Tu as essayé "open" à la place de "execute" ?

  3. #3
    Membre éclairé Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 576
    Par défaut
    Citation Envoyé par blonde Voir le message
    Tu as essayé "open" à la place de "execute" ?
    Je viens d'essayer... Toujours pareil

  4. #4
    Membre chevronné Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Par défaut
    Et sur MyConnection1 ? tu as aussi ouvert la connexion à la base ?

    MyConnection1 : tu le créés à la volée ou bien posé sur la fiche ? J'imagine que c'est un TSQLConnection?

    Et TMyQuery hérite de TSQLQuery ?

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 096
    Par défaut
    Effectivement, un SELECT c'est toujours Open jamais Execute mais tu aurais une erreur DB sur le Curseur ou un truc du genre.

    le Self associé à MyConnection1 est-il instancié correctement ?
    Ou alors libéré involontairement vu les adresses mémoire.

    TMyQuery et TMyConnection, c'est ceux CoreLab Devart pour MySQL ?

    tu peux aussi simplifier le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            with TMyQuery.Create(nil)do
            try
              Connection:= MyConnection1; // vérifie si Self est nil, si MyConnection1 est nil ou alors libéré ailleurs de façon imprévue.
              SQL.Text := 'SELECT champ1, champ2, champ3  FROM maTable  WHERE  id = :pID';
              ParamByName('pID').AsInteger := monId;
     
              Open;
              // Travail avec ...
              Close();
            finally 
              Free();
            end;
    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 éclairé Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 576
    Par défaut
    Bonjour

    Citation Envoyé par ShaiLeTroll Voir le message

    le Self associé à MyConnection1 est-il instancié correctement ?
    Ou alors libéré involontairement vu les adresses mémoire.
    Je ne comprends pas ce point

    Citation Envoyé par ShaiLeTroll Voir le message
    TMyQuery et TMyConnection, c'est ceux CoreLab Devart pour MySQL ?
    Oui c'est pour MySQL

    J'ai également simplifier le code mais ca ne change rien

    Après, ca ne vient pas de la requete car si je la met en début de programme (dans des procédures init) ca fonctionne
    Et si je met une requete qui fonctionne au début à cet endroit, ca plante

    Je ne comprends vraiment pas pourquoi

    Help please

    cdlt,
    Marsup

  7. #7
    Membre éclairé Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 576
    Par défaut
    Je viens de tester quelque-chose

    Puise ma fonction contenant la requete fonctionne au début, j'ai déplacé cette fonction pour voir à quel moment elle ne fonctionnait plus.
    Et là...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
     
     CalculGraphique; // Ma Fonction contenant la requete (juste un SELECT * FROM MaTable) --> à ce niveau là elle fonctionne
     
      for I := 1 to nbParameters do
      begin
          ListeValeur[I]:=StrToFloat(copy(S,1,Pos(',',S)-1));
          S:=Copy(S,Pos(',',S)+1,Length(S)-Pos(',',S));
      end;
     
      CalculGraphique // Ne fonctionne plus;
    Pourtant je ne vois pas en quoi ca joue sur ma requete...

    Pour info
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ListeValeur: Array of Double;
    Et ma requete ne fait pas appel à ce tableau

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    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 658
    Billets dans le blog
    65
    Par défaut
    Ce qu'il nous faudrait, c'est plus la procédure CalculGraphique complète ou du moins la partie impliquant totalement la requête et la totalité des variables/composants impliqués.

    Là, on a des bouts de codes sans savoir si les conseils de ShaiLeTroll ont été appliqués

  9. #9
    Membre éclairé Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 576
    Par défaut
    Ben en fait je viens de m'apercevoir que pour remplir mon tableau je commencais à 1 et pas à 0


    Du coup, j'ai modifié ca et ma fonction fonctionne maintenant

    Du coup je ne comprends pas le lien entre le tableau et ma fonction car ca aurait du planter avant. Si quelqu'un sait pourquoi, j'aimerai bien savoir

    Mais bon en tous cas ca fonctionne maintenant.

    Merci beaucoup à tous

    Marsup

  10. #10
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 096
    Par défaut
    C'est une question mémoire

    ListeValeur[0] à ListeValeur[nbParameters - 1] c'est l'espace du tableau
    Mais par un hasard la mémoire située à ListeValeur[nbParameters] est une des données du TMyConnection et en modifiant à cet endroit, cela altère cet objet le rendant incohérent pour toute utilisation suivante.
    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

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

Discussions similaires

  1. erreur lors d'execution
    Par sabrinabest dans le forum SL & STL
    Réponses: 3
    Dernier message: 25/09/2007, 09h30
  2. [D7][DB] Erreur lors d'execution d'un "exe"
    Par melles dans le forum Delphi
    Réponses: 3
    Dernier message: 20/03/2007, 22h10
  3. Réponses: 3
    Dernier message: 05/01/2006, 15h14
  4. Erreur lors d'une requete insert into.. select
    Par Mr N. dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/11/2004, 17h32
  5. Erreur lors d'une requete INNER JOIN
    Par k-lendos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/03/2004, 15h09

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