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 :

AnyDAC Sysbase --> Probleme de chargement de scripts ( Syntax error near '(end of line)' )


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 20
    Par défaut AnyDAC Sysbase --> Probleme de chargement de scripts ( Syntax error near '(end of line)' )
    Bonjour ,

    Configuration :

    Delphi Xe2 Pro
    Composant Anydac
    Os Windows 7 64bit

    Problème :

    Je suis connecté grâce au composant AnyDac a une base Sybase en local , je veux utiliser le composant TADScript pour exécuter des fichiers SQL.

    Sources :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     for Fichier in ListFichierSQL do         // ajout des maj de base
          begin
            ScriptMAJ_V2.SQLScriptFileName := Fichier ;
            if ScriptMAJ_V2.ValidateAll then
            ScriptMAJ_V2.ExecuteAll ;
          end;
    Lors de l’exécution de ce script , j'ai l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception 'first chance' à $755BC42D. Classe d'exception EASANativeException avec un message '[AnyDAC][Phys][ODBC][Sybase][ODBC Driver][Adaptive Server Anywhere]Syntax error near '(end of line)' on line 4'. Processus ProgReprise.exe (5344)
    Je sais que mon fichier est bon car je l'ai au préalable exécuté sur Sysbase central

    Fichier :

    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
    alter function Sysggm.F_BAIL_ACTIF(in dBAI_DATD date,in dBAI_DATF date,in dBAI_DEPLOC date,in dDATE_REF date)
    returns smallint
    --|-------------------------------------------------------------------------------------------------------------------------------|--
    --| F_SommeCA
    --| Cette fonction renvoit la somme du CA d un lot/locataire pour un année et un type de ca donné
    --|-------------------------------------------------------------------------------------------------------------------------------|--
    begin
      declare iActif smallint;
      if((dBAI_DATD > dDATE_REF) and(dBAI_DATF <= dDATE_REF)) or((dBAI_DATD <= dDATE_REF) and(dBAI_DATF >= dDATE_REF)) then
        //  if(dBAI_DATD<=dDATE_REF) and(dDATE_REF<=dBAI_DATF) then
        set iActif=1
      else
        set iActif=0
      end if;
      if(dBAI_DEPLOC <> null) then
        if(dBAI_DATD <= dDATE_REF) and(dDATE_REF <= dBAI_DEPLOC) then
          set iActif=1
        else
          set iActif=0
        end if
      end if;
      return(iActif)
    end
    Est-ce que quelqu’un a une idée , je pense a un mauvais formatage de fichier ou un truc du genre .

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 20
    Par défaut
    Pas de réponse ?

  3. #3
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    As-tu essayé d'enlever le commentaire?

    Sinon la méthodologie est de faire une procédure vide et de rajouter au fur et à mesure.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 20
    Par défaut
    J'ai essayé les commentaires , on ne sais jamais , mais ça ne fonctionne toujours pas.

    J'ai ensuite essayer de passer les lignes de la procédure une à une , ça fonctionne si on laisse juste le return , mais dès le déclare ça plante.

    La procédure est cohérente , c’est ça le pire.

    En attente des vos idées ..

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    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 089
    Par défaut
    Sous DBExpress pour lancer un code de création de procédure, une simple TSQLQuery fonctionnait

    Je ne connais pas le TADScript
    Mais le TOraScript bug si l'on mélange du SQL avec des commandes DDL genre CREATE TABLE puis un CREATE TRIGGER (forcément cela contient du code PL\SQL)
    Il se mélange les pinceaux et ne découpent plus le script correctement !

    As-tu pensé à mettre un ';' tout à fait la fin du script ?
    As-tu tenté d'utiliser un TADQuery avec un Execute ou ExecSQL ?
    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

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 20
    Par défaut
    Bonjour et merci de ta réponse ShaiLeTroll ,

    Les composant AnyDac ont été car ils proposent une connexion native à sybase ( et autre moteur ) , seulement j'ai aussi le choix de passer par un alias BDE.
    Le but de ce programme est de mettre a jour une base de données à distance , je dois donc autant pouvoir exécuter des scripts de modification de proc , que des scripts de modification de table ( Alter table , update etc ... )

    J'ai essayé les TADQuery , le seul soucis est qu'il ne permet pas d'envoyer des scripts complexe ( Pas plus d'une requête a la fois ).

    Il y aurais t'il un autre moyen de passer n'importe quel type de requette grâce au alias BDE ?

    Pour ma part , je pense vraiment que cela viens de Sybase , car j'ai fais le même programme pour une base PostGreSQL et tout fonctionne a merveille .

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

Discussions similaires

  1. Probleme passge de parametres script
    Par Dom_the_quaker dans le forum Langage
    Réponses: 4
    Dernier message: 27/09/2005, 17h15
  2. Réponses: 24
    Dernier message: 31/05/2005, 15h07
  3. [ jboss ] probleme de chargement de jar
    Par felix79 dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 27/10/2004, 10h06
  4. [SLACKWARE] Problème de chargement
    Par booboo dans le forum Autres
    Réponses: 2
    Dernier message: 13/08/2004, 01h59
  5. [langage] Probleme avec caractère '$' dans script Perl
    Par zouetchou dans le forum Langage
    Réponses: 11
    Dernier message: 24/07/2004, 15h35

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