IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Missing semicolon ( ; ) at end of SQL statement


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de myflash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 63
    Par défaut Missing semicolon ( ; ) at end of SQL statement
    Quelqu'un a une idee de comment regler ce probleme ????

    j'ai le message d'erreur "Missing semicolon ( ; ) at end of SQL statement"

    j'ai besoin d'ajouter plusieur record en 1 transaction, au pire si vous avez un autre exemple qui fonctionne je peux voir si je peux adapter ca a mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
     
    procedure InsertMultipleEntries;
    var
        Conn      : TADOConnection;
        AdoQuery  : TADOQuery;
    begin
        Conn := TADOConnection.create(nil);
        try
            Conn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Mode=Share Exclusive;Data Source="maBD.mdb"';
            Conn.LoginPrompt      := false;
            Conn.Connected        := true;
            try
                try
                    AdoQuery            := TADOQuery.create(nil);
                    AdoQuery.Connection := Conn;
                    AdoQuery.SQL.Text   := 'INSERT INTO Personne (Nom, Prenom) VALUES (''Charle'', ''Charet''), ( ''Manon'', ''Plante'');';
                    AdoQuery.ExecSQL;
                except
                    on E: Exception do
                    begin
                        ShowMessage(E.Message);
                    end;
                end;
            finally
                AdoQuery.Free;
            end;
        finally
            Conn.Free;
        end;
    end;

  2. #2
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    L'insertion multiple n'est pas prise en charge par MS Access : https://learn.microsoft.com/en-us/of...oft-access-sql

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Je n'ai jamais été un fan d'ADO

    j'ai besoin d'ajouter plusieurs records en 1 transaction
    à essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    procedure InsertMultipleEntries; 
    var
        Conn      : TADOConnection;
        AdoQuery  : TADOQuery;
    begin
        Conn := TADOConnection.create(nil);
        try
            Conn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Mode=Share Exclusive;Data Source="maBD.mdb"';
            Conn.LoginPrompt      := false;
            Conn.Connected        := true;
            try 
                try
                    Conn.BeginTrans;
                    AdoQuery            := TADOQuery.create(nil);
                    AdoQuery.Connection := Conn;
                    AdoQuery.SQL.Text   := 'INSERT INTO Personne (Nom, Prenom) VALUES (''Charle'', ''Charet'')';
                    AdoQuery.ExecSQL;
                    AdoQuery.SQL.Text   := 'INSERT INTO Personne (Nom, Prenom) VALUES ( ''Manon'', ''Plante'')';
                    AdoQuery.ExecSQL;
                    Conn.CommitTrans;
                except
                    on E: Exception do
                    begin
                        Conn.RollbackTrans; // rollback.   
                        ShowMessage(E.Message);
                    end;
                end;
            finally
                AdoQuery.Free;
            end;
        finally
            Conn.Free;
        end;
    end;

  4. #4
    Membre actif Avatar de myflash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 63
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Je n'ai jamais été un fan d'ADO


    à essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    procedure InsertMultipleEntries; 
    var
        Conn      : TADOConnection;
        AdoQuery  : TADOQuery;
    begin
        Conn := TADOConnection.create(nil);
        try
            Conn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Mode=Share Exclusive;Data Source="maBD.mdb"';
            Conn.LoginPrompt      := false;
            Conn.Connected        := true;
            try 
                try
                    Conn.BeginTrans;
                    AdoQuery            := TADOQuery.create(nil);
                    AdoQuery.Connection := Conn;
                    AdoQuery.SQL.Text   := 'INSERT INTO Personne (Nom, Prenom) VALUES (''Charle'', ''Charet'')';
                    AdoQuery.ExecSQL;
                    AdoQuery.SQL.Text   := 'INSERT INTO Personne (Nom, Prenom) VALUES ( ''Manon'', ''Plante'')';
                    AdoQuery.ExecSQL;
                    Conn.CommitTrans;
                except
                    on E: Exception do
                    begin
                        Conn.RollbackTrans; // rollback.   
                        ShowMessage(E.Message);
                    end;
                end;
            finally
                AdoQuery.Free;
            end;
        finally
            Conn.Free;
        end;
    end;

    Je viens d'essyer plusieur test... on economise un peu de temp mais pas grand chose, a limite 10% peut etre

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par myflash Voir le message
    Je viens d'essayer plusieurs tests... on économise un peu de temps, mais pas grand-chose, a limite 10% peut-être
    Ma réponse n'était pas sur le temps d'exécution, mais sur le fait de le faire en une seule transaction.

    Il faudrait tester avec Firedac et ses fonctionnalités comme les ArrayDML pour se faire une idée niveau temps d'exécution

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Tu peux aussi utilise une requête paramètrée, cela éconmisera la partie parsing SQL et justement le binding donc les itérations seront plus rapides
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. missing semicolon at end of sql statement
    Par mark. dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 22/06/2014, 20h00
  2. Création Curseur à partir d'un sql statement dynamique
    Par droog dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 20/05/2008, 15h04
  3. [DB2 V8] SQL0901N the SQL statement failed
    Par dngaya dans le forum DB2
    Réponses: 1
    Dernier message: 05/10/2006, 06h17
  4. [VBA-A2003] Export d'un Recordset vers Excel, avec SQL statement
    Par Wanoo14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2006, 22h06
  5. Réponses: 5
    Dernier message: 18/04/2005, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo