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

Administration Firebird Discussion :

Utilisation de qli


Sujet :

Administration Firebird

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut Utilisation de qli
    bjr je ss entrain d'utiliser qli pour comparer les données de 2 bases.
    Le script que j'ai ecrit est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for s in src.CDF_CODIF 
     begin
       if not any c in tgt.CDF_CODIF with 
          s.CDF_NUMERO_PK=c.CDF_NUMERO_PK and (*)
          s.CDF_CODE_PK=c.CDF_CODE_PK
        	print s.CDF_NUMERO_PK,s.CDF_CODE_PK
     end
    Mais lorsque je l'exécute, j'ai tjs cette erreur après (*) :
    //** QLI error: expected identifier, encountered "." **.//
    Merci de bien vouloir me répondre au plutot car cet outils m'aide bcp dans mon travail.
    PS : J'utilise FireBird 1.5 et des bases de Dialect 1

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 902
    Points : 6 026
    Points
    6 026
    Par défaut
    Peut-être avec des parenthèses comme le suggère l'exemple du Blog
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut Utilisation qli
    Merci pour réponse mais j'ai essayé avec et sans les parenthèses et c'est la même erreur.
    Il y a truc que j'ai essayé c'est que j'ai créer 2 bases Firebird identiques avec les même libelllés des champs et ca marche.
    Franchement je n'arrive pas à comprendre ce qui arrive.

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par mercure07 Voir le message
    Mais lorsque je l'exécute, j'ai tjs cette erreur après (*) :
    //** QLI error: expected identifier, encountered "." **.//
    le message est clair non ?
    c'est quoi ce ?????
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut script qli
    (*) c'est juste pour vous indiquez la ligne après la quelle se décelenche l'erreur.
    Mais le script que j'exécute est identique à celui que vous avez mis dans le blog, j'ai juste changez les noms des bases,tables et champs.

  6. #6
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    quand on donne du code pour se faire aider, on donne le vrai code et son intégralité, pas juste un morceau et pas des trucs avec des étoiles en plus
    donc si je vois, le code réel, la structure des tables alors peut être je pourrais comprendre qq chose et peut être aider.
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  7. #7
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    dslé, vous avez raison.
    La structure de la table est la suivante :

    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
    Create table CATC_CLASSEATC (
        CATC_CODE_PK       VARCHAR(10) NOT NULL,
        CATC_CATC_CODE_FK  VARCHAR(10),
        CATC_NOMF          VARCHAR(77) NOT NULL,
        CATC_NOMA          VARCHAR(77) NOT NULL,
        CATC_DATECR        DATE NOT NULL,
        CATC_DATEMJ        DATE,
        CATC_TEXTE         VARCHAR(255)
    );
    ALTER TABLE CATC_CLASSEATC 
    ADD CONSTRAINT PK_CATC_CLASSEATC PRIMARY KEY (CATC_CODE_PK);
     
    ALTER TABLE CATC_CLASSEATC 
    ADD CONSTRAINT FK1_CATC_CLASSEATC FOREIGN KEY (CATC_CATC_CODE_FK) 
       REFERENCES CATC_CLASSEATC (CATC_CODE_PK);
    Le script que j'ai exécuté est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ready localhost:c:\db\THERIA_15012007.FDB as src user 'sysdba' password 'masterkey' 
    ready localhost:c:\db\THERIA_01012008.FDB as tgt user 'sysdba' password 'masterkey' 
     
    for s in src.catc_classeatc 
     begin
       if not any c in tgt.catc_classeatc with 
       (s.catc_code_pk=c.catc_code_pk )  
        	print s.catc_code_pk
     end
    L'erreur est :
    ** QLI error: expected right parenthesis, encountered "." **
    Merci de votre aide et conseil précieux.

  8. #8
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut exploitation qli
    Bon j'ai effectué plusieurs tests consistant à exporter la table concernée, l'insérer dans une base vièrge et lui enlever toutes les contraintes sauf celle de la clé primaires et ça marche.
    Je veux juste savoir est ce je dois enlever toutes les relations pour pouvoir exploiter qli.

  9. #9
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    non
    il n'y a aucune raison à cela
    c'est peut être une des bases qui a un problème plutot
    mais il n'y a aucune limite de ce genre dans l'utilisation de qli
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  10. #10
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    ok, sinon quel serai la source du problème d'apèrs vous. Car qli pourrait être très utile pour que je puisse comparer les données de 2 bases dans un délai réduit.
    Merci de votre collaboration.

  11. #11
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    aucune idée comme ça
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  12. #12
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    bjr, je veux juste savoir est que avec qli je pourrais avoir outre les enregistrements ajoutés et supprimés, les enregistrements modifiés.
    J'ai essayé avec ce script sur la base d'exemple de firebird employee
    ready localhost:c:\Firebird_1_5\examples\EMPLOYEE.FDB as src user 'sysdba' password 'masterkey'
    ready localhost:c:\Firebird_1_5\examples\EMPLOYEE1.FDB as tgt user 'sysdba' password 'masterkey'

    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
     
    for s in src.JOB
     begin
       if any c in tgt.JOB with 
       ( s.JOB_CODE=c.JOB_CODE and s.JOB_GRADE=c.JOB_GRADE and   s.JOB_COUNTRY=c.JOB_COUNTRY )
       begin
     
    	if s.JOB_TITLE<>c.JOB_TITLE
    		print s.JOB_TITLE
    	if s.MIN_SALARY<>c.MIN_SALARY
    		print s.MIN_SALARY
    	if s.MAX_SALARY<>c.MAX_SALARY
    		print s.MAX_SALARY  
    	if s.JOB_REQUIREMENT<>c.JOB_REQUIREMENT
    		print s.JOB_REQUIREMENT
    	if s.LANGUAGE_REQ<>c.LANGUAGE_REQ
    		print s.LANGUAGE_REQ
       end
     end
    mais tjs j'ai l'erreur :
    ** QLI error: "C.JOB_TITLE" is undefined or used out of context **.
    Merci de votre collaboration.

  13. #13
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for s in src.JOB 
     begin 
      for c in tgt.JOB with 
      (s.JOB_CODE=c.JOB_CODE and s.JOB_GRADE=c.JOB_GRADE and s.JOB_COUNTRY=c.JOB_COUNTRY)
      if s.JOB_TITLE<>c.JOB_TITLE
      print s.JOB_TITLE 
      end
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  14. #14
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    merci de votre réponse, c'est vrai que ca marche avec le code que m'avez donné, mais il concerne juste un seul champ. Mais pour savoir si un enregistrement a été modifié je dois comparer tous les champs.
    Si j'applique le script :
    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
     
    ready localhost:c:\Firebird_1_5\examples\EMPLOYEE.FDB as src user 'sysdba' password 'masterkey' 
    ready localhost:c:\Firebird_1_5\examples\EMPLOYEE1.FDB as tgt user 'sysdba' password 'masterkey' 
     
    for s in src.JOB
     begin
       if any c in tgt.JOB with 
       ( s.JOB_CODE=c.JOB_CODE and s.JOB_GRADE=c.JOB_GRADE and s.JOB_COUNTRY=c.JOB_COUNTRY )
       begin
     
    	if s.JOB_TITLE<>c.JOB_TITLE
    		print s.JOB_TITLE
    	if s.MIN_SALARY<>c.MIN_SALARY
    		print s.MIN_SALARY
    	if s.MAX_SALARY<>c.MAX_SALARY
    		print s.MAX_SALARY  
    	if s.JOB_REQUIREMENT<>c.JOB_REQUIREMENT
    		print s.JOB_REQUIREMENT
    	if s.LANGUAGE_REQ<>c.LANGUAGE_REQ
    		print s.LANGUAGE_REQ
       end
     end
    J'ai : ** QLI error: "C.JOB_TITLE" is undefined or used out of context **
    Pouvez vous me donner une solution pour comparer tous champs en même temps.

  15. #15
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    je désire afficher les informations résultantes dans un fichier texte. J'ai voulu utiliser l'une des commandes report ou list.
    La définition de la commande report est :
    report rse [ on ?lespec | to shell-command ]
    [ set report_name =value-expression ]
    [ set columns = n ]
    [ set lines = n ]
    [ at top of report [print] value-expression ]
    [ at bottom of report [print] value-expression ]
    [ at top of page [print] value-expression ]
    [ at top of database-?eld print value-expression ]...
    [ at bottom of database-?eld print value-expression ]...
    end_report [ on ?lespec | to shell-command ]

    J'ai ecrit ce script :
    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
     
    set character set ISO8859_1
    ready localhost:c:\work\basetests\BASE1.FDB as src user 'sysdba' password 'masterkey' 
    ready localhost:c:\work\basetests\BASE2.FDB as tgt user 'sysdba' password 'masterkey' 
     
    report 
     (for s in tgt.SP_SPECIALITE
      begin
       if not any c in src.SP_SPECIALITE with 
       ( s.SP_CODE_SQ_PK=c.SP_CODE_SQ_PK )
    	print s.SP_CODE_SQ_PK
      end 
     )
    on 'c:\rpt_spe.txt'
    set columns = 75
    set lines = 55
    set report_name = 'SPECIALITES AJOUTEES'
    at top of s.SP_CODE_SQ_PK print CODE
    print s.SP_NOM
    end_report
    mais ca n'a pa marché. Est ce que vous pouvez m'aider sur ce point.

  16. #16
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    bon juste pour vous informer que le problème est résolu. Le problème consistait qu'il existe une UDF dans les 2 bases qui s'appelle c.
    Juste un point à eclaircir, est que QLI supporte la comparaison des champs BLOB car j'en ai beaucoup dans ma base et lorsque j'exécute le script de comparaison :
    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
     
    FOR t1 IN src.ATR_AVISCOMMISSIONTRANSPARENCE
    begin 
     FOR t2 IN tgt.ATR_AVISCOMMISSIONTRANSPARENCE WITH (t1.ATR_CODE_SQ_PK=t2.ATR_CODE_SQ_PK)
     begin
    IF (t1.ATR_TITRE <> t2.ATR_TITRE) print  t2.ATR_CODE_SQ_PK,t1.ATR_TITRE,t2.ATR_TITRE on 'c:\difTheri.txt'
     
        IF (t1.ATR_DATE_REDACTION <> t2.ATR_DATE_REDACTION) print t2.ATR_CODE_SQ_PK,t1.ATR_DATE_REDACTION,t2.ATR_DATE_REDACTION on 'c:\difTheri.txt'
     
        IF (t1.ATR_DATECR <> t2.ATR_DATECR) print t2.ATR_CODE_SQ_PK,t1.ATR_DATECR,t2.ATR_DATECR on 'c:\difTheri.txt'
     
        IF (t1.ATR_DATEMJ <> t2.ATR_DATEMJ) print t2.ATR_CODE_SQ_PK,t1.ATR_DATEMJ,t2.ATR_DATEMJ on 'c:\difTheri.txt'
     
        IF (t1.ATR_TEXTE <> t2.ATR_TEXTE) print t2.ATR_CODE_SQ_PK,t1.ATR_TEXTE,t2.ATR_TEXTE on 'c:\difTheri.txt'
     end
    end
    j'ai ce message :
    ** QLI error: BLOB conversion is not supported **
    Je vous remercie pour votre aide préciseuse.

  17. #17
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    Bjr Mackowski, je suis bloqué sur 2 pt :
    1)Comment insérer un saut de ligne dans la commande print de qli.
    2)Est ce que vraiment qli ne supporte pas la comparaison des champs BLOB.
    Merci d'avance.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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