cs_ssd
Messages postés50Date d'inscriptiondimanche 1 juin 2003StatutMembreDernière intervention31 août 2011
-
15 févr. 2010 à 23:44
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
17 févr. 2010 à 20:29
Bonjour,
J'utilise la Tquery dans mon application pour faire des requetes SQL sur une table paradox.
Le problème, j'utilise ma Tquery pour faire des inserts dans ma table, le soucis si je veux faire des inserts groupés je ne peux pas. Message d'erreur.
Voila mon code pour faire mon SQL Insert Groupé : procedure TFConfiguration.button_commande_sqlClick(Sender: TObject);
var
Adresse_fichier_SQL : String;
begin
Try
if OpenDialog_SQL.Execute then
Adresse_fichier_SQL := OpenDialog_SQL.FileName;
With DataModule1.Query_code_fait do
begin
Close;
SQL.Clear;
SQL.LoadFromFile(Adresse_fichier_sql);
ExecSQL ;
end;
Datamodule1.Table_Faits.Refresh;
// Showmessage('REQUEST SQL : OK');
Except
Showmessage('REQUEST SQL : ERREUR');
End;
end;
Et voila mon fichier TXT : INSERT INTO BDD\Table_faits VALUES ('Ligne1','Ligne2')
Pouvez vous m'aidez car je ne comprends pas pourquoi je peux faire une insertion simple et non multiple.
Cordialement,
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201333 16 févr. 2010 à 23:40
Bonsoir,
Une première remarque : la méthode Execute de la classe TOpenDialog renvoie false quand l'utilisateur clique sur le bouton annuler. La variable Adresse_fichier_SQL ne recevra alors aucune valeur et restera une chaine vide. Aussi, il convient d'ajouter un bloc BEGIN..END pour n'exécuter la requête que si l'utilisateur a choisi un fichier.
procedure TFConfiguration.button_commande_sqlClick(Sender: TObject);
var
Adresse_fichier_SQL : String;
begin
Try
if OpenDialog_SQL.Execute then
BEGIN // <-- AJOUT
Adresse_fichier_SQL := OpenDialog_SQL.FileName;
With DataModule1.Query_code_fait do
begin
Close;
SQL.Clear;
SQL.LoadFromFile(Adresse_fichier_sql);
ExecSQL ;
end;
Datamodule1.Table_Faits.Refresh;
// Showmessage('REQUEST SQL : OK');
Except
Showmessage('REQUEST SQL : ERREUR');
End;
END; // <-- AJOUT
end;
En ce qui concerne l'insertion multiple, la syntaxe est la suivante :
INSERT INTO BDD\Table_faits VALUES ('Ligne1'),('Ligne2');
Bien noter les parenthèses permettant de séparer les groupes de données.
cs_ssd
Messages postés50Date d'inscriptiondimanche 1 juin 2003StatutMembreDernière intervention31 août 2011 17 févr. 2010 à 02:05
Merci, pour la remarque du Begin ... end;
En revanche quand j'exécute mon insertion multiple avec la syntaxe : INSERT INTO BDD\Table_faits VALUES ('Ligne1'),('Ligne2');
Le message d'erreur suivant s'affiche : Le projet LEO.exe a déclenché la classe d'exception EDBEngineError 'Invalide use of keyword' Token ,('Ligne2')
Il faut savoir que ma base paradox ne comporte qu'un seul champ
Je n'ai pas trouvé à quoi correspondait cette erreur.
Si quelqu'un a une idée,