Tquery : Requete SQL Pour insertion multiple -- URGENT [Résolu]

Messages postés
51
Date d'inscription
dimanche 1 juin 2003
Dernière intervention
31 août 2011
- - Dernière réponse : cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Derniè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,

SSD
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
3
Merci
Après vérification, Paradox ne supporte pas l'insertion multiple : voir ici

Désolé...

May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Sauvons MySQL

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
0
Merci
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.

May Delphi be with you

Sauvons MySQL
Commenter la réponse de cs_Delphiprog
Messages postés
51
Date d'inscription
dimanche 1 juin 2003
Dernière intervention
31 août 2011
0
Merci
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,

Merci, d'avance.
SSD
Commenter la réponse de cs_ssd

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.