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

Schéma Discussion :

Maintenance de camions


Sujet :

Schéma

  1. #741
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Oui c'est pour ça que nous contrôlerons les aberrations mais nous pouvons aussi mettre en place un moyen d'autocorrection ou d'avertissements apparaissant à l'écran si les données sont carrément hors contexte… Disons si l'utilisateur ne place pas la virgule au bon endroit lorsqu'il entre des données dans la table FUEL_CONSUMPTION, la consommation moyenne d'un camion se situe en 4 Miles au gallon et 11 Miles au gallon… Si à la saisi des données on se retrouve avec 20 Miles au gallon ou 0.145 miles au gallons, il y a définitivement une erreur et nous pouvons la signaler à l'utilisateur et lui laisser la chance de corriger…. Le plus frustrant c'est d'entrer toutes les données dans un formulaire et en cliquant sur "OK" le formulaire se referme sans aucune données enregistrées dans la BD comme ça c'est produit avec DIFF_AXLE.... Aucun message d'erreur n'apparaissait à l'écran sur le site WEB par contre rien n'était enregistré dans la BD…. Si j'empêche une action à l'utilisateur ou si une donnée n'est pas enregistrée dans la BD, il faut que l'utilisateur sache pourquoi et il doit pouvoir corriger l'erreur sans être obligé de tout recommencer à entrer les données dans un formulaire. Il y a des choses que je pourrai contrôler directement dans les formulaires mais pour l'instant je vous laisse faire en sorte que SQL Server fasse son travail et pour les lacunes de SQL Server je pourrai contrôler ce que SQL Server ne pourra pas gérer… Ça ne servirait en rien de contrôler en JSCript ce que SQL Server est capable de faire lui-même….


    Citation Envoyé par fsmrel
    Par contre, quand dans telle banque le programme de calcul des agios comporte une parenthèse mal placée, quelques clients devront réellement payer 1000 fois plus que ce qu’ils doivent, et cette-fois ils ne se contenteront pas de hausser les épaules, ils exigeront que la banque s’explique au sujet de cette mauvaise plaisanterie et qu’elle rectifie le tir vite fait, avant d’être traînée devant les tribunaux. Pour moi, il s’agit d’une histoire vécue, j’avais effectué un audit du programme en question et découvert la parenthèse coupable (nichée au moins au 5e niveau), avec l’aide d’un actuaire. Cette fois-ci, la réalité, en l’occurrence le mensonge, était réputée être contenue dans la base de données ! Des audits dans les banques et assurances et autres organismes financiers j’en ai fait quelques uns, et révélé à chaque fois que la base de données contenait en moyenne 30% d’erreurs ! (bien souvent au détriment de l’entreprise...)

    Maintenant, pour en revenir à nos camions, si l’utilisateur se plante en valorisant la colonne HuileKm de la table HUILE_CHANGEMENT, son erreur deviendra la réalité, même chose dans le cas de la table FUEL_CONSUMPTION...
      0  0

  2. #742
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Bonjour Ordigil,


    Ce dimanche fut reposant (sieste, musique avec Félix Leclerc, Georges Brassens et ma guitare quinquagénaire...)


    Citation Envoyé par ordigil Voir le message
    La maintenance peut aussi inclure le changement du liquide de refroidissement, changement d'huile de la servo-direction, l'ajout de R-134A dans le système d'air climatisé…..en plus de ce que j'ai énuméré auparavant…. Donc pour la table HUILE_CHANGEMENT reliée à la table COMPOSANT doit rester tel qu'elle est mais il y a d'autre changements d'huile ou liquide à inclure dans la MAINTENANCE…. Peut importe la façon dont vous créez les choses, c'est le résultat final qui est important, ce que l'utilisateur verra, pour le côté technique, on fait comme depuis le début, rester le plus fidèle possible à Merise et au Standard SQL…. Que l'on prenne 2 tables, 3 tables ou 10 tables pour arriver au résultat que l'on recherche n'est pas important si à la fin on réunit le tout dans une seule vue source et au pire que je triche un peu pour tout inclure dans un seule formulaire source qui peut inclure des sous-formulaires... L'important c'est que pour l'utilisateur, peut importe la maintenance effectuée ou à effectuer, le point de départ soit Maintenance… Pour le restant, libre à votre cours imagination..
    =>

    Il faudrait que vous montriez le formulaire et les sous-formulaires qu’utilisera l’utilisateur, que je réfléchisse à la façon de bâtir les tables et vues impliquées, dans le respect des principes fondamentaux de la normalisation, comme je l’ai fait jusqu’à présent (à la modélisation près des manufacturiers et modèles, où la deuxième forme normale en prend un petit coup...)
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  3. #743
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil Voir le message
    Le plus frustrant c'est d'entrer toutes les données dans un formulaire et en cliquant sur "OK" le formulaire se referme sans aucune données enregistrées dans la BD comme ça c'est produit avec DIFF_AXLE.... Aucun message d'erreur n'apparaissait à l'écran sur le site WEB par contre rien n'était enregistré dans la BD….
    Il faudrait que vous me transmettiez les éléments me permettant de reproduire la chose.


    Citation Envoyé par ordigil Voir le message
    Si j'empêche une action à l'utilisateur ou si une donnée n'est pas enregistrée dans la BD, il faut que l'utilisateur sache pourquoi et il doit pouvoir corriger l'erreur sans être obligé de tout recommencer à entrer les données dans un formulaire.
    L’application ne conserve pas les données saisies par l’utilisateur ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  4. #744
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Vous méritez bien un petit repos musical

    Pour les formulaires je les fais d'après ce que vous me concoctez avec les vues. Vous voyez sur le site WEB je peux regrouper plusieurs vues sous un même onglet….. Je peux aussi faire un formulaire avec différentes colonnes prises dans différentes vues ou tables… Puisque vous êtes devenu un expert en véhicule lourd vous avez tout le loisir de créer les tables et les vues d'après votre expérience… Ensuite je critique, je critique et je critique Et nous arrivons à un produit professionnel Vous vous occupez de respecter le plus possible les normes SQL et moi je m'occupe d'adapter à la façon mécanicien… Jusqu'à présent vous avez fait un travail d'expert alors on continue à votre façon… Lorsque ça accroche du côté utilisateur, on fait des adaptations. Je pense que si je regroupe les vues par thème comme je l'ai fait avec la création d'un nouveau camion, c'est très facile pour l'utilisateur d'utiliser la base de données… Il y a encore un petit accrochage avec les dates avec 'AXLES' et 'DIFFERENTIAL' mais rien de sérieux et nous le règlerons plus tard… Encore merci pour votre aide, je l'apprécie vraiment.. Pour l'instant il faut mettre en oeuvre 'MAINTENANCE'...
    Citation Envoyé par fsmrel Voir le message
    Bonjour Ordigil,


    Ce dimanche fut reposant (sieste, musique avec Félix Leclerc, Georges Brassens et ma guitare quinquagénaire...)

    =>

    Il faudrait que vous montriez le formulaire et les sous-formulaires qu’utilisera l’utilisateur, que je réfléchisse à la façon de bâtir les tables et vues impliquées, dans le respect des principes fondamentaux de la normalisation, comme je l’ai fait jusqu’à présent (à la modélisation près des manufacturiers et modèles, où la deuxième forme normale en prend un petit coup...)
    La mise à jours des triggers a réglé le problème..

    Citation Envoyé par fsmrel Voir le message
    Il faudrait que vous me transmettiez les éléments me permettant de reproduire la chose.


    Lorsqu'on appuie sur OK et que SQL ne retourne pas d'erreur, le formulaire se referme… Mais rien ne garantit à l'usager que les données sont réellement enregistrées dans la base de données si il y a un problème avec les triggers… Pour l'instant je ne force rien avec les formulaires, l'utilisateur peut entrer à peu près tout ce qu'il veut, cela me permet de vérifier vos contraintes et vos triggers…. Lorsque tout sera à poil du côté de SQL Server, je pourrai forcer l'utilisateur à entrer des données se situant entre un minimum et un maximum, le format, ou un choix préétabli avec des listes déroulantes…

    Citation Envoyé par fsmrel Voir le message
    L’application ne conserve pas les données saisies par l’utilisateur ?
      1  0

  5. #745
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil Voir le message
    Pour l'instant il faut mettre en oeuvre 'MAINTENANCE'...
    C’est très exactement ce à quoi je pensais quand j’ai écrit :

    Citation Envoyé par fsmrel Voir le message
    Il faudrait que vous montriez le formulaire et les sous-formulaires qu’utilisera l’utilisateur, que je réfléchisse à la façon de bâtir les tables et vues impliquées, dans le respect des principes fondamentaux de la normalisation, comme je l’ai fait jusqu’à présent (à la modélisation près des manufacturiers et modèles, où la deuxième forme normale en prend un petit coup...)

    Il s’agit bien des formulaires relatifs à la maintenance, abstraction faite de ce que l’on a déjà développé. Pour le reste, je n’y connais rien. La dernière fois que je suis monté dans un camion, c’était à l’occasion de mon service militaire, au début des années soixante... Et je connaissais plutôt la maintenance des éléments équipant mon char (Patton) : le canon de 90 mm et la soute à munitions, ses mitrailleuses (coaxiale, DCA, co-pilote), ses chenilles et leurs patins, sa consommation d’essence (125 litres à l’heure, 15 litres pour un coup de démarreur), ses 12 cylindres en V, ses pots d’échappement dans lesquels on faisait le café, ses 880 chevaux, ses télémètres... Si vous me laissez la bride sur le coup, alors j’équiperai les camions de la même façon, la seule que je connaisse ! tel pourcentage d’obus/balles traçantes, perforantes, explosives, etc. Mais peut-être finirions-nous tous les deux en prison ou à l’asile ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  6. #746
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Ou venir appuyer les gilets jaunes




    Citation Envoyé par fsmrel Voir le message
    C’est très exactement ce à quoi je pensais quand j’ai écrit :


    Mais peut-être finirions-nous tous les deux en prison ou à l’asile ?
      1  0

  7. #747
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Dans le contexte des « véhicules de transport de marchandises » il ne faudrait pas oublier de soutenir les bonnets rouges...

    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      0  0

  8. #748
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Lorsque j'entre les données dans la vue 'AXLE_AFFECTATION_CAMION", Position fait bien référence à la table 'AXLE_POSITION', n'est-ce pas ???

    Lorsque je regarde la position affichée, tous les essieux ont la position 2INTGAWR peu importe ce que j'ai entré comme position lors de l'insertion…

    ahhhh dans le Trigger [AXLE_AFFECTATION_CAMION_INSERT_TR] on demandait implicitement la valeur 5 qui référence la Position 2INTGAWR

    Et dans le Trigger [AXLE_AFFECTATION_CAMION_UPDATE_TR] on ne fait null part référence à la position alors on ne peut pas mettre à jour la Position de l'essieu sur le camion



    Citation Envoyé par ordigil Voir le message
    Lorsque j'entre les données dans la vue 'AXLE_AFFECTATION_CAMION", Position fait bien référence à la table 'AXLE_POSITION', n'est-ce pas ???

    Lorsque je regarde la position affichée, tous les essieux ont la position 2INTGAWR peu importe ce que j'ai entré comme position lors de l'insertion…
      0  0

  9. #749
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Une scorie utilisée pour un test est restée dans le trigger AXLE_AFFECTATION_CAMION_INSERT_TR...

    La ligne 175 est en commentaire : il faut l’activer (virer les « -- » à gauche).

    Et il faut virer la ligne 177 qui contient en dur la valeur « 5 », correspondant manifestement à 2INTGAWR...




    Je vais faire la modif dans DZINDZIO_TRUCKS_MANAGEMENT_TEMP, mais j’attends votre feu vert, je ne voudrais vous marcher sur les pieds... Vous pouvez aussi faire la modif si vous voulez.

    Je constate que le trigger d’update, AXLE_AFFECTATION_CAMION_UPDATE_TR ne fait pas mention de la colonne Position de la vue AXLE_AFFECTATION_CAMION. Je vais regarder ça, car en l’état l’utilisateur ne peut pas modifier la position de l’essieu...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  10. #750
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Vous pouvez y aller, le site WEB est référencé par DZINDZIO_TRUCKS_MANAGEMENT_GIL_TEST

    Je m'occupe d'apporter les changement dans DZINDZIO_TRUCKS_MANAGEMENT_GIL_TEST et vous vous occupez de DZINDZIO_TRUCKS_MANAGEMENT_TEMP


    Citation Envoyé par fsmrel Voir le message
    Une scorie utilisée pour un test est restée dans le trigger AXLE_AFFECTATION_CAMION_INSERT_TR...

    La ligne 175 est en commentaire : il faut l’activer (virer les « -- » à gauche).

    Et il faut virer la ligne 177 qui contient en dur la valeur « 5 », correspondant manifestement à 2INTGAWR...




    Je vais faire la modif dans DZINDZIO_TRUCKS_MANAGEMENT_TEMP, mais j’attends votre feu vert, je ne voudrais vous marcher sur les pieds... Vous pouvez aussi faire la modif si vous voulez.
    Et le FROM...INSERTED après ,.@CamionId ,,,,,,,, Est-ce qu'il reste en commentaire ?????


    Citation Envoyé par fsmrel Voir le message
    Une scorie utilisée pour un test est restée dans le trigger AXLE_AFFECTATION_CAMION_INSERT_TR...

    La ligne 175 est en commentaire : il faut l’activer (virer les « -- » à gauche).

    Et il faut virer la ligne 177 qui contient en dur la valeur « 5 », correspondant manifestement à 2INTGAWR...




    Je vais faire la modif dans DZINDZIO_TRUCKS_MANAGEMENT_TEMP, mais j’attends votre feu vert, je ne voudrais vous marcher sur les pieds... Vous pouvez aussi faire la modif si vous voulez.
      0  0

  11. #751
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Le 'from', je le vire. Vous pouvez regarder la situation, j'ai fait le ménage dans les commentaires.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  12. #752
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Ok je regarde ce que vous faites

    Et ne pas oublier d'aller faire votre dodo Un professeur reposé est un professeur heureux



    Citation Envoyé par fsmrel Voir le message
    Le 'from', je le vire. Vous pouvez regarder la situation, j'ai fait le ménage dans les commentaires.
      0  0

  13. #753
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Bonjour Ordigil,


    Utilisez-vous encore la recopie des tables d’une base de données X vers une base de données Y selon la technique (manuelle) que j’avais proposée dans le post #181 ?

    J’avais écrit :

    « J’ai dû modifier le trigger COMPOSANT_RECOUVREMENT_TR »

    Mais la modification complexifie un peu trop le trigger. Je préfère revenir à une situation plus simple et plus saine, en conséquence de quoi, pour éviter ses engueulades, dans le script de copie il suffit faire précéder les INSERTS d’un ALTER TABLE (DISABLE) pour débrancher les triggers le temps de la copie, sans oublier de les rebrancher au moyen d’un ALTER TABLE (ENABLE) une fois l’opération terminée.

    Exemple, recopie de la table COMPOSANT_AFFECTATION de la base Temp vers la base Temp_test :

    ---------------------------------------------------------
    -- Recopie de la table COMPOSANT_AFFECTATION
    -- Base source : Temp, 
    -- Base cible : Temp_test.
    --
    -- Pour éviter les engueulades des triggers, on
    -- les désactive le temps de l'opération.
    ---------------------------------------------------------
    
    USE Temp_test ;
    
    DELETE FROM COMPOSANT_AFFECTATION ;
    
    ALTER TABLE COMPOSANT_AFFECTATION DISABLE TRIGGER ALL ;
    
    SET IDENTITY_INSERT COMPOSANT_AFFECTATION OFF ;
    DBCC CHECKIDENT (COMPOSANT_AFFECTATION, RESEED, 0) ;
    
    INSERT INTO COMPOSANT_AFFECTATION 
            (ComposantId
           , ComposantInstallationDate, ComposantDesInstallationDate
           , LocalisationId
           , PositionId)
        SELECT ComposantId
             , ComposantInstallationDate, ComposantDesInstallationDate
             , LocalisationId 
             , PositionId
        FROM   temp.dbo.COMPOSANT_AFFECTATION ;
    
    ALTER TABLE COMPOSANT_AFFECTATION ENABLE TRIGGER ALL ;
    
    Merci de me donner votre feu vert quant au moment où je pourrai rendre effectives les modifs que je vais apporter au trigger COMPOSANT_RECOUVREMENT_TR.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  14. #754
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Bonjour fsmrel…. Vous pouvez y aller avec vos mises à jour…


    Citation Envoyé par fsmrel Voir le message
    Bonjour Ordigil,


    Utilisez-vous encore la recopie des tables d’une base de données X vers une base de données Y selon la technique (manuelle) que j’avais proposée dans le post #181 ?

    J’avais écrit :

    « J’ai dû modifier le trigger COMPOSANT_RECOUVREMENT_TR »

    Mais la modification complexifie un peu trop le trigger. Je préfère revenir à une situation plus simple et plus saine, en conséquence de quoi, pour éviter ses engueulades, dans le script de copie il suffit faire précéder les INSERTS d’un ALTER TABLE (DISABLE) pour débrancher les triggers le temps de la copie, sans oublier de les rebrancher au moyen d’un ALTER TABLE (ENABLE) une fois l’opération terminée.

    Exemple, recopie de la table COMPOSANT_AFFECTATION de la base Temp vers la base Temp_test :

    ---------------------------------------------------------
    -- Recopie de la table COMPOSANT_AFFECTATION
    -- Base source : Temp, 
    -- Base cible : Temp_test.
    --
    -- Pour éviter les engueulades des triggers, on
    -- les désactive le temps de l'opération.
    ---------------------------------------------------------
    
    USE Temp_test ;
    
    DELETE FROM COMPOSANT_AFFECTATION ;
    
    ALTER TABLE COMPOSANT_AFFECTATION DISABLE TRIGGER ALL ;
    
    SET IDENTITY_INSERT COMPOSANT_AFFECTATION OFF ;
    DBCC CHECKIDENT (COMPOSANT_AFFECTATION, RESEED, 0) ;
    
    INSERT INTO COMPOSANT_AFFECTATION 
            (ComposantId
           , ComposantInstallationDate, ComposantDesInstallationDate
           , LocalisationId
           , PositionId)
        SELECT ComposantId
             , ComposantInstallationDate, ComposantDesInstallationDate
             , LocalisationId 
             , PositionId
        FROM   temp.dbo.COMPOSANT_AFFECTATION ;
    
    ALTER TABLE COMPOSANT_AFFECTATION ENABLE TRIGGER ALL ;
    
    Merci de me donner votre feu vert quant au moment où je pourrai rendre effectives les modifs que je vais apporter au trigger COMPOSANT_RECOUVREMENT_TR.
      0  0

  15. #755
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut



    
    USE DZINDZIO_TRUCKS_MANAGEMENT_TEMP ;
    
    GO
    
    INSERT INTO DIFFERENTIAL_COMPOSANT_V (NumeroSerie, DiffType, Ratio, Lock, PDLock)
    values ('ForTest', 'Forward' , 355, 'Y', 'Y')
    ;
    

    Msg 515, Level 16, State 2, Procedure DIFFERENTIAL_COMPOSANT_INSERT_TR, Line 16 [Batch Start Line 3]
    Impossible d'insérer la valeur NULL dans la colonne 'ComposantDateAchat', table 'DZINDZIO_TRUCKS_MANAGEMENT_GIL_TEST.dbo.COMPOSANT'. Cette colonne n'accepte pas les valeurs NULL. Échec de INSERT.
    L'instruction a été arrêtée.
      0  0

  16. #756
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par sql server
    Msg 515, Level 16, State 2, Procedure DIFFERENTIAL_COMPOSANT_INSERT_TR, Line 16 [Batch Start Line 3]
    Impossible d'insérer la valeur NULL dans la colonne 'ComposantDateAchat', table 'DZINDZIO_TRUCKS_MANAGEMENT_GIL_TEST.dbo.COMPOSANT'. Cette colonne n'accepte pas les valeurs NULL. Échec de INSERT.
    L'instruction a été arrêtée.
    Vu. Je vais bétonner un peu le trigger.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  17. #757
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Je n'ai pas trouvé l'erreur




    Citation Envoyé par fsmrel Voir le message
    Vu. Je vais bétonner un peu le trigger.
    J'ai fait ça et là ça passe mais ce n'est peut-être pas la façon de faire


    USE [DZINDZIO_TRUCKS_MANAGEMENT_GIL_TEST]
    GO
    /****** Object:  Trigger [dbo].[DIFFERENTIAL_COMPOSANT_INSERT_TR]    Script Date: 2018-11-27 17:17:52 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    ALTER TRIGGER [dbo].[DIFFERENTIAL_COMPOSANT_INSERT_TR] ON [dbo].[DIFFERENTIAL_COMPOSANT_V] INSTEAD OF INSERT
    AS
    DECLARE @AxlenumeroSerie AS VARCHAR(48)
    ----------DECLARE @DifNumeroSerie AS VARCHAR(48)
    ----------DECLARE @DiffId as int 
    
    -----SET @DifNumeroSerie = (select NumeroSerie from DIFFERENTIAL_COMPOSANT_V)
    -----set @DiffId = (select DiffId from DIFFERENTIAL where DiffSerialNumber = @DifNumeroSerie)
    
    SET @AxlenumeroSerie = 
        (SELECT NumeroSerie
         FROM   INSERTED AS x JOIN DIFFERENTIAL AS y ON x.NumeroSerie = y.DiffSerialNumber
                              JOIN DIFF_AXLE AS z ON y.DiffId = z.DiffId
                              JOIN COMPOSANT AS u ON u.ComposantId = z.AxleId)
    INSERT INTO COMPOSANT 
    (
          ComposantDateAchat
        , Fabriquant
        , Modele
        , ComposantType
    )
        SELECT 
    -----          COALESCE(DateAchat, CAST('9999-12-31' as DATE))
    -----           COALESCE(DateAchat, (SELECT DateAchat FROM AXLE_COMPOSANT_V WHERE NumeroSerie = @AxlenumeroSerie))
               COALESCE(DateAchat, '9999-12-31')
             , COALESCE(Fabriquant, '0')
             , COALESCE(Modele, '0')
             , 'd'
        FROM   INSERTED
    ;
    
    UPDATE COMPOSANT 
       SET ComposantDateAchat = '9999-12-31' WHERE ComposantDateAchat < '1940-01-01'
    
    INSERT INTO DIFFERENTIAL
    (
              DiffId
            , DiffSerialNumber
            , DiffType
            , DiffRatio
            , DiffGVWR
            , DiffTorque
            , DiffLock
            , DiffPowerDivideLock
            , DiffSerie
    )
        SELECT  
               (SELECT MAX(ComposantId) FROM COMPOSANT)
              , NumeroSerie
              , DiffType, Ratio
              , COALESCE(GVWR, 0)
              , COALESCE(Torque, 0)
              , Lock, PDLock
              , COALESCE(Serie, '0')
        FROM   INSERTED
    ;
    
    
    
      0  0

  18. #758
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil
    J'ai fait ça et là ça passe
    C’est d’accord, mais en fait, à cause du type DATE il est préférable d’utiliser le CAST que j’avais mis en commentaire :

    COALESCE(DateAchat, CAST('9999-12-31' as DATE))

    Par ailleurs, en modifiant le trigger, j’ai supprimé des instructions inutiles et enrichi de quelques contrôles minimaux, mais quand même insuffisants.

    A noter que si l’utilisateur propose par exemple un type de différentiel inconnu, il se prendra un message abscons de la part de SQL Server. Pour qu’on puisse contrôler ça, il faudrait mettre en oeuvre une table des types de différentiels (et d’axles), ce qui ne serait pas stupide. Cela dit, comptez-vous mettre place des fenêtres déroulantes pour imposer un choix des valeurs à la saisie ? (type de différentiel, Lock, PDLock).

    Je vais passer un ALTER TRIGGER DIFFERENTIAL_COMPOSANT_INSERT_TR dès que je peux.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  19. #759
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    J'avais essayé, je ne sais pas pourquoi ça ne fonctionnait pas…. Oui, aussitôt que nos petits problèmes seront réglés, il y aura des fenêtres déroulantes pour forcer l'utilisateur…. Je pensais mettre des fenêtres déroulantes dynamiques mais là on se retrouverait avec le même problème alors on imposera nos choix à l'utilisateur partout où c'est possible de le faire. Ok je vais essayer DZINDZIO_TRUCKS_MANAGEMENT_TEMP lorsque vous aurez complété.. Je vais conserver pour l'instant ce que j'ai fais pour pouvoir travailler le site WEB et je mettrai à jour avec vos triggers lorsque vous aurez terminé..

    Citation Envoyé par fsmrel Voir le message
    C’est d’accord, mais en fait, à cause du type DATE il est préférable d’utiliser le CAST que j’avais mis en commentaire :

    COALESCE(DateAchat, CAST('9999-12-31' as DATE))

    Par ailleurs, en modifiant le trigger, j’ai supprimé des instructions inutiles et enrichi de quelques contrôles minimaux, mais quand même insuffisants.

    A noter que si l’utilisateur propose par exemple un type de différentiel inconnu, il se prendra un message abscons de la part de SQL Server. Pour qu’on puisse contrôler ça, il faudrait mettre en oeuvre une table des types de différentiels (et d’axles), ce qui ne serait pas stupide. Cela dit, comptez-vous mettre place des fenêtres déroulantes pour imposer un choix des valeurs à la saisie ? (type de différentiel, Lock, PDLock).

    Je vais passer un ALTER TRIGGER DIFFERENTIAL_COMPOSANT_INSERT_TR dès que je peux.
      0  0

  20. #760
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 906
    Points
    30 906
    Billets dans le blog
    16
    Par défaut
    ALTER TRIGGER DIFFERENTIAL_COMPOSANT_INSERT_TR : fait. Merci de tester...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

Discussions similaires

  1. Ajout dans une table et relation avec d'autres
    Par climz dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 15h32
  2. Création table et relations
    Par ptitdragon_eric dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/09/2005, 13h37
  3. table de relation
    Par tanjonaravelson dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/06/2005, 18h20
  4. Table de relation et sélection via jointure
    Par 73672 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 09/11/2004, 09h33
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

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