Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2618 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Insertion ou mise à jour impossible...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Insertion ou mise à jour impossible...

n°1162995
nicocolas
Kamehameha!!!!
Posté le 28-07-2005 à 13:48:54  profilanswer
 

Bonjour,
je travaille avec une base Sybase et le BDE et je n'arrive pas à faire fonctionner mes requétes de modifications de la base...
En fait, la plupart du temps je n'ai pas de message d'erreur, mais mon prog plante car la requête tourne en boucle sans qu'elle aboutisse...
A chaque fois, mon code ressemble à ça:
Code:
 with query2 do
        begin
        Close;
        SQL.Clear;
        SQL.Add('insert...');
        Prepare;
        ExecSQL;
        end;
 
Si vous avez la soluce ou une idée, merci d'avance!

mood
Publicité
Posté le 28-07-2005 à 13:48:54  profilanswer
 

n°1163038
Zozol
Posté le 28-07-2005 à 14:16:59  profilanswer
 

J'ai pas de de solution, mais peut-etre des idée
 
- Certains comportement anormaux disparaissent en utilisant les objets ADO à la place des BDE (question de driver, je supose)
 
- Je sais que c'est une question idiote mais.... quand tu execute ton "insert..." directement dans sybase, ça marche?
 
- Si tu n'execute une requete qu'une fois, la commande Prepare est inutile (on sais jamais. C'est peut etre cet ordre qui plante)
 
sinon, peut-tu etre plus preci? Est-ce l'ordre ExecSQL qui dure indéfiniment (vérifie avec le pas par pas)?

n°1163060
nicocolas
Kamehameha!!!!
Posté le 28-07-2005 à 14:24:51  profilanswer
 

Merci pour tes pistes, c'est sympa!
Alors, dans l'ordre:
-je n'ai jamais utilisé les objets ADO, mais donc en gros tu me les conseilles à la place du BDE?
-la requête marche bien directement dans Sybase en effet...
-si j'utilises ce query plusieurs fois, "prepare" est inutile alors?
-avec un point d'arrêt sur mon "execSQL", alors je me rends compte que c'est bien lui qui mouline en effet!
Merci d'avance!

n°1163109
antp
Super Administrateur
Champion des excuses bidons
Posté le 28-07-2005 à 14:40:27  profilanswer
 

Dans la doc :

Citation :


Call Prepare to have the BDE and a remote database server allocate resources for the query and to perform additional optimizations. Preparing a query consumes some database resources, so it is good practice to call UnPrepare once the query is no longer needed.
 
If the query will only be executed once, the application does not need to explicitly call Prepare or UnPrepare. Executing an unprepared query generates these calls automatically. However, if the same query is to be executed repeatedly, it is more efficient to prevent these automatic calls by calling Prepare and UnPrepare explicitly.
 
Note: When you change the text of a query at runtime, the query is automatically closed and unprepared.


Perso je n'ai jamais utilisé Prepare, je ne savais même pas que ça existait :whistle:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1163180
Zozol
Posté le 28-07-2005 à 15:09:27  profilanswer
 

nicocolas a écrit :

Merci pour tes pistes, c'est sympa!
Alors, dans l'ordre:
-je n'ai jamais utilisé les objets ADO, mais donc en gros tu me les conseilles à la place du BDE?


Sur les cas que j'ai rencontré, l'ADO marche mieu(pas mal de bug en moin) , mais plus lentement. Mais j'ésiterait à affirmer que c'est une règle générale
 

nicocolas a écrit :

-la requête marche bien directement dans Sybase en effet...


- Cette requete tourne-t-elle dans les mème condition? Si ton programme Delphi accede à la base par le reseau et que ton test "en direct" est directement sur le server, ça vien peut etre de là (notamment si tu imbrique un select ou si ton ordre fait 20000 lignes)
- A oui! Plusieur "Insert" séparé par des point virgule, ça passe pas bien!
 

nicocolas a écrit :

-si j'utilises ce query plusieurs fois, "prepare" est inutile alors?


Ben si, justement! Tu lance "prepare" une fois(avant la boucle), puis la requete plusieur fois (grosso-modo, ça compile la requete)(je me suis jamais amusé à chronometré la diférence)
 

nicocolas a écrit :


-avec un point d'arrêt sur mon "execSQL", alors je me rends compte que c'est bien lui qui mouline en effet!


Mouais.... Si tu construit ta requete avec plusieurs "SQL.add", sauvegarde la requete dans un fichier ("Query1.SQL.SaveToFile" ) pour l'executer séparement, juste pour voir
 

nicocolas a écrit :

Merci d'avance!


Il vous en pris (d'avance)


Message édité par Zozol le 29-07-2005 à 10:06:09
n°1163602
nicocolas
Kamehameha!!!!
Posté le 28-07-2005 à 17:01:39  profilanswer
 

Hum, je pense qu'il y a une sorte de conflit entre mon client Sybase et mon prog...
Après avoir relancé mon prog tout seul, les MAJ ont l'air de fonctionner, mais je vais tester un peu plus en détail quand même parce que je me prends d'autres erreurs un peu étranges parfois...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Insertion ou mise à jour impossible...

 

Sujets relatifs
Mise en page insolite et sémantique[résolu] ezpdf, problème de mise en page
insertion d'une colonne dans une table[résolu] impossible d'uploader depuis changement d'hébergement
mise en page avec des <div>mis à jour de 2 tables sous delphi
recherche de scipt de mise a jour texte dans siteMise en forme conditionnelle
select mis a jour par d'autres select 
Plus de sujets relatifs à : Insertion ou mise à jour impossible...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR