Bonjour,
Le point virgule qui "traînait" c'était un oubli...
Mon but est de passer une requête sql et de récupérer le résultat dans un fichier, donc je pensais faire ceci :
1 2
| AProcess.Executable:= 'sqlite3';
AProcess.Parameters.Add('test.sqlite>requete.sql<result.tmp'); |
mais ça ne fonctionne pas. Dans le terminal, sqlite3 attend des instructions...
SQLite version 3.19.3 2017-06-08 14:26:16
Enter ".help" for usage hints.
sqlite>
1)si je mets uniquement cette ligne :
AProcess.Executable:= 'sqlite3';
ça m'ouvre le terminal
SQLite version 3.19.3 2017-06-08 14:26:16
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
2) si je mets cette ligne :
AProcess.Executable:= 'sqlite3 test.sqlite';
An unhandled exception occurred at $0000000000470915:
EProcess: Executable not found: "sqlite3 test.sqlite"
3) si je mets sur deux lignes
1 2
| AProcess.Executable:= 'sqlite3';
AProcess.Parameters.Add('test.sqlite'); |
SQLite version 3.19.3 2017-06-08 14:26:16
Enter ".help" for usage hints.
sqlite>
Pour info dans une autre langage Basic (basiconverter) j'arrive à le faire .. et je voulais transposer à Fpc
SUB subrequetesql : ' execute ordre sql
LOCAL ficsql TYPE FILE*
OPEN "ordresql.sql" FOR WRITING AS ficsql
WRITELN codesql$ TO ficsql
CLOSE FILE ficsql
resultsql$=EXEC$("sqlite3 ./../compta2.sqlite < ordresql.sql")
END SUB
où je récupérais le résultat de la requête dans la variable resultsql$
Merci pour vos conseils.
Partager