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 :

EDBEngineError


Sujet :

Bases de données Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut EDBEngineError
    Bonjour à toutes et à tous,

    Comment faire pour conaitre la cause d'une erreur lors de l'execution d'une instruction ExecSQL pour une requete INSERT TO?

    le message D'erreur est:

    EDBEngineError un changement de type à eu lieu dans une expression .'.

    en Mode PAS à PAS le message intervient au moment de ExecSQL, pas avant, pendant la construction de la chaine SQL.Add.

    j'ai vérifié la syntaxe de la requete complete, et la validité des type de champ, ainsi que la valeur des champs passes en parametre tout semble!! OK.

    Si quelqu'un ou qelqu'une avait une petite idée c'est pas de refus. GROS Merci d'avance.

  2. #2
    Membre actif

    Profil pro
    Personnel
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Personnel

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Points : 210
    Points
    210
    Par défaut
    Salut,
    Une solution:
    tu copies la chaine dans le composant en mode conception, et tu l'actives. L'erreur sera cernée un peu plus facilement: le N° de ligne te sera donné.
    Et si tu veux être encore plus précis, tu mets une commande par ligne.
    @+
    Fabrice

  3. #3
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour cette premiere solution, mais je n'utilise pas de composant ,juste une variable TQuery dans une routine, et la chaine requete est construite entierement dynamiquement à partir de param passé à la routine. effectivement j'utilse SQl.Add à chque condtion WHERE et AND.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 245
    Points : 154
    Points
    154
    Par défaut
    Dans ce cas, je crois qu'un petit bout de ton code ne serait pas de trop

  5. #5
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    procedure TProjetMGR.AddObject(var aNewObject ;aTKindObject:TKindObject);
    var
    fqyTemp: Tquery;
     
    begin
      fqyTemp := TQuery.Create(nil);
      fqyTemp.Name := 'Temp_qy';
      fqyTemp.UniDirectional := True;
     
      with fqyTemp do
      begin
        Close;
        SQL.Clear;
        SQL.Add(Format('INSERT INTO "%s"',[TableOfObject(aTKindObject)]));
     
        case aTKindObject of
          koEcoMusic:
                begin
                  SQL.Add('(Valide,Libelle,adresse,CodePostal,Id_commune,Telephone,Telecopie,Email,Id_Dir,Id_Pres,Id_Scrt,Logo,Web)');
                  SQL.Add(Format('VALUES ("%s","%s","%s","%s","%d","%s","%s","%s","%d","%d","%d","%s","%s")',
                  [BoolToStr(TEcolMusicDesc(aNewObject).Valide),
                  TEcolMusicDesc(aNewObject).Libelle,
                  TEcolMusicDesc(aNewObject).adresse,
                  TEcolMusicDesc(aNewObject).CodePostal,
                  TEcolMusicDesc(aNewObject).Id_Commune,
                  TEcolMusicDesc(aNewObject).Telephone,
                  TEcolMusicDesc(aNewObject).Telecopie,
                  TEcolMusicDesc(aNewObject).Email,
                  TEcolMusicDesc(aNewObject).id_Dir,
                  TEcolMusicDesc(aNewObject).id_Pres,
                  TEcolMusicDesc(aNewObject).id_Scrt,
                  TEcolMusicDesc(aNewObject).Logo,
                  TEcolMusicDesc(aNewObject).Web]));
                end;
          koEleve:
                begin
                  SQL.Add('(Id_EcoMusic, Valide, Nom, Prenom, Naissance,Adresse, Id_Commune, CodePostal, Telephone, Portable, Email, Id_Instrument, Id_NivFM, Id_NivPI, P_Collective, UMJ,Id_Ets, Id_Type_Sco, Lien_Famille, Remarques)');
                  SQL.Add(Format('VALUES ("%d","%s","%s","%s","%s","%s","%d","%s","%s","%s","%s","%d","%d","%d","%s","%s","%d","%d","%s","%s")',
                  [TEleveDesc(aNewObject).Id_EcoMusic,
                  BoolToStr(TEleveDesc(aNewObject).Valide),
                  TEleveDesc(aNewObject).Nom,
                  TEleveDesc(aNewObject).Prenom,
                  TEleveDesc(aNewObject).Naissance,
                  TEleveDesc(aNewObject).Adresse,
                  TEleveDesc(aNewObject).Id_Commune,
                  TEleveDesc(aNewObject).CodePostal,
                  TEleveDesc(aNewObject).Telephone,
                  TEleveDesc(aNewObject).Portable,
                  TEleveDesc(aNewObject).Email,
                  TEleveDesc(aNewObject).Id_Instrument,
                  TEleveDesc(aNewObject).Id_NivFM,
                  TEleveDesc(aNewObject).Id_NivPI,
                  BoolToStr(TEleveDesc(aNewObject).P_Collective),
                  BoolToStr(TEleveDesc(aNewObject).UMJ),
                  TEleveDesc(aNewObject).Id_Ets,
                  TEleveDesc(aNewObject).Id_Type_Sco,
                  TEleveDesc(aNewObject).Lien_Famille,
                  TEleveDesc(aNewObject).Remarques]));
                end;
          koExamen:
                begin
                  SQL.Add('(Id_EcoMusic,Valide,Id_Eleve,NotePI,TA,DV,DIA,DR,St_ECRIT,LNC,LR,CP,St_ORAL,Total_General,Note_20,Id_Appreciation,Jury)');
                  SQL.Add(Format('VALUES ("%d","%s","%d","%f","%f","%f","%f","%f","%f","%f","%f","%f","%f","%f","%f","%d","%s")',
                  [TExamenDesc(aNewObject).Id_EcoMusic,BoolToStr(TExamenDesc(aNewObject).Valide),TExamenDesc(aNewObject).Id_Eleve,TExamenDesc(aNewObject).NotePI,
                  TExamenDesc(aNewObject).TA,TExamenDesc(aNewObject).DV,TExamenDesc(aNewObject).DIA,
                  TExamenDesc(aNewObject).DR,TExamenDesc(aNewObject).St_ECRIT,TExamenDesc(aNewObject).LNC,
                  TExamenDesc(aNewObject).LR,TExamenDesc(aNewObject).CP,TExamenDesc(aNewObject).St_ORAL,
                  TExamenDesc(aNewObject).Total_General,TExamenDesc(aNewObject).Note_20,TExamenDesc(aNewObject).Id_Appreciation,
                  TExamenDesc(aNewObject).Jury]));
                end;
     
          koUser:
                begin
                  SQL.Add('(Nom, Pwd, Acces)');
                  SQL.Add(Format('VALUES ("%s", "%s", "%s")', [TUserDesc(aNewObject).Nom,TUserDesc(aNewObject).Pwd,
                  EncodeAccessLevel(TUserDesc(aNewObject).Nom, TUserDesc(aNewObject).Pwd,TUserDesc(aNewObject).Acces)]));
                end;
     
          koPersonnel:
                begin
                  SQL.Add('(Id_EcoMusic,Valide,Nom,NomNaiss,Prenom,Adresse,Id_Commune,CodePostal,Telephone,Portable,Email,Id_Fonction,Id_Instrument,Remarques)');
                  SQL.Add(Format('VALUES ("%d","%s","%s","%s","%s","%s","%d","%s","%s","%s","%s","%d","%d","%s")',
                  [TPersonnelDesc(aNewObject).Id_EcoMusic, BoolToStr(TPersonnelDesc(aNewObject).Valide), TPersonnelDesc(aNewObject).Nom, TPersonnelDesc(aNewObject).NomNaiss,
                  TPersonnelDesc(aNewObject).Prenom ,TPersonnelDesc(aNewObject).Adresse,TPersonnelDesc(aNewObject).Id_Commune,
                  TPersonnelDesc(aNewObject).CodePostal,TPersonnelDesc(aNewObject).Telephone,TPersonnelDesc(aNewObject).Portable,
                  TPersonnelDesc(aNewObject).Email ,TPersonnelDesc(aNewObject).Id_Fonction,TPersonnelDesc(aNewObject).Id_Instrument,
                  TPersonnelDesc(aNewObject).Remarques]));
                end;
          koReglement:
                begin
                  SQL.Add('(Id_EcoMusic,Valide,Id_Eleve,MontantTotal,AlaCarte,Cheque_1,Cheque_2,Cheque_3,Date_1,Date_2,Date_3)');
                  SQL.Add(Format('VALUES ("%d","%d","%s","%s","%s","%s","%s","%s","%s","%s")',
                   [TReglementDesc(aNewObject).Id_EcoMusic, BoolToStr(TReglementDesc(aNewObject).Valide), TReglementDesc(aNewObject).Id_Eleve, CurrToStr(TReglementDesc(aNewObject).MontantTotal),
                   BoolToStr(TReglementDesc(aNewObject).AlaCarte),CurrToStr(TReglementDesc(aNewObject).Cheque_1),CurrToStr(TReglementDesc(aNewObject).Cheque_2),
                   CurrToStr(TReglementDesc(aNewObject).Cheque_3),TReglementDesc(aNewObject).Date_1,TReglementDesc(aNewObject).Date_2,
                   TReglementDesc(aNewObject).Date_3]));
                end;
     
          koHoraire:
                begin
                  SQL.Add('(Id_EcoMusic,Valide,libelle,Id_NiveauFM,Id_NiveauPI,Id_Instrument,Id_Professeur,Id_Jour,Id_HeureD,Id_HeureF)');
                  SQL.Add(Format('VALUES ("%d","%s","%s","%d","%d","%d","%d","%d","%d","%d")',
                   [THoraireDesc(aNewObject).Id_EcoMusic,
                   BoolToStr(THoraireDesc(aNewObject).Valide),
                   THoraireDesc(aNewObject).Libelle,
                   THoraireDesc(aNewObject).Id_NiveauFM,
                   THoraireDesc(aNewObject).Id_NiveauPI,
                   THoraireDesc(aNewObject).Id_Instrument,
                   THoraireDesc(aNewObject).Id_Professeur,
                   THoraireDesc(aNewObject).Id_Jour,
                   THoraireDesc(aNewObject).Id_HeureD,
                   THoraireDesc(aNewObject).Id_HeureF]));
                end;
          koCotisation:
                begin
                  SQL.Add('(Id_EcoMusic,Valide,Libelle,Montant,Date_1,Date_2,Date_3)');
                  SQL.Add(Format('VALUES ("%d","%s","%s","%s","%s","%s","%s")',
                   [TCotisationDesc(aNewObject).Id_EcoMusic,
                   BoolToStr(TCotisationDesc(aNewObject).Valide),
                   TCotisationDesc(aNewObject).Libelle,
                   CurrToStr(TCotisationDesc(aNewObject).Montant),
                   TCotisationDesc(aNewObject).Date_1,
                   TCotisationDesc(aNewObject).Date_2,
                   TCotisationDesc(aNewObject).Date_3]));
                end;
        end;
        ExecSQL;
      end;
     fqyTemp.free;
    end;
    Voila c'est la routine qui coince!
    en fait une fois les valeurs à leur place dans la chaine dans ExecSQL qui provoque le bug.

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

Discussions similaires

  1. [BDE] erreur exe EDBEngineError
    Par dim07 dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/11/2006, 16h57
  2. EDBEngineError sur une requête pour MySQL
    Par Slyteck dans le forum Bases de données
    Réponses: 4
    Dernier message: 10/08/2006, 14h17
  3. EDBEngineError Paradox: "Fonctionnalité non supportée"
    Par forzaxelah dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/05/2006, 17h32
  4. EDBEngineError : "Nom dupliqué dans ce contexte"
    Par jakouz dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/11/2005, 15h50
  5. EDBEngineError : "... ne peut etre utilisee avec ce pil
    Par Dev_Michael dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/03/2005, 15h15

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