Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 6 of 6 total
Thread INSERT TABLE
Fri, May 28 2010 3:49 AMPermanent Link

Josselin

Hi,

With DBISAM it was possible to do that for INSERT record in a Table :

PROC.SQL.Clear;
PROC.SQL.Add('INSERT INTO ListePerso(Code,Libelle,Unite,Valeur,Global,Partiel,Etat)');
PROC.SQL.Add('VALUES(''A.211.23'',''Ossatures de portiques (Sauf A.213)'',''m2'',0,0,0,''F'');');
PROC.SQL.Add('INSERT INTO ListePerso(Code,Libelle,Etat)');
PROC.SQL.Add('VALUES(''Z.99'',''-------------- Fin du calcul ---------------'',''Z'');');
if not PROC.Prepared then PROC.Prepare;
PROC.ExecSQL;

When I do that with ElevateDB, I have an error message. It's not possible to do multiple INSERT in the same Query ?

Thanks for your response

Bruno
Fri, May 28 2010 4:20 AMPermanent Link

Uli Becker

Josselin,
>
> With DBISAM it was possible to do that for INSERT record in a Table :

with a query you can only execute one statement. You should use a Script
instead like this:

ExecuteImmediate('Insert into myTable.....');
ExecuteImmediate('Insert into myTable.....');
ExecuteImmediate('Insert into myTable.....');

etc.

Uli
Fri, May 28 2010 5:22 AMPermanent Link

Josselin

Thanks for your response

I have make this script :

   With Script1 do
   begin
     DatabaseName := 'DATA1';
     SQL.Clear;
     SQL.Add('SCRIPT ()');
     SQL.Add('BEGIN');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(1,'''+Main.EDBEngine1.QuotedSQLStr('Nombre d''heures')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(2,'''+Main.EDBEngine1.QuotedSQLStr('Nombre de jours / semaine')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(3,'''+Main.EDBEngine1.QuotedSQLStr('Nombre d''occupants par jour')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(4,'''+Main.EDBEngine1.QuotedSQLStr('Nombre de visiteurs par jour')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(5,'''+Main.EDBEngine1.QuotedSQLStr('Nombre de jours chauffés supplémentaires / tranche')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(6,'''+Main.EDBEngine1.QuotedSQLStr('Nombre d''heures chauffés supplémentaires')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(7,'''+Main.EDBEngine1.QuotedSQLStr('Consommation d''eau en litre par occupant par jour')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(8,'''+Main.EDBEngine1.QuotedSQLStr('Consommation d''eau en litre par visiteur par jour')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(9,'''+Main.EDBEngine1.QuotedSQLStr('Nombre d''agents de gardiennage par jour')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(10,'''+Main.EDBEngine1.QuotedSQLStr('Nombre d''heures de gardiennage par agent et par jour')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(11,'''+Main.EDBEngine1.QuotedSQLStr('Nombre de personne pour l''accueil par jour')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(12,'''+Main.EDBEngine1.QuotedSQLStr('Nombre d''heures d''accueil par personne et par jour')+''')'';');
     SQL.Add('EXECUTE IMMEDIATE ''INSERT INTO Occupation(Ordre,Libelle) VALUES(13,'''+Main.EDBEngine1.QuotedSQLStr('Nombre d''heures par tranche')+''')'';');
     SQL.Add('END');
     ExecScript;
   end;

I have this error message "ElevateDB Error #700 An error was found in the statement at line 3 and column 19 (Expected ) but instead found heures)
Fri, May 28 2010 5:41 AMPermanent Link

Josselin

I found why it's not working. It's because my string must be write like this :

QuotedSQLStr('Nombre d''''heures')
Fri, May 28 2010 6:19 AMPermanent Link

Uli Becker

Josselin,

if you have many inserts, it could be better to write a stored procedure
and call this procedure using params for the values, you want to enter.
Once prepared, that should be very fast as well.

Uli
Mon, Apr 22 2013 7:21 PMPermanent Link

Suat Hakki Dem

<<<<
Josselin wrote:

Hi,

With DBISAM it was possible to do that for INSERT record in a Table :

PROC.SQL.Clear;
PROC.SQL.Add('INSERT INTO ListePerso(Code,Libelle,Unite,Valeur,Global,Partiel,Etat)');
PROC.SQL.Add('VALUES(''A.211.23'',''Ossatures de portiques (Sauf A.213)'',''m2'',0,0,0,''F'');');
PROC.SQL.Add('INSERT INTO ListePerso(Code,Libelle,Etat)');
PROC.SQL.Add('VALUES(''Z.99'',''-------------- Fin du calcul ---------------'',''Z'');');
if not PROC.Prepared then PROC.Prepare;
PROC.ExecSQL;

When I do that with ElevateDB, I have an error message. It's not possible to do multiple INSERT in the same Query ?

Thanks for your response

Bruno
>>>>

you may also try this

INSERT INTO ListePerso(Code, Libelle, Unite, Valeur, Global, Partiel, Etat)
VALUES
('A.211.23', 'Ossatures de portiques (Sauf A.213)', 'm2', 0, 0, 0, 'F'),
('Z.99', '-------------- Fin du calcul ---------------', NULL, NULL, NULL, NULL, 'Z');

Suat
Image