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

SQL Firebird Discussion :

Erreur "Token unknown insert" sur commande sql


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Erreur "Token unknown insert" sur commande sql
    Bonjour à tous,

    J'ai ce code sql
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    insert into red (cas,dat,clt,fou,dep,rec,des)
    with c as (
    select 2 as cas,DAT,null as clt,ANA as fou,null as rec,VER as dep,(select first 1 desf from ach a where (a.ANA=p.ANA)) as des  from PAF p where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0))
    union all 
    select 2 as cas,DAT,ANA as clt,null as fou,VER as rec,null as dep,(select first 1 descl from ven v where (v.ANA=p.ANA)) as des from PAC P where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0)) 
    ) select * from c;


    que j'ai voulu améliorer pour réduire la durée d'exection qui est à peu prés dans les 30 secondes. Alors j'ai modifié le code comme ceci
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with c as 
    (select ana,desf from ach)
    insert into red (cas,dat,clt,fou,dep,rec,des)
    with c as (
    select 2 as cas,DAT,null as clt,ANA as fou,null as rec,VER as dep,(select desf from c a where (a.ANA=p.ANA)) as des  from PAF p where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0))
    union all 
    select 2 as cas,DAT,ANA as clt,null as fou,VER as rec,null as dep,(select desf from c v where (v.ANA=p.ANA)) as des from PAC P where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0)) 
    ) select * from c;

    mais le code ne s'exécute pas , il signale erreur "Token unknown insert"

  2. #2
    Expert éminent sénior
    bonsoir,

    Deux CTE portent le même nom "c"

    Et aussi, l'absence d'espace après les virgules peuvent parfois causer des erreurs

    Les retours à la ligne n'étant pas facturés, il est bon de les utiliser, ça facilite la lecture et la maintenance des requêtes

  3. #3
    Membre régulier
    bonjour,
    faute de frappe.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    with a as 
    (select ana,desf from ach)
     
    insert into red (cas,dat,clt,fou,dep,rec,des)
    with c as (
    select 2 as cas,DAT,null as clt,ANA as fou,null as rec,VER as dep,(select desf from a a where (a.ANA=p.ANA)) as des  from PAF p where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0))
    union all 
    select 2 as cas,DAT,ANA as clt,null as fou,VER as rec,null as dep,(select desf from a v where (v.ANA=p.ANA)) as des from PAC P where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0)) 
    ) select * from c;

    toujours la même erreur.

  4. #4
    Rédacteur/Modérateur

    Bonjour,

    Déjà j'aurai mis la CTE avant le insert
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with c as (
    select 2 as cas,DAT,null as clt,ANA as fou,null as rec,VER as dep,(select first 1 desf from ach a where (a.ANA=p.ANA)) as des  from PAF p where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0))
    union all 
    select 2 as cas,DAT,ANA as clt,null as fou,VER as rec,null as dep,(select first 1 descl from ven v where (v.ANA=p.ANA)) as des from PAC P where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0)) 
    )
    insert into red (cas,dat,clt,fou,dep,rec,des) SELECT * FROM C


    de plus un ((VER>0)or(VER<0)) n'est-ce pas un VER<>0



    Ensuite je suis loin d'être un fan des select imbriqués ni d'un first 1 surtout lorsqu'il n'y a pas de clause ORDER BY , à mon avis d'autres CTE et des jointures seraient mieux
    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
     
    with 
    ac as (SELECT ANA,MAX(DESF) desf FROM ACH GROUP BY ANA), 
    ve as (SELECT ANA,MAX(DESCL) desf FROM VEN GROUP BY ANA),
    c as (select 2 as cas,p.DAT,null as clt,p.ANA as fou,null as rec,p.VER as dep,ac.desf des 
           from PAF p 
           LEFT JOIN ac on ac.ANA=p.Ana 
           where p.ANA<>'00000' and p.MOP='ESPECE' and VER<>0
    union all 
           select 2 as cas,v.DAT,v.ANA as clt,null as fou,v.VER as rec,null as dep,ve.descl des
           from ven v 
           left join ve on v.ANA=ve.ANA 
           where v.ANA<>'00000' and v.MOP='ESPECE' and v.VER<>0 
    )
    insert into red (cas,dat,clt,fou,dep,rec,des) SELECT * FROM C

    Tout cela en espérant que des index aient été créés pour, je cite "pour réduire la durée d'execution"

    Cela étant sans description des tables (comme d'habitude on n'a que le quart des informations ) ...
    Je trouve qu'un code, certainement analytique ne soit pas dans une table et, étrange de devoir aller à la pêche de la désignation dans les tables VEN(tes) et ACH(ats) !
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Expert éminent sénior
    Toujours pas d'effort de mise en forme des requêtes et il y des parenthèses inutiles.
    Tout ça ne donne pas beaucoup envie de vous aider.

    Cela étant, êtes vous certain que les requêtes imbriquées ne produisent qu'un seul résultat ?
    Je plussoie quand au test and (VER>0 or VER<0).

    Voici ce que j'appelle une requête mise en forme

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    with a as 
        (select ana
              , desf 
         from ach
        )
     
    insert into red 
          (cas, 
           dat,
           clt,
           fou,
           dep,
           rec,
           des
          )
     
    with c as 
        (select 2 as cas
              , DAT
              , null as clt
              , ANA as fou
              , null as rec
              , VER as dep
              , (select desf 
                 from a a 
                 where a.ANA=p.ANA
                ) as des 
         from PAF p 
         where ANA<>'00000' 
           and MOP='ESPECE' 
           and (VER>0 or VER<0)
     
         union all
     
         select 2 as cas
              , DAT
              , ANA as clt
              , null as fou
              , VER as rec
              , null as dep
              , (select desf 
                 from a v 
                 where v.ANA=p.ANA
                ) as des 
         from PAC P 
         where ANA<>'00000' 
           and MOP='ESPECE' 
           and (VER>0 or VER<0)
         ) 
    select * from c;

  6. #6
    Membre régulier
    Bonjour,
    sergio,
    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
     
    with 
    ac as (SELECT ANA,MAX(DESF) desf FROM ACH GROUP BY ANA), 
    ve as (SELECT ANA,MAX(DESCL) desf FROM VEN GROUP BY ANA),
    c as (select 2 as cas,p.DAT,null as clt,p.ANA as fou,null as rec,p.VER as dep,ac.desf des 
           from PAF p 
           LEFT JOIN ac on ac.ANA=p.Ana 
           where p.ANA<>'00000' and p.MOP='ESPECE' and VER<>0
    union all 
           select 2 as cas,v.DAT,v.ANA as clt,null as fou,v.VER as rec,null as dep,ve.descl des
           from ven v 
           left join ve on v.ANA=ve.ANA 
           where v.ANA<>'00000' and v.MOP='ESPECE' and v.VER<>0 
    )
    insert into red (cas,dat,clt,fou,dep,rec,des) SELECT * FROM C


    DESF est varchar.
    Et même en modifiant votre proposition comme ceci
    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
     
    with 
    ac as (SELECT ANA,DESF FROM ACH GROUP BY ANA,DESF), 
    ve as (SELECT ANA,DESCL FROM VEN GROUP BY ANA,DESCL),
    c as (select 2 as, cas,p.DAT,null as clt,p.ANA as fou,null as rec,p.VER as dep,ac.desf des 
           from PAF p 
           LEFT JOIN ac on ac.ANA=p.Ana 
           where p.ANA<>'00000' and p.MOP='ESPECE' and VER<>0
    union all 
           select 2 as cas,v.DAT,v.ANA as clt,null as fou,v.VER as rec,null as dep,ve.descl des
           from ven v 
           left join ve on v.ANA=ve.ANA 
           where v.ANA<>'00000' and v.MOP='ESPECE' and v.VER<>0 
    )
    insert into red (cas,dat,clt,fou,dep,rec,des) SELECT * FROM C

    il signale toujours la même erreur.


    escartefigue , pareil le même message.

  7. #7
    Modérateur

    Ligne 5 : select 2 as, cas, sera certainement mal compris par l'interpréteur.

    Y a-t-il un code attaché à ce message d'erreur ?
    Que dit la documentation sur ce code d'erreur ?
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  8. #8
    Rédacteur/Modérateur

    Citation Envoyé par chekkal Voir le message

    DESF est varchar.
    Et alors ? rien n'empêche de faire un MAX sur des varchars

    Et même en modifiant votre proposition comme ceci
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    with 
    ac as (SELECT ANA,DESF FROM ACH GROUP BY ANA,DESF), 
    ...

    Surtout pas ou alors c'est que votre First 1 ne sert à rien


    il signale toujours la même erreur.
    escartefigue , pareil le même message.
    [MODE :furax:]
    Comme bien sûr vous nous avez fourni la structure des tables, il nous est forcément très facile de comprendre
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  9. #9
    Membre régulier
    Surtout pas ou alors c'est que votre First 1 ne sert à rien
    voila le test avec flamrobin

  10. #10
    Rédacteur/Modérateur

    Bonjour,

    je vous ai demandé la structure des tables pour pouvoir faire un test, pas une image écran de flamerobin !
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  11. #11
    Membre régulier
    voila la structure des tables
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    CREATE TABLE ACH
    (
      CAS Integer NOT NULL,
      DAT Date NOT NULL,
      FAC Varchar(30) NOT NULL,
      ORD Integer NOT NULL,
      ANA Varchar(20) CHARACTER SET ISO8859_1,
      MAT Varchar(20) CHARACTER SET ISO8859_1,
      PRO Varchar(20) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      QTE Numeric(14,5),
      MHT Numeric(14,2),
      COI Integer,
      PER Integer,
      DAP Date,
      CHA Varchar(255) CHARACTER SET ISO8859_1,
      IMA Varchar(35) CHARACTER SET ISO8859_1,
      MON Numeric(14,2),
      OBS Varchar(255) CHARACTER SET ISO8859_1,
      PUA Numeric(14,5),
      COIR Integer,
      DESF Varchar(200) CHARACTER SET ISO8859_1,
      MTB Numeric(14,5),
      TAU Numeric(14,2),
      TVA Numeric(14,5),
      TRE Numeric(14,2),
      REM Numeric(14,5),
      UTI Varchar(50),
      COID Integer,
      COIF Integer,
      PUDEV Numeric(14,6),
      TAUXC Numeric(14,6),
      FRATRANS Numeric(14,6),
      FRADOU Numeric(14,6),
      FRAMAN Numeric(14,6),
      FRAAUT Numeric(14,6),
      DEVISE Varchar(15),
      FRATRANSP Numeric(14,6),
      PRIMARY KEY (CAS,DAT,FAC,ORD)
    );
     
    CREATE TABLE RED
    (
      CAS Integer NOT NULL,
      DAT Date NOT NULL,
      ORD Integer NOT NULL,
      CLT Varchar(10) CHARACTER SET ISO8859_1,
      FOU Varchar(10) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      REC Numeric(14,2),
      DEP Numeric(14,2),
      SOL Numeric(14,2),
      PRIMARY KEY (CAS,DAT,ORD)
    );


    cependant je pense pas que l'erreur signalé a une relation avec la structure de la base de données

  12. #12
    Rédacteur/Modérateur

    je ne pense pas que l'erreur signalée a une relation avec la structure de la base de données
    Ce n'est pas pour contrôler la structure mais pour pouvoir faire des tests que je vous ai demandé la structure d'ailleurs j'ai l'impression qu'il en manque je compte 5 tables dans les requêtes

    ACH, VEN, PAF, VEN et RED et vous ne fournissez que ACH et RED
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  13. #13
    Membre régulier
    désolé, voila le reste
    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
    36
    37
    38
    39
    40
    41
    CREATE TABLE PAF
    (
      CAS Integer NOT NULL,
      DAT Date NOT NULL,
      ANA Varchar(20) NOT NULL,
      FAC Varchar(20) NOT NULL,
      ORD Integer NOT NULL,
      DEP Numeric(14,2),
      MON Numeric(14,2),
      VER Numeric(14,2),
      RES Numeric(14,2),
      DES Varchar(255) CHARACTER SET ISO8859_1,
      MOP Varchar(30) CHARACTER SET ISO8859_1,
      DAC Date,
      MTB Numeric(14,2),
      TVA Numeric(14,5),
      REM Numeric(14,5),
      TIM Numeric(14,5),
      PRIMARY KEY (CAS,DAT,ANA,FAC,ORD)
    );
    CREATE TABLE PAC
    (
      CAS Integer NOT NULL,
      DAT Date NOT NULL,
      ANA Varchar(20) NOT NULL,
      FAC Varchar(20) NOT NULL,
      ORD Integer NOT NULL,
      DEP Numeric(14,2),
      MON Numeric(14,2),
      VER Numeric(14,2),
      RES Numeric(14,2),
      DES Varchar(255) CHARACTER SET ISO8859_1,
      MOP Varchar(30) CHARACTER SET ISO8859_1,
      DAC Date,
      MTB Numeric(14,2),
      TVA Numeric(14,5),
      REM Numeric(14,5),
      TIM Numeric(14,5),
      BEN Numeric(14,2),
      PRIMARY KEY (CAS,DAT,ANA,FAC,ORD)
    );

  14. #14
    Rédacteur/Modérateur

    Et il manque encore la table VEN, franchement il faut y mettre du vôtre !
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  15. #15
    Expert éminent sénior
    Belle abnégation Sergio et même pas un vote pour encourager cette bonne volonté, c'est décourageant parfois cette ingratitude

  16. #16
    Membre régulier
    Mille désolé , voila la table ven
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    CREATE TABLE VEN
    (
      DAT Date NOT NULL,
      BON Varchar(20) CHARACTER SET ISO8859_1 NOT NULL,
      ORD Integer NOT NULL,
      ANA Varchar(20) CHARACTER SET ISO8859_1,
      PRO Varchar(20) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      QTE Numeric(14,5),
      PUV Numeric(18,6),
      MHT Numeric(14,2),
      COI Smallint,
      CDR Numeric(14,5),
      BEN Numeric(14,2),
      FAC Varchar(20) CHARACTER SET ISO8859_1,
      HEU Timestamp,
      DEN Numeric(14,5),
      OBS Varchar(255) CHARACTER SET ISO8859_1,
      UME Varchar(30),
      ED1 Numeric(14,4),
      ED2 Numeric(14,4),
      ED3 Numeric(14,4),
      QTP Numeric(14,5),
      PUA Numeric(14,5),
      QTD Numeric(14,5),
      QTR Numeric(14,5),
      DAP Date,
      COIR Integer,
      DESCL Varchar(200) CHARACTER SET ISO8859_1,
      CHA Varchar(30),
      IMA Varchar(15),
      MTB Numeric(14,5),
      TAU Numeric(14,2),
      TVA Numeric(14,5),
      TRE Numeric(14,2),
      REM Numeric(14,5),
      UTI Varchar(50),
      COID Integer,
      COIF Integer,
      MHTR Numeric(18,6),
      CLTLIV Char(1),
      CPUV Char(1),
      PRIMARY KEY (DAT,BON,ORD)
    );


    Et je vous doit une explication sur
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    )and((VER>0)or(VER<0)

    A première vu, c'est plus simple de mettre
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    )and((VER<>0)


    mais cette base de données contient des valeurs nulles c'est pour ça que j'ai fait
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    )and((VER>0)or(VER<0)
    et j'aurais même pu faire comme ça
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    )and((VER<>0)and(VER is not null)

    mais enfin c'est pas ça le problème.

  17. #17
    Rédacteur/Modérateur

    Citation Envoyé par chekkal Voir le message

    Et je vous doit une explication sur
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    )and((VER>0)or(VER<0)

    A première vue, c'est plus simple de mettre
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    )and((VER<>0)


    mais cette base de données contient des valeurs nulles c'est pour ça que j'ai fait
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    )and((VER>0)or(VER<0)
    et j'aurais même pu faire comme ça
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    )and((VER<>0)and(VER is not null)

    mais enfin c'est pas ça le problème.
    Et bien sûr COALESCE ne vous a pas effleuré l'esprit ?

    finalement ce SQL
    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
     
    INSERT INTO RED(cas,dat,clt,fou,dep,rec,des) 
    with 
    ac as (SELECT ANA,MAX(DESF) desf FROM ACH GROUP BY ANA), 
    ve as (SELECT ANA,MAX(DESCL) descl FROM VEN GROUP BY ANA),
    c as (select 2 as cas,p.DAT,null as clt,p.ANA as fou,null as rec,p.VER as dep,ac.desf des 
           from PAF p 
           LEFT JOIN ac on ac.ANA=p.Ana 
           where p.ANA<>'00000' and p.MOP='ESPECE' and COALESCE(p.VER,0)<>0
    union all 
           select 2 as cas,v.DAT,v.ANA as clt,null as fou,NULL ,null as dep,ve.descl des
           from PAC v 
           left join ve on v.ANA=ve.ANA 
           where v.ANA<>'00000' and v.MOP='ESPECE' and COALESCE(v.VER,0)<>0 
    ) SELECT * FROM C

    Fonctionne, du moins la syntaxe en est acceptée, je suis toutefois étonné d'avoir été obligé de mettre la CTE après le insert cela écrit ce test a été effectué avec FB3.
    A ce propos, comme d'babitude, vous n'avez pas fourni l'information de version Firebird !
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  18. #18
    Membre régulier
    Bonjour,
    je suis sur FB 2.5, pour votre code il signale pas d'erreur, mais il se plante, ça fait 2 MINUTE QUE J'ATTEND.

  19. #19
    Rédacteur/Modérateur

    En voilà assez du moins pour moi si
    pour votre code il signale pas d'erreur,

    alors mon objectif est atteint, comme il a fallu pour obtenir de quoi vérifier pas moins de 3 messages ma coupe est pleine.

    Pour ce qui est du temps d'exécution :

    1 - Je n'ai pas vos données
    2 - S'il n'y a aucun index autres que la clé primaire cela ne doit pas vraiment aider
    3 - Rien n'indique "qu'il se plante" et si vous attendez depuis 2 minutes c'est peut-être aussi à cause de votre structure de base de données où, à tout le moins du traitement que vous voulez faire, à moins, bien sûr qu'il n'y ait des tuples, ce qui ne m'étonnerait pas, au niveau des tables

    récupérer une désignation de cette manière (select first 1 descl from ven v where (v.ANA=p.ANA)) as des from PAC P where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0)) est pour moi une absurdité surtout sans clause ORDER BY ou alors c'est qu'il y a de fortes redondances dans vos tables,
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  20. #20
    Membre régulier
    Ah bon, quelque chose ma échappée.

    MA QUESTION PREMIERE ETE

    j'ai voulu améliorer pour réduire la durée d'exécution qui est à peu prés dans les 30 secondes. Alors j'ai modifié le code comme ceci
    C'est vrai que vous m'avez donné un code correcte mais il règle pas mon problème.

###raw>template_hook.ano_emploi###