Bonjour à tous
Mes collègues m'on chargé de mettre à jour vers SQL server 2005 une application de devis actuellement sous paradox. Les éléments du devis sont
organisés sous la forme d'un arbre d'une profondeur quelconque et avec une table autoref, j'ai programmé cela de la même manière que sous delph1 + bde; c'est à dire procedure récursive coté client + stockage de toutes les valeurs de sommage des éléments dans leur noeud parent, or avec des adoquery et des devis ayant en moyenne 4000 (50 à 8000) éléments avec une profondeur moyenne de 4, le recalcul est relativement lent, 3 à 4 secondes, alors qu'avant c'était quasi instantané. Je vois bien que le principe de non redondance de donnée n'est pas respecté avec ma méthode et qu'il faudrait peut être utiliser des procedure stockée ou des vues, mais la programmation n'est pas mon activté principale (maintenance info) et je ne suis pas arrivé à construire quoi que ce soit en respectant ces 2 principes, travail coté serveur et non redondance.
Mes tables sont
Table devis
Table Parties devis
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 CREATE TABLE [dbo].[T_DEVIS_DEV]( [DEV_ID] [bigint] NOT NULL, [DEV_REF_PRI] [dbo].[D_REF_COURTE] NULL, [DEV_REF_SEC] [dbo].[D_REF_LONG] NULL, [DEV_LIBELLE] [dbo].[D_LIBELLE_MOY] NULL, [DEV_DATE_PUB] [datetime] NULL, [DEV_REDACTEUR] [dbo].[D_NOM_UTILISATEUR] NULL, [DEV_PA1] [dbo].[D_MT_MONETAIRE] NULL, [DEV_PA2] [dbo].[D_MT_MONETAIRE] NULL, [DEV_PV1] [dbo].[D_MT_MONETAIRE] NULL, [DEV_COEFF_VTE] [dbo].[D_COEFF_GEN] NULL, [DEV_COEFF_DIFF] [dbo].[D_COEFF_GEN] NULL, [DEV_MT_FRAIS] [dbo].[D_MT_MONETAIRE] NULL, [DEV_COEFF_FRAIS] [dbo].[D_MT_MONETAIRE] NULL, [DEV_MT_AJUST] [dbo].[D_MT_MONETAIRE] NULL, [DEV_MT_RABAIS] [dbo].[D_MT_MONETAIRE] NULL, [DEV_PCT_RABAIS] [numeric](15, 4) NULL, [DEV_PVF] [dbo].[D_MT_MONETAIRE] NULL, [DEV_NB_HRS_MO] [numeric](15, 4) NULL, [DEV_MT_MO] [dbo].[D_MT_MONETAIRE] NULL, [DEV_TAUX_TVA] [dbo].[D_TX_TVA_GEN] NULL
des coefficients sont appliqués entre PUA1 et PUA2 ainsi que entre PUA2 et PUV1, ainsi que un ajustement entre PUV1 et PUVF, les coefficient sont cherchés dans une 3 eme table par famille d'article
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 CREATE TABLE [dbo].[T_DEVPART_DPT]( [DPT_ID] [bigint] NOT NULL, [DEV_ID] [bigint] NULL, [DPT_PID] [bigint] NULL, [DPT_ORD] [int] NULL, [DPT_STYPE] [dbo].[D_SOUS_TYP_ELEMENT] NULL, [DPT_FAMILLE] [dbo].[D_FAMILLE_ARTICLE] NULL, [DPT_REF] [dbo].[D_REF_ARTICLE] NULL, [DPT_LIBELLE] [dbo].[D_LIBELLE_ARTICLE] NULL, [DPT_QTE] [dbo].[D_QTE_ARTICLE] NULL, [DPT_UNITP] [dbo].[D_UNIT_PU] NULL, [DPT_PUA1] [dbo].[D_MT_MONETAIRE] NULL, [DPT_PUA2] [dbo].[D_MT_MONETAIRE] NULL, [DPT_PUV1] [dbo].[D_MT_MONETAIRE] NULL, [DPT_MT_AJUST] [dbo].[D_MT_MONETAIRE] NULL, [DPT_PUVF] [dbo].[D_MT_MONETAIRE] NULL, [DPT_PTA1] AS ([DPT_QTE]*[DPT_PUA1]), [DPT_PTA2] AS ([DPT_QTE]*[DPT_PUA2]), [DPT_PTV1] AS ([DPT_QTE]*[DPT_PUV1]), [DPT_PTVF] AS ([DPT_QTE]*[DPT_PUVF]+[DPT_MT_AJUST]), [DPT_NB_HRS_MO] [dbo].[D_QUANTITE_GEN] NULL, [DPT_MT_MO] [dbo].[D_MT_MONETAIRE] NULL,
Mes questions sont donc:
- Est ce qu'il est possible de suivre les 2 principes cités plus haut pour produire une vue ou ce devis apparait à jour
- Pour des arbres il est souvent recommandé dans ce forum d'utiliser la représentation par intervalles (SQLPro) est ce vraiment indispensable avec sql server 2005.
- Je ne voudrais pas abuser , mais ne serait il pas possible d'avoir quelques pistes pour démarrer
Merci
Partager