Les codes que j'ai proposés sont tous ok sur mon poste
Les codes que j'ai proposés sont tous ok sur mon poste
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Ça m'aidera peut-être à découvrir d'où vient le problème.
Parce que c'est quand même un peu fort de café que la requête fonctionne parfaitement ligne par ligne : donc pas de problème de connexion à la base.
Si vous êtes libre, choisissez le Logiciel Libre.
Mes tutoriels
Avant de poster :
- F1
- FAQ
- Tutoriels
- Guide du développeur Delphi devant un problème
En règle général, quand on commence à se poser des questions existentielles, c'est qu'on est arrivé au bout du sujet
Je vais bien arriver à trouver d'où vient le problème.
Merci à tout le monde, même à ceux qui interviennent juste pour dire que les composants Firedac fonctionnent parfaitement c'est déjà pas mal.
salut
essai de faire un truc comme ceci histoire de voir
ou peux se nicher cette satané erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 try Qry.SQL.clear; St := 'EXECUTE BLOCK AS BEGIN ' +' INSERT INTO nomtable (NUM, NOM, CODE, PRIX, UNITE) VALUES (''1'',''nom'',''code'',0.04,''EUR'') ' +' INSERT INTO nomtable (NUM, NOM, CODE, PRIX, UNITE) VALUES (''2'',''nom2'',''code2'',0.05,''EUR'') ' +' END;'; Qry.SQL.Add(St); Qry.ExecSQL; except on E: Exception do raise Exception.CreateFmt( 'Error Query : %s', [ E.Message]); End;
Blaise PascalNous souhaitons la vérité et nous trouvons qu'incertitude. [...]
Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
PS : n'oubliez pas le tag
@Anapurna ta syntaxe SQL est incorrecte
Voir mon post #13 et le #19 pour la correction de la syntaxe
il faut un ; après chaque opération INSERT (donc dans tes instruction lignes 4 et 5) et pas besoin du ; pour le END de la ligne 6
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
salut
j'ai repris tel quel le code sql ne connaissant pas sa bdd quise trouve derriere ... je me suis attaché a lui donnée une methode de dev afin
qu'il puisse retrouver rapidement l'erreur
pour ma part je n'utilise que les doubles quotes pour les chaine de caractere plutot que des paires de simple quote mais encore faut t'il que cela soit accepté par le moteur de bdd
Blaise PascalNous souhaitons la vérité et nous trouvons qu'incertitude. [...]
Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
PS : n'oubliez pas le tag
Merci Anapurna,
J'ai déjà essayé ça et je continue.
Même avec les ";" comme l'a corrigé Sergio, ça ne marche pas.
C'est pour ça que j'ai un peu de mal à croire que c'est ma construction de requête qui pose problème. Puisque, quand je saisie ce petit bloc en dur dans mon code, ça ne marche pas
Mais je continue. Il y a sûrement plusieurs problèmes superposés.
Et évidemment, quand j'aurai trouvé, j'aurai trop honte pour vous le dire Donc, si je ne donne pas de nouvelle, c'est que j'ai trouvé le problème...
Non, définitivement non.
Je récupère la requête "EXECUTE BLOCK" transmise au FDQuery qui n'INSERT aucun des 37 enreg qu'elle contient dans la base.
Je l'encadre de SET TERM !; et de !, et la lance dans Flamerobin, elle m'INSERT les 37 enreg sans problème.
D'où : il y a bien quelque chose de pas clair dans le fonctionnement du FDQuery, ou un secret d'expert à connaître.
salut
le message d'erreur c'est quoi ?
si il n'y a pas de message d'erreur
il faut peut etre regarder dans les proprietes des composants
le FDQuery est bien attaché a une base de donnée
il y a quoi dans dans le dataBaseName
ta base est bien ouverte ?
.... il y a beaucoup de questions qui semble resté sans reponse
j'utilise les query depuis plus de 20 ans je n'ai jamais eu ce genre de probleme ...
Blaise PascalNous souhaitons la vérité et nous trouvons qu'incertitude. [...]
Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
PS : n'oubliez pas le tag
Cela fonctionne, AMHA c'est parce que la transaction est mal gérée que rien ne se passe correctement.
Chacun de mes codes #10 et #13 a été testé. Les seuls doutes en ce qui me concerne, c'est la version de Firebird et de Delphi utilisé.
une session Flamerobin commence par un StartTransaction les enregistrements n'étant validé que par le commitlance dans Flamerobin, elle m'INSERT les 37 enreg sans problème.
PS. utiliser ArrayDML avec un TFDQuery se charge de tout ça (démarrer la transaction, créer le block, "écrire les divers Insert", faire le commit) mais bon tant que vous ne voulez pas changer votre façon d'aborder le problème
De plus j'aimerais bien comprendre davantage le contexte, car une copie d'une table vers une autre pourrait certainement aussi se faire par un TFDBatchMove
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager