1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Trigger hfsql CS

Discussion dans 'Base de donnés & HFSQL' créé par elghyati, Mar 29, 2018.

  1. elghyati

    elghyati Member

    Inscrit:
    Jan 2, 2018
    Messages:
    56
    J'aime reçus:
    7
    Salut ,
    qq un pourrait expliquer les trigger HFSQL CS avec des cas réels et des exemples.
    merci avant
     
  2. gapplicat

    gapplicat Well-Known Member
    MEMBRE WX

    Inscrit:
    Mar 8, 2018
    Messages:
    399
    J'aime reçus:
    708
    Essaye ça :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    joker apprécie ceci.
  3. gapplicat

    gapplicat Well-Known Member
    MEMBRE WX

    Inscrit:
    Mar 8, 2018
    Messages:
    399
    J'aime reçus:
    708
    C'est le même lien que le mien :eek:
     
    suenodesign apprécie ceci.
  4. elghyati

    elghyati Member

    Inscrit:
    Jan 2, 2018
    Messages:
    56
    J'aime reçus:
    7

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Essaye ça :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Cliquez pour agrandir...
    Merci mais avec paiement
     
  • Mauritius

    Mauritius Member

    Inscrit:
    Fev 10, 2018
    Messages:
    74
    J'aime reçus:
    70
    Que cherches tu exactement avec les triggers ?
    La doc PC-Soft donne de bonnes directions !
    Explique !
    Moi je l'utilise pour mettre à jour chaque enregistrement dans tout fichier de ma BDD (Date et heure de mise à jour, utilisateur, IP, PC-Name)
    Le champ d'application est très vaste.
    A toi de jouer !
     
  • elghyati

    elghyati Member

    Inscrit:
    Jan 2, 2018
    Messages:
    56
    J'aime reçus:
    7

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Que cherches tu exactement avec les triggers ?
    La doc PC-Soft donne de bonnes directions !
    Explique !
    Moi je l'utilise pour mettre à jour chaque enregistrement dans tout fichier de ma BDD (Date et heure de mise à jour, utilisateur, IP, PC-Name)
    Le champ d'application est très vaste.


    mais comment SVP?
    meci avant
    Cliquez pour agrandir...
     
  • elghyati

    elghyati Member

    Inscrit:
    Jan 2, 2018
    Messages:
    56
    J'aime reçus:
    7
    SALUT,
    J’explique


    Je veux utiliser les trigger pour mise à jour des stocks, par exemple :

    J’ai un bon de livraison avec maitre et détails.

    Dans le cas d’ajouter un nouveau BL :

    qté de stock d’un article = qté existe d’un article – qte BL

    Dans le cas de modification un BL :

    Avant modification :

    qté de stock d’un article = qté existe d’un article + qte BL

    Après modification :

    qté de stock d’un article = qté existe d’un article - qte BL

    Question :

    Comment appliquer les trigger pour obtenir même résultats ?

    Comment récupérer le N° d’article pour utiliser dans trigger ?
     
  • aminej76

    aminej76 Active Member
    MEMBRE WX

    Inscrit:
    Jan 23, 2018
    Messages:
    283
    J'aime reçus:
    102

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Base de donnée classique ou HFSQL CS ?
     
    elghyati apprécie ceci.
  • aminej76

    aminej76 Active Member
    MEMBRE WX

    Inscrit:
    Jan 23, 2018
    Messages:
    283
    J'aime reçus:
    102
    Pour le cas Ajout et suppression ligne BL

    Code (Text):
    PROCEDURE PS_BON_LIVRAISON_COM_MAJ_STOCK()



    QUAND EXCEPTION DANS
       
        SI PAS HFichierExiste(ARTICLE_STOCK) ALORS
            SI PAS HDéclareExterne("ARTICLE_STOCK.FIC", "ARTICLE_STOCK") ALORS
                RENVOYER Faux
            FIN
        FIN
       
       
        SELON Majuscule(H.Action)
            CAS "A"  // Trigger Avant
               
                SELON Majuscule(H.FonctionTrigger)
                    CAS "HAJOUTE"
                       
                    CAS "HMODIFIE"
                       
                    CAS "HSUPPRIME"
                       
                FIN
            CAS "P"  // Trigger Avant
               
                SELON Majuscule(H.FonctionTrigger)
                    CAS "HAJOUTE"
                        HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{MonFichier+".COD_ART"},hBlocageEcriture)
                        SI HTrouve() ALORS
                            SI ARTICLE_STOCK.SANS_STOCK = Faux ALORS
                                ARTICLE_STOCK.QT_VEN += {MonFichier+".QT"}
                                ARTICLE_STOCK.ST_PHY  -= {MonFichier+".QT"}
                                ARTICLE_STOCK.QT_SORT  += Abs({MonFichier+".QT"})
                               
                                HModifie(ARTICLE_STOCK)
                            FIN
                        SINON
                            GOTO FIN_TRAIT
                        FIN
                       
                       
                    CAS "HSUPPRIME"
                        HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{MonFichier+".COD_ART"},hBlocageEcriture)
                        SI HTrouve() ALORS
                            SI ARTICLE_STOCK.SANS_STOCK = Faux ALORS
                                ARTICLE_STOCK.QT_VEN -= {MonFichier+".QT"}
                                ARTICLE_STOCK.ST_PHY  += {MonFichier+".QT"}
                                ARTICLE_STOCK.QT_SORT  -= Abs({MonFichier+".QT"})
                               
                                HModifie(ARTICLE_STOCK)
                            FIN
                        SINON
                            GOTO FIN_TRAIT
                        FIN
                       
                FIN  
        FIN      
       
       
    FAIRE
        FIN_TRAIT:
        pLogErreur("PS_BON_LIVRAISON_COM_MAJ_STOCK")
        HModifie(ECHEC)
    FIN

     
     

    Fichiers attachés:

    • 01.png
      01.png
      Taille de fichier:
      28 KB
      Affichages:
      14
    • 02.png
      02.png
      Taille de fichier:
      36.3 KB
      Affichages:
      13
    elghyati apprécie ceci.
  • elghyati

    elghyati Member

    Inscrit:
    Jan 2, 2018
    Messages:
    56
    J'aime reçus:
    7

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Base de donnée classique ou HFSQL CS ?
    Cliquez pour agrandir...
    Base de donnée HFSL CS
     
  • elghyati

    elghyati Member

    Inscrit:
    Jan 2, 2018
    Messages:
    56
    J'aime reçus:
    7

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Pour le cas Ajout et suppression ligne BL

    Code (Text):
    PROCEDURE PS_BON_LIVRAISON_COM_MAJ_STOCK()



    QUAND EXCEPTION DANS
     
        SI PAS HFichierExiste(ARTICLE_STOCK) ALORS
            SI PAS HDéclareExterne("ARTICLE_STOCK.FIC", "ARTICLE_STOCK") ALORS
                RENVOYER Faux
            FIN
        FIN
     
     
        SELON Majuscule(H.Action)
            CAS "A"  // Trigger Avant
             
                SELON Majuscule(H.FonctionTrigger)
                    CAS "HAJOUTE"
                     
                    CAS "HMODIFIE"
                     
                    CAS "HSUPPRIME"
                     
                FIN
            CAS "P"  // Trigger Avant
             
                SELON Majuscule(H.FonctionTrigger)
                    CAS "HAJOUTE"
                        HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{MonFichier+".COD_ART"},hBlocageEcriture)
                        SI HTrouve() ALORS
                            SI ARTICLE_STOCK.SANS_STOCK = Faux ALORS
                                ARTICLE_STOCK.QT_VEN += {MonFichier+".QT"}
                                ARTICLE_STOCK.ST_PHY  -= {MonFichier+".QT"}
                                ARTICLE_STOCK.QT_SORT  += Abs({MonFichier+".QT"})
                             
                                HModifie(ARTICLE_STOCK)
                            FIN
                        SINON
                            GOTO FIN_TRAIT
                        FIN
                     
                     
                    CAS "HSUPPRIME"
                        HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{MonFichier+".COD_ART"},hBlocageEcriture)
                        SI HTrouve() ALORS
                            SI ARTICLE_STOCK.SANS_STOCK = Faux ALORS
                                ARTICLE_STOCK.QT_VEN -= {MonFichier+".QT"}
                                ARTICLE_STOCK.ST_PHY  += {MonFichier+".QT"}
                                ARTICLE_STOCK.QT_SORT  -= Abs({MonFichier+".QT"})
                             
                                HModifie(ARTICLE_STOCK)
                            FIN
                        SINON
                            GOTO FIN_TRAIT
                        FIN
                     
                FIN
        FIN    
     
     
    FAIRE
        FIN_TRAIT:
        pLogErreur("PS_BON_LIVRAISON_COM_MAJ_STOCK")
        HModifie(ECHEC)
    FIN

     
    Cliquez pour agrandir...
    Merci bq
     
  • warjoen

    warjoen Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    155
    J'aime reçus:
    120
    Server Trigger (HFSQL CS) for the addition and deletion process there is no problem, but to edit the record I also have problems.
    for example I have a table stock (code: 1, name: A, qty: 5)
    table buying (code: 1, qty: 2)
    when I edit record buying qty from 2 to 4
    i want final stock.qty = initial stock.qty - 2 (initial buying.qty) + 4 (buying.qty after update) so the value
    stock.qty = 5 - 2 + 4 = 7

    please who can help me with example program ....
    Thanks
     
  • aminej76

    aminej76 Active Member
    MEMBRE WX

    Inscrit:
    Jan 23, 2018
    Messages:
    283
    J'aime reçus:
    102
    Code (Text):

    PROCEDURE PS_BON_LIVRAISON_COM_MAJ_STOCK()



    SI PAS HFichierExiste(ARTICLE_STOCK) ALORS
        SI PAS HDéclareExterne("ARTICLE_STOCK.FIC", "ARTICLE_STOCK") ALORS
            RENVOYER Faux
        FIN
    FIN

    QUAND EXCEPTION DANS
       
        SELON Majuscule(H.Action)
            CAS "A"  // Trigger Avant
                // Selon la fonction appelante
                SELON Majuscule(H.FonctionTrigger)
                    CAS "HAJOUTE"
                       
                       
                        DEBUT:
                        HLitRecherchePremier(ARTICLE_STOCK,COD_ART,BON_LIVRAISON_COM.COD_ART,hBlocageEcriture)
                        SI HTrouve() ALORS
                            // TRAITEMENT

                            HModifie( ARTICLE_STOCK)
                           
                        SINON
                            GOTO FIN_TRAIT
                        FIN
                    CAS "HMODIFIE"
                        _alias_PS  est une Source de Données
                        _rub_cle_unique est une chaîne="ID_LIGNE"
                       
                       
                        HAlias_alias_PS
                        HChangeNom( _alias_PS  ,MonFichier..Nom)
                       
                        HLitRecherchePremier( _alias_PS  ,_rub_cle_unique,{MonFichier+"."+_rub_cle_unique})
                        SI HTrouve() ALORS
                           
                            SI { _alias_PS  +".COD_ART"} <> BON_LIVRAISON_COM.COD_ART OU { _alias_PS  +".QT"} <> BON_LIVRAISON_COM.QT  ALORS
                               
                                HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{ _alias_PS  +".COD_ART"},hBlocageEcriture)
                                SI HTrouve() ALORS
                                    // TRAITEMENT

                                            HModifie( ARTICLE_STOCK)
                                SINON
                                    GOTO FIN_TRAIT
                                FIN
                               
                                GOTO DEBUT
                            FIN
                        SINON
                            GOTO FIN_TRAIT
                        FIN
                        HAnnuleAlias( _alias_PS  )
                    CAS "HSUPPRIME"
                FIN
               
        FIN      
       
       
    FAIRE
        FIN_TRAIT:
        HModifie(ECHEC)
    FIN










     
     
  • gapplicat

    gapplicat Well-Known Member
    MEMBRE WX

    Inscrit:
    Mar 8, 2018
    Messages:
    399
    J'aime reçus:
    708
    A mon avis, l'utilisation des triggers pour une gestion de stock n'est pas la bonne voie....
    Tu devrais plutôt opter pour une procédure genre MAJSTOCK() que tu appelle en sortie de tes fenêtres concernées...
    Ce système te permettra de recalculer le stock quand tu le souhaite et pas seulement lors de ajout/suppression/modif d'un fichier.
     
  • warjoen

    warjoen Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    155
    J'aime reçus:
    120

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Code (Text):

    PROCEDURE PS_BON_LIVRAISON_COM_MAJ_STOCK()



    SI PAS HFichierExiste(ARTICLE_STOCK) ALORS
        SI PAS HDéclareExterne("ARTICLE_STOCK.FIC", "ARTICLE_STOCK") ALORS
            RENVOYER Faux
        FIN
    FIN

    QUAND EXCEPTION DANS
       
        SELON Majuscule(H.Action)
            CAS "A"  // Trigger Avant
                // Selon la fonction appelante
                SELON Majuscule(H.FonctionTrigger)
                    CAS "HAJOUTE"
                       
                       
                        DEBUT:
                        HLitRecherchePremier(ARTICLE_STOCK,COD_ART,BON_LIVRAISON_COM.COD_ART,hBlocageEcriture)
                        SI HTrouve() ALORS
                            // TRAITEMENT

                            HModifie( ARTICLE_STOCK)
                           
                        SINON
                            GOTO FIN_TRAIT
                        FIN
                    CAS "HMODIFIE"
                        _alias_PS  est une Source de Données
                        _rub_cle_unique est une chaîne="ID_LIGNE"
                       
                       
                        HAlias_alias_PS
                        HChangeNom( _alias_PS  ,MonFichier..Nom)
                       
                        HLitRecherchePremier( _alias_PS  ,_rub_cle_unique,{MonFichier+"."+_rub_cle_unique})
                        SI HTrouve() ALORS
                           
                            SI { _alias_PS  +".COD_ART"} <> BON_LIVRAISON_COM.COD_ART OU { _alias_PS  +".QT"} <> BON_LIVRAISON_COM.QT  ALORS
                               
                                HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{ _alias_PS  +".COD_ART"},hBlocageEcriture)
                                SI HTrouve() ALORS
                                    // TRAITEMENT

                                            HModifie( ARTICLE_STOCK)
                                SINON
                                    GOTO FIN_TRAIT
                                FIN
                               
                                GOTO DEBUT
                            FIN
                        SINON
                            GOTO FIN_TRAIT
                        FIN
                        HAnnuleAlias( _alias_PS  )
                    CAS "HSUPPRIME"
                FIN
               
        FIN      
       
       
    FAIRE
        FIN_TRAIT:
        HModifie(ECHEC)
    FIN
     
    Cliquez pour agrandir...
    Thanks

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , I will try...
     
  • warjoen

    warjoen Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    155
    J'aime reçus:
    120

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    A mon avis, l'utilisation des triggers pour une gestion de stock n'est pas la bonne voie....
    Tu devrais plutôt opter pour une procédure genre MAJSTOCK() que tu appelle en sortie de tes fenêtres concernées...
    Ce système te permettra de recalculer le stock quand tu le souhaite et pas seulement lors de ajout/suppression/modif d'un fichier.
    Cliquez pour agrandir...

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , it can use the procedure as you mean, just according to me by using Server Trigger, we stock will real time update and reduce the data traffic
     
  • elghyati

    elghyati Member

    Inscrit:
    Jan 2, 2018
    Messages:
    56
    J'aime reçus:
    7

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    A mon avis, l'utilisation des triggers pour une gestion de stock n'est pas la bonne voie....
    Tu devrais plutôt opter pour une procédure genre MAJSTOCK() que tu appelle en sortie de tes fenêtres concernées...
    Ce système te permettra de recalculer le stock quand tu le souhaite et pas seulement lors de ajout/suppression/modif d'un fichier.
    Cliquez pour agrandir...

    merci pour la reponse ,mais pourquoi les triggers pour une gestion de stock n'est pas la bonne voie?
     
  • elghyati

    elghyati Member

    Inscrit:
    Jan 2, 2018
    Messages:
    56
    J'aime reçus:
    7

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Code (Text):

    PROCEDURE PS_BON_LIVRAISON_COM_MAJ_STOCK()



    SI PAS HFichierExiste(ARTICLE_STOCK) ALORS
        SI PAS HDéclareExterne("ARTICLE_STOCK.FIC", "ARTICLE_STOCK") ALORS
            RENVOYER Faux
        FIN
    FIN

    QUAND EXCEPTION DANS
       
        SELON Majuscule(H.Action)
            CAS "A"  // Trigger Avant
                // Selon la fonction appelante
                SELON Majuscule(H.FonctionTrigger)
                    CAS "HAJOUTE"
                       
                       
                        DEBUT:
                        HLitRecherchePremier(ARTICLE_STOCK,COD_ART,BON_LIVRAISON_COM.COD_ART,hBlocageEcriture)
                        SI HTrouve() ALORS
                            // TRAITEMENT

                            HModifie( ARTICLE_STOCK)
                           
                        SINON
                            GOTO FIN_TRAIT
                        FIN
                    CAS "HMODIFIE"
                        _alias_PS  est une Source de Données
                        _rub_cle_unique est une chaîne="ID_LIGNE"
                       
                       
                        HAlias_alias_PS
                        HChangeNom( _alias_PS  ,MonFichier..Nom)
                       
                        HLitRecherchePremier( _alias_PS  ,_rub_cle_unique,{MonFichier+"."+_rub_cle_unique})
                        SI HTrouve() ALORS
                           
                            SI { _alias_PS  +".COD_ART"} <> BON_LIVRAISON_COM.COD_ART OU { _alias_PS  +".QT"} <> BON_LIVRAISON_COM.QT  ALORS
                               
                                HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{ _alias_PS  +".COD_ART"},hBlocageEcriture)
                                SI HTrouve() ALORS
                                    // TRAITEMENT

                                            HModifie( ARTICLE_STOCK)
                                SINON
                                    GOTO FIN_TRAIT
                                FIN
                               
                                GOTO DEBUT
                            FIN
                        SINON
                            GOTO FIN_TRAIT
                        FIN
                        HAnnuleAlias( _alias_PS  )
                    CAS "HSUPPRIME"
                FIN
               
        FIN      
       
       
    FAIRE
        FIN_TRAIT:
        HModifie(ECHEC)
    FIN










     
    Cliquez pour agrandir...


    Merci bq ,mais comment utiliser ? SVP explique un peut de détail
     
  • Partager cette page

    Chargement...