[3615 MyLife] SGBD : Maman j'ai peur !

SGBD : Maman j'ai peur ! [3615 MyLife] - SQL/NoSQL - Programmation

Marsh Posté le 09-02-2005 à 11:44:09    

T'ain, je suis en train de bosser sur une application mono-client, qui doit passer multi-client.
 
Donc la moitiée des tables est impactée, et forcément, les PS qui vont avec le sont aussi.
Jusque là, rien de bien dramatique, peanuts, finger in the noise, no problemo.
 
Ensuite, je commence à me pencher sur l'analyse du truc (évidement, c'était un ERP dont la société à coulé sans laisser de doc, donc on n'a rien du tout, faut tout comprendre à partir des sources des PS...)
 
Et là, je tombe sur LE truc, je savais même pas que c'était possible d'écrire un truc pareil :lol: :sweat:
 
Je laisse tel quel, avec l'indentation et tout...
 

Code :
  1. CREATE PROCEDURE icz_PVreception_GroupDetail
  2. (
  3. @userId  int,
  4. @OrgId  int,
  5. @leaseScheduleId  int,
  6. @vendeurId  int,
  7. @numPeriodePV  int,
  8. @param1 int=0,
  9. @param2 int=0,
  10. @param3 int=0,
  11. @param4 int=0,
  12. @param5 int=0,
  13. @param6 int=0,
  14. @param7 int=0,
  15. @param8 int=0,
  16. @param9 int=0,
  17. @param10 int=0,
  18. @param11 int=0,
  19. @param12 int=0,
  20. @param13 int=0,
  21. @param14 int=0,
  22. @param15 int=0,
  23. @param16 int=0
  24. )
  25. AS
  26. -- SCR 22/7/04 recuperation custref1 et 2 et ref1 dans asset au lieu de MO
  27. declare @cmd2 varchar(3000)
  28. select @cmd2 = 'select zfa.factureId, a.assetId, a.BaseUnitAssetId, '
  29. if @param1 = 1  select @cmd2 = @cmd2 + ' a.OrderNumber, ' else select @cmd2 = @cmd2 + ' 0 as OrderNumber, '
  30. if @param2 = 1  select @cmd2 = @cmd2 + ' a.Description, ' else select @cmd2 = @cmd2 + ' null as Description, '
  31. if @param3 = 1  select @cmd2 = @cmd2 + ' a.CustomerRef, ' else select @cmd2 = @cmd2 + ' null as CustomerRef, '
  32. if @param4 = 1  select @cmd2 = @cmd2 + ' a.CustomerRef2, ' else select @cmd2 = @cmd2 + ' null as CustomerRef2, '
  33. if @param5 = 1  select @cmd2 = @cmd2 + ' a.Reference1, ' else select @cmd2 = @cmd2 + ' null as Reference1, '
  34. if @param6 = 1  select @cmd2 = @cmd2 + ' a.Serialnumber, ' else select @cmd2 = @cmd2 + ' null as Serialnumber, '
  35. if @param7 = 1  select @cmd2 = @cmd2 + ' zf.numero as NumeroFact, ' else select @cmd2 = @cmd2 + ' null as NumeroFact, '
  36. if @param8 = 1  select @cmd2 = @cmd2 + ' a.cost as AssetCost, ' else select @cmd2 = @cmd2 + ' 0 as AssetCost, '
  37. if @param9 = 1
  38. begin
  39.  select @cmd2 = @cmd2 + ' prixFacture = case
  40.     when zfa.prixFinance is null then zfa.prixFacture
  41.     when zfa.prixFinance = 0 then zfa.prixFacture
  42.     else   zfa.PrixFinance
  43.     end, '
  44. end
  45. else
  46. begin
  47.  select @cmd2 = @cmd2 + ' 0 as prixFacture, '
  48. end
  49. if @param10 = 1
  50. begin
  51.  select @cmd2 = @cmd2 + ' zf.type as typeFact, '
  52. end
  53. else
  54. begin
  55.  select @cmd2 = @cmd2 + ' 0 as typeFact, '
  56. end
  57. if @param11 = 1
  58. begin
  59.  select @cmd2 = @cmd2 + ' numeroBL = ( select zbl.numeroBL
  60.     from zBonLivraison zbl, zAssetBonLivraison zabl
  61.     where a.assetid = zabl.assetId
  62.     and  zabl.BlId = zbl.BlId  ), '
  63. end
  64. else
  65. begin
  66.  select @cmd2 = @cmd2 + ' null as numeroBL, '
  67. end
  68. if @param12 = 1
  69. begin
  70.  select @cmd2 = @cmd2 + ' receivedById = ( select zbl.createdByUserId
  71.     from zBonLivraison zbl, zAssetBonLivraison zabl
  72.     where    a.assetid = zabl.assetId
  73.     and  zabl.BlId = zbl.BlId ), '
  74. end
  75. else
  76. begin
  77.  select @cmd2 = @cmd2 + ' 0 as receivedById, '
  78. end
  79. if @param13 = 1  select @cmd2 = @cmd2 + ' a.locationId as AssetLocId, ' else select @cmd2 = @cmd2 + ' 0 as AssetLocId, '
  80. if @param14 = 1  select @cmd2 = @cmd2 + ' zbrmo.CreatedByID as ReqCreatedById, ' else select @cmd2 = @cmd2 + ' 0 as ReqCreatedById, '
  81. if @param15 = 1  select @cmd2 = @cmd2 + ' ac.AccountId, ' else select @cmd2 = @cmd2 + ' 0 as AccountId, '
  82. if @param16 = 1  select @cmd2 = @cmd2 + ' a.ProductCode, ' else select @cmd2 = @cmd2 + ' null as ProductCode, '
  83. select @cmd2 = @cmd2 + ' a.lineType from  Asset a, zFactureAsset zfa, zFactures zf '
  84. -- attention a la virgule c'est different des autres pv.
  85. if @param14 = 1 select @cmd2 = @cmd2 + ' , ZBdReqMasterOrder zbrmo, MasterOrder mo '
  86. if @param15 = 1 select @cmd2 = @cmd2 + ' , assetAccountCharge ac '
  87. select @cmd2 = @cmd2 + ' where  a.BaseUnitAssetId = zfa.buAssetId
  88. and a.assetId = zfa.assetId
  89. and zfa.factureId = zf.factureId '
  90. if @param14 = 1
  91. begin
  92. select @cmd2 = @cmd2 + ' and a.OrderNumber *= zbrmo.RequisitionNumber
  93.      and a.OrderNumber *= mo.OrderNumber '
  94. end
  95. if @param15 = 1 select @cmd2 = @cmd2 + ' and  a.AssetId *= ac.AssetId '
  96. select @cmd2 = @cmd2 + ' and  ( a.cost != 0 or a.linetype in (''B'', ''S'')  )
  97. and  a.orgId  = '+ cast(@orgId as varchar(1000)) + '
  98. and  zf.leaseScheduleId  = '+ cast(@leaseScheduleId as varchar(1000)) +' 
  99. and zf.vendeurId  = '+ cast(@vendeurId as varchar(1000)) +'
  100. and zf.numPeriodePV  = '+ cast(@numPeriodePV as varchar(1000)) +'
  101. and  zf.etat = ''PVEMIS''
  102. order by a.BaseUnitAssetId, a.lineType '
  103. exec (@cmd2)
  104. GO


 
Même pas mal :D

Reply

Marsh Posté le 09-02-2005 à 11:44:09   

Reply

Marsh Posté le 09-02-2005 à 11:46:09    

Ouch :cry:

Reply

Marsh Posté le 09-02-2005 à 11:49:36    

T'ain pis juste après, y'a la même en pire :ouch:
 
Heureusement, je passe entre les gouttes, ça se base sur des ID qui ne sont pas impactés par la mise à jour ouuuufff :D
 

Code :
  1. CREATE PROCEDURE icz_PVreception_GroupGroup
  2. (
  3. @userId  int,
  4. @OrgId   int,
  5. @leaseScheduleId  int,
  6. @vendeurId  int,
  7. @numPeriodePV  int,
  8. @param1 int=0,
  9. @param2 int=0,
  10. @param3 int=0,
  11. @param4 int=0,
  12. @param5 int=0,
  13. @param6 int=0,
  14. @param7 int=0,
  15. @param8 int=0,
  16. @param9 int=0,
  17. @param10 int=0,
  18. @param11 int=0,
  19. @param12 int=0,
  20. @param13 int=0,
  21. @param14 int=0,
  22. @param15 int=0,
  23. @param16 int=0
  24. )
  25. AS
  26. -- SCR 22/7/04 recuperation custref1 et 2 et ref1 dans asset au lieu de MO
  27. create table #tmp3
  28. (
  29. factureId  int null,
  30. BaseUnitAssetId int null
  31. )
  32. /*
  33. create index temp3FactId on #tmp3(factureId)
  34. create index temp3BUAssetId on #tmp3(BaseUnitAssetId)
  35. */
  36. insert into #tmp3
  37. select  distinct
  38. zfa.factureId,
  39. case a.linetype
  40. when 'B' then a.BaseUnitAssetId
  41. when 'S' then a.BaseUnitAssetId
  42. when 'C' then case a.discoverylink
  43.   when 'ADD-NEW' then a.AssetId
  44.   else a.BaseUnitAssetId
  45.   end
  46. end
  47. from  Asset a, zFactureAsset zfa, zFactures zf
  48. where
  49. a.assetId = zfa.assetId
  50. and zfa.factureId = zf.factureId
  51. and  a.orgId   = @orgId
  52. and  zf.leaseScheduleId  = @leaseScheduleId
  53. and zf.vendeurId  = @vendeurId
  54. and zf.numPeriodePV  = @numPeriodePV
  55. and  zf.etat = 'PVEMIS'
  56. group by
  57. zfa.factureId,
  58. a.BaseUnitAssetId,
  59. a.lineType,
  60. a.discoverylink,
  61. a.assetId
  62. create table #tmp2
  63. (
  64. factureId  int null,
  65. assetId   int null,
  66. BaseUnitAssetId  int null,
  67. OrderNumber  int null,
  68. Description             varchar(60) null,
  69. CustomerRef  varchar(30) null,
  70. CustomerRef2            varchar(30) null,
  71. Reference1              varchar(30) null,
  72. NumeroFact  varchar(50) null,
  73. AssetCostSomme      float null,
  74. PrixFactureSomme   float null,
  75. typeFact   char(1) null,
  76. numeroBL                varchar(30) null,
  77. receivedById   int null,
  78. AssetLocId    int null,
  79. ReqCreatedById   int null,
  80. AccountId  int null,
  81. SerialNumber  varchar(30) null,
  82. ProductCode  varchar(25) null
  83. )
  84. /*
  85. create index temp2AssetId on #tmp2(AssetId)
  86. create index temp2BUAssetId on #tmp2(BaseUnitAssetId)
  87. */
  88. declare @cmd2 varchar(2000)
  89. select @cmd2 = '
  90. insert into #tmp2
  91. select  distinct
  92. #tmp3.factureId,
  93. a.assetId,
  94. a.BaseUnitAssetId, '
  95. if @param1 = 1  select @cmd2 = @cmd2 + ' a.OrderNumber, ' else  select @cmd2 = @cmd2 + ' 0, '
  96. if @param2 = 1  select @cmd2 = @cmd2 + ' a.Description, ' else select @cmd2 = @cmd2 + ' null, '
  97. if @param3 = 1  select @cmd2 = @cmd2 + ' a.CustomerRef, ' else select @cmd2 = @cmd2 + ' null, '
  98. if @param4 = 1  select @cmd2 = @cmd2 + ' a.CustomerRef2, ' else select @cmd2 = @cmd2 + ' null, '
  99. if @param5 = 1  select @cmd2 = @cmd2 + ' a.Reference1, ' else select @cmd2 = @cmd2 + ' null, '
  100. if @param6 = 1  select @cmd2 = @cmd2 + ' zf.numero as NumeroFact, ' else select @cmd2 = @cmd2 + ' null, '
  101. if @param7 = 1
  102. begin
  103.  select @cmd2 = @cmd2 + ' AssetCostSomme = ( select sum(A1.cost)
  104.    from asset A1, zFactureAsset zf1
  105.    where   (A1.BaseUnitAssetId = #tmp3.BaseUnitAssetId or A1.assetId = #tmp3.BaseUnitAssetId)
  106.    and  zf1.factureId = #tmp3.factureId
  107.    and A1.assetId = zf1.assetId ), '
  108. end
  109. else
  110. begin
  111.  select @cmd2 = @cmd2 + ' 0, '
  112. end
  113. if @param8 = 1
  114. begin
  115.  select @cmd2 = @cmd2 + ' PrixFactureSomme = (  select sum(case
  116.     when zfa.prixFinance is null then zfa.prixFacture
  117.     when zfa.prixFinance = 0 then zfa.prixFacture
  118.     else   zfa.PrixFinance
  119.     end)
  120.     from asset A1, zFactureAsset zfa
  121.     where   (A1.BaseUnitAssetId = #tmp3.BaseUnitAssetId or A1.assetId = #tmp3.BaseUnitAssetId)
  122.     and  zfa.factureId = #tmp3.factureId
  123.     and A1.assetId = zfa.assetId ), '
  124. end
  125. else
  126. begin
  127.  select @cmd2 = @cmd2 + ' 0, '
  128. end
  129. if @param9 = 1  select @cmd2 = @cmd2 + ' zf.type as typeFact, ' else select @cmd2 = @cmd2 + ' null, '
  130. if @param10 = 1
  131. begin
  132.  select @cmd2 = @cmd2 + ' numeroBL = ( select zbl.numeroBL
  133.    from zBonLivraison zbl, zAssetBonLivraison zabl
  134.    where a.assetid = zabl.assetId
  135.    and zabl.BlId = zbl.BlId  ), '
  136. end
  137. else
  138. begin
  139.  select @cmd2 = @cmd2 + ' null, '
  140. end
  141. if @param11 = 1
  142. begin
  143.  select @cmd2 = @cmd2 + ' receivedById = (select zbl.createdByUserId
  144.    from zBonLivraison zbl, zAssetBonLivraison zabl
  145.    where    a.assetid = zabl.assetId
  146.    and  zabl.BlId = zbl.BlId ), '
  147. end
  148. else
  149. begin
  150.  select @cmd2 = @cmd2 + ' 0, '
  151. end
  152. if @param12 = 1  select @cmd2 = @cmd2 + ' a.locationId as AssetLocId, ' else  select @cmd2 = @cmd2 + ' 0, '
  153. if @param13 = 1
  154. begin
  155.  select @cmd2 = @cmd2 + ' ReqCreatedById = ( select zbrmo.CreatedById
  156.    from ZBdReqMasterOrder zbrmo
  157.    where  a.OrderNumber  = zbrmo.RequisitionNumber
  158.    and mo.OrderNumber = zbrmo.RequisitionNumber  ), '
  159. end
  160. else
  161. begin
  162.  select @cmd2 = @cmd2 + ' 0, '
  163. end
  164. if @param14 = 1  select @cmd2 = @cmd2 + ' ac.AccountId, ' else  select @cmd2 = @cmd2 + ' 0, '
  165. if @param15 = 1  select @cmd2 = @cmd2 + ' a.SerialNumber, ' else  select @cmd2 = @cmd2 + ' null, '
  166. if @param16 = 1  select @cmd2 = @cmd2 + ' a.ProductCode ' else  select @cmd2 = @cmd2 + ' null, '
  167. select @cmd2 = @cmd2 + ' from  Asset a, zFactures zf, '
  168. if @param14 = 1 select @cmd2 = @cmd2 + ' assetAccountCharge ac, '
  169. if @param13 = 1 select @cmd2 = @cmd2 + ' MasterOrder mo, '
  170. select @cmd2 = @cmd2 + ' #tmp3
  171. where  zf.factureId  = #tmp3.factureId
  172. and a.AssetId  = #tmp3.baseUnitassetId '
  173. if @param14 = 1 select @cmd2 = @cmd2 + ' and  a.AssetId  *= ac.AssetId '
  174. if @param13 = 1 select @cmd2 = @cmd2 + ' and a.OrderNumber  *= mo.OrderNumber '
  175. select @cmd2 = @cmd2 + ' order by a.BaseUnitAssetId '
  176. exec (@cmd2)
  177. /*qte = ( select count(*) from #tmp2 ta
  178.  where  ta.Description = #tmp2.Description
  179.  and ta.OrderNumber = #tmp2.OrderNumber     ),*/
  180. declare @cmd3 varchar(1000)
  181. select @cmd3 = '
  182. select  distinct OrderNumber, Description,
  183. factureId,
  184. count(*) as qte,
  185. AssetCostSomme as AssetPrixUnit,
  186. sum(AssetCostSomme) as AssetSommeTotal,
  187. sum(PrixFactureSomme) as PrixFactureTotal,
  188. CustomerRef,
  189. CustomerRef2,
  190. Reference1,
  191. NumeroFact,
  192. typeFact,
  193. numeroBL,
  194. receivedById,
  195. AssetLocId,
  196. ReqCreatedById,
  197. AccountId,
  198. SerialNumber,
  199. ProductCode
  200. from #tmp2
  201. group by OrderNUmber, Description, factureId, CustomerRef, CustomerRef2, Reference1,
  202. NumeroFact, typeFact, numeroBL, receivedById, AssetLocId, ReqCreatedById,
  203. AccountId, AssetCostSomme, SerialNumber, ProductCode
  204. order by #tmp2.Description '
  205. exec (@cmd3)
  206. GO

Reply

Marsh Posté le 09-02-2005 à 11:50:37    

(vous noterez le jonglage dans des tables temporaires à depuis une requête écrite dynamiquement, rien de tel pour se réveiller le matin... j'ai pris un café y'a 10 minutes, je crois que je vais retourner en prendre un seau :D)

Reply

Marsh Posté le 09-02-2005 à 11:59:53    

Merde, j'ai perdu le fil de @cmd2 en cours de route, du côté de @param14.
 
[:alph-one]
 
Grandiose. Tout simplement grandiose.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 09-02-2005 à 12:01:58    

Mouarf, j'arrête de recopier le code, plus ça avance et plus c'est pire :sweat:
 
(juste pour info, j'en suis à la #TMP16, avec un grand test sur les params pour retraîter tout le bordel du haut selon les valeurs des autres #TMPxx :pt1cable:)


Message édité par Arjuna le 09-02-2005 à 12:03:37
Reply

Marsh Posté le 09-02-2005 à 12:02:12    

et puis les tables temporaires, c'est pas des tables de tapettes.

Reply

Marsh Posté le 09-02-2005 à 12:02:42    

Arjuna a écrit :

Mouarf, j'arrête de recopier le code, plus ça avance et plus c'est pire :sweat:


va directement à la fin qu'on rigole.

Reply

Marsh Posté le 09-02-2005 à 12:06:04    

Tiens, pis y'en a une qui s'appelle #tmpN, vous allez voir que je vais bientôt avoir un 'create table #tmp' + x + ' (...)' :D

Reply

Marsh Posté le 09-02-2005 à 13:26:46    

terrible :lol:

Reply

Marsh Posté le 09-02-2005 à 13:26:46   

Reply

Marsh Posté le 09-02-2005 à 13:43:54    

Et ta mission est de rendre ce "code" encore plus obscur ? Parce que ça va pas être facile.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 09-02-2005 à 13:51:56    

sircam a écrit :

Et ta mission est de rendre ce "code" encore plus obscur ? Parce que ça va pas être facile.


que la force soit avec toi

Reply

Marsh Posté le 09-02-2005 à 14:08:30    

Code :
  1. -- SCR 22/7/04 recuperation custref1 et 2 et ref1 dans asset au lieu de MO


ça pourrait être pire, il pourrait ne pas y avoir de commentaires


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 09-02-2005 à 14:14:41    

Je l'avais pas vu. Tout devient tout de suite plus clair :D


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 09-02-2005 à 14:35:33    

Qu'une chose...............
bonne chance....
tout le forum, tout les programmeurs sont avec toi ;) lol

Reply

Marsh Posté le 09-02-2005 à 15:23:16    

Tiens, c'est joli ça, je scrollais rapidement dans le script, et j'ai cru que mon écran était en train de partir sur le côté :D (j'ai pu les yeux en face des trous, faut dire que le script fait dans les 100 000 lignes, et j'en suis à la 65 781 :D
 

Code :
  1. IF (@Line1  <> NULL)
  2.   BEGIN
  3.    INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line1) 
  4.    SELECT @MaxLine = @MaxLine + 1
  5.    IF (@Line2  <> NULL)
  6.      BEGIN
  7.        INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line2) 
  8.        SELECT @MaxLine = @MaxLine + 1
  9.        IF (@Line3  <> NULL)
  10.          BEGIN
  11.            INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line3) 
  12.            SELECT @MaxLine = @MaxLine + 1
  13.            IF (@Line4  <> NULL)
  14.              BEGIN
  15.                INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line4) 
  16.                SELECT @MaxLine = @MaxLine + 1
  17.                IF (@Line5  <> NULL)
  18.                  BEGIN
  19.                    INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line5) 
  20.                    SELECT @MaxLine = @MaxLine + 1
  21.                    IF (@Line6  <> NULL)
  22.                      BEGIN
  23.                        INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line6)
  24.                        SELECT @MaxLine = @MaxLine + 1
  25.                        IF (@Line7  <> NULL)
  26.                          BEGIN
  27.                            INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line7)
  28.                            SELECT @MaxLine = @MaxLine + 1
  29.                            IF (@Line8  <> NULL)
  30.                              BEGIN
  31.                                INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line8)
  32.                                SELECT @MaxLine = @MaxLine + 1
  33.                                IF (@Line9  <> NULL)
  34.                                  BEGIN
  35.                                    INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line9) 
  36.                                    SELECT @MaxLine = @MaxLine + 1
  37.                                    IF (@Line10 <> NULL)
  38.                                      BEGIN
  39.                                        INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line10) 
  40.                                        SELECT @MaxLine = @MaxLine + 1
  41.                                        IF (@Line11 <> NULL)
  42.                                          BEGIN
  43.                                            INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line11)
  44.                                            SELECT @MaxLine = @MaxLine + 1
  45.                                            IF (@Line12 <> NULL)
  46.                                              BEGIN
  47.                                                INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line12)
  48.                                                SELECT @MaxLine = @MaxLine + 1 
  49.                                                IF (@Line13 <> NULL)
  50.                                                  BEGIN
  51.                                                    INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line13)
  52.                                                    SELECT @MaxLine = @MaxLine + 1 
  53.                                                    IF (@Line14 <> NULL)
  54.                                                      BEGIN
  55.                                                        INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line14)
  56.                                                        SELECT @MaxLine = @MaxLine + 1 
  57.                                                        IF (@Line15 <> NULL)
  58.                                                          BEGIN
  59.                                                            INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line15) 
  60.                                                            SELECT @MaxLine = @MaxLine + 1
  61.                                                            IF (@Line16 <> NULL)
  62.                                                              BEGIN
  63.                                                                INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line16) 
  64.                                                                SELECT @MaxLine = @MaxLine + 1
  65.                                                                IF (@Line17 <> NULL)
  66.                                                                  BEGIN
  67.                                                                    INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line17) 
  68.                                                                    SELECT @MaxLine = @MaxLine + 1
  69.                                                                    IF (@Line18 <> NULL)
  70.                                                                      BEGIN
  71.                                                                        INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line18)
  72.                                                                        SELECT @MaxLine = @MaxLine + 1 
  73.                                                                        IF (@Line19 <> NULL)
  74.                                                                          BEGIN
  75.                                                                            INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line19) 
  76.                                                                            SELECT @MaxLine = @MaxLine + 1
  77.                                                                            IF (@Line20 <> NULL)
  78.                                                                              BEGIN
  79.                                                                                INSERT INTO CommentLines(SiteID,OwnerID,Type,LineNumber,Text) VALUES(1,@AssetID,'A',@MaxLine,@Line20)   
  80.                                                                                SELECT @MaxLine = @MaxLine + 1 
  81.                                                                              END
  82.                                                                          END
  83.                                                                      END
  84.                                                                  END
  85.                                                              END
  86.                                                          END
  87.                                                      END
  88.                                                  END
  89.                                              END
  90.                                          END
  91.                                      END
  92.                                  END
  93.                              END
  94.                          END
  95.                      END
  96.                  END
  97.              END
  98.          END
  99.      END
  100.   END

Reply

Marsh Posté le 09-02-2005 à 15:24:01    

C'est domage, je forum fait retourner à la ligne, mais dans mon éditeur de texte, les imbrications font tellement loin à droite qu'à un moment y'a plus rien si je scrolle pas :D

Reply

Marsh Posté le 09-02-2005 à 15:54:01    

C'est ce qu'on appelle de la programmation hyper-structurée.
 
Admirez la série de END en diagonale, de toute beauté  :love:


Message édité par sircam le 09-02-2005 à 15:54:14

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 09-02-2005 à 15:54:42    

sircam a écrit :

C'est ce qu'on appelle de la programmation hyper-structurée.
 
Admirez la série de END en diagonale, de toute beauté  :love:


Ouaiiiiis  :love:  Ca fait un tout zoli escalier !!!!!111oneeleven

Reply

Marsh Posté le 09-02-2005 à 15:58:41    

Si tu scrolles les END de haut en bas, ça donne un effet hypnotique.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 09-02-2005 à 16:01:37    

C'est de la prog "artistique"

Reply

Marsh Posté le 09-02-2005 à 16:11:08    

Faudrait rajouter une section "ASCII art" à ce forum pour les posts comme ça  :pt1cable:


Message édité par SomeBugsInMe le 09-02-2005 à 16:11:37
Reply

Marsh Posté le 09-02-2005 à 16:13:35    

Bon, ça me démange, je le risque : "quelqu'un veut une crêpe" ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 09-02-2005 à 16:14:48    

han

Reply

Marsh Posté le 09-02-2005 à 18:12:10    

Le coup des tables temporaires c'est le symptôme classique du mec qui connait pas l'opérateur "UNION" je trouve ça insupportable.

Reply

Marsh Posté le 09-02-2005 à 18:17:42    

Superbe :D
 
On en a aussi pas mal, avec même des noms de champs banalisés :sweat:

Reply

Marsh Posté le 22-02-2005 à 16:28:30    

Bon, j'y remet ma petite couche :)
 
AVANT :

Code :
  1. CREATE PROCEDURE ics_usersListForPerimDroit
  2. @orgId  int,
  3. @accId  int,
  4. @depId  int,
  5. @locId  int,
  6. @droitId int,
  7. @tous  int=1,
  8. @lResult int output
  9. AS
  10. -- SCR V7.1
  11. /*SCR V7.0.1
  12. userId : id de l'utilisateur pour lequel on doit verifier les contraintes
  13. depid, locid, accid :  
  14.  id pour lequel on doit verifier la retriction, si null, pas de test
  15. combinaison : (0,1,2,3,4,5,6)  0:cs+ac+dep  1:cs   2:ac  3:dep  4:cs+ac  5:cs+dep  6:ac+dep
  16.   on utilise les contrainte sur ca.
  17. isOk :  1 l'utilisateur a verifier toutes les contraintes,  
  18.  0 une contrainte n'est pas satisfaite
  19. */
  20. DECLARE @combinaison int
  21. DECLARE @tstAcc  smallint
  22. DECLARE @tstDep  smallint
  23. DECLARE @tstLoc  smallint
  24. select  @combinaison=perimetreCombinaison
  25. from zperimetreCombinaison
  26. where  orgId=@orgId
  27. if @combinaison=7 select @tstAcc=0, @tstDep=0, @tstLoc=0
  28. if @combinaison=0 select @tstAcc=1, @tstDep=1, @tstLoc=1
  29. if @combinaison=1 select @tstAcc=0, @tstDep=0, @tstLoc=1
  30. if @combinaison=2 select @tstAcc=0, @tstDep=1, @tstLoc=0
  31. if @combinaison=3 select @tstAcc=1, @tstDep=0, @tstLoc=0
  32. if @combinaison=4 select @tstAcc=1, @tstDep=0, @tstLoc=1
  33. if @combinaison=5 select @tstAcc=0, @tstDep=1, @tstLoc=1
  34. if @combinaison=6 select @tstAcc=1, @tstDep=1, @tstLoc=0
  35. /** permet de ne pas tester dans le select le (@tstLoc=0) OR (@locId=0) mais juste le 1er**/
  36. if (@locId is null) or (@locId=0) select @locId=0, @tstLoc=0
  37. if (@depId is null) or (@depId=0) select @depId=0, @tstDep=0
  38. if (@accId is null) or (@accId=0) select @accId=0, @tstAcc=0
  39. if @combinaison = 7 and @droitid<>0
  40. begin
  41.  /***************** pas de perimetre *********/
  42.  select  distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName,
  43.   emp.emailaddress
  44.  from  users u, employee emp, zUserProfilePerimetre zupp, zprofileGroupeDroit zpgd, UserOrg uo
  45.  where  uo.orgid = @orgid
  46.  and u.userid = uo.userid
  47.  and zupp.userId = u.userId
  48.  and zupp.profileId = zpgd.profileId
  49.  and zpgd.groupeDroitId = @droitId
  50.  and  u.employeeid *= emp.employeeid
  51.  and  u.active = 'A'
  52. --  and emp.orgid = @orgid
  53.  order by emp.lastname
  54. end
  55. else
  56. begin
  57.  if @droitid=0
  58.  begin
  59.   if @tous = 1
  60.   begin
  61.    -- Liste de tous les utilisateurs
  62.    select  distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName,
  63.     emp.emailaddress
  64.    from  users u, ZVue_UserProfilePerimRegion zupp, employee emp, UserOrg uo
  65.    where uo.orgid = @orgid
  66.    and u.userid = uo.userid
  67.    and u.userId = zupp.userId
  68.    and ( (locId=@locId) or (@tstLoc=0) or (locId=0) )
  69.    and ( (accId=@accId) or (@tstAcc=0) or (accId=0) )
  70.    and ( (depId=@depId) or (@tstDep=0) or (depid=0) )
  71.    and  u.employeeid *= emp.employeeid
  72.    and  u.active = 'A'
  73. --    and emp.orgid = @orgid
  74.    order by emp.lastname
  75.   end
  76.   else
  77.   begin
  78.    -- Liste des utilisateurs qu'en fonction du COUPLE
  79.    select  distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName,
  80.     emp.emailaddress
  81.    from  users u, ZVue_UserProfilePerimRegion zupp, employee emp, UserOrg uo
  82.    where uo.orgid = @orgid
  83.    and u.userid = uo.userid
  84.    and u.userId=zupp.userId
  85.    and ( (locId=@locId) or (@tstLoc=0) )
  86.    and ( (accId=@accId) or (@tstAcc=0) )
  87.    and ( (depId=@depId) or (@tstDep=0) )
  88.    and  u.employeeid *= emp.employeeid
  89.    and  u.active = 'A'
  90. --    and emp.orgid = @orgid
  91.    order by emp.lastname
  92.   end
  93.  end
  94.  else
  95.  begin
  96.   if @tous = 1
  97.   begin
  98.    -- Liste de tous les utilisateurs
  99.    select  distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName,
  100.     emp.emailaddress
  101.    from  users u, ZVue_UserProfilePerimRegion zupp, zprofileGroupeDroit zpgd, employee emp, UserOrg uo
  102.    where uo.orgid = @orgid
  103.    and u.userid = uo.userid
  104.    and u.userId = zupp.userId
  105.    and zupp.profileId = zpgd.profileId
  106.    and zpgd.GroupedroitId = @droitId
  107.    and ( (locId=@locId) or (@tstLoc=0) or (locId=0) )
  108.    and ( (accId=@accId) or (@tstAcc=0) or (accId=0) )
  109.    and ( (depId=@depId) or (@tstDep=0) or (depid=0) )
  110.    and  u.employeeid *= emp.employeeid
  111.    and  u.active = 'A'
  112. --    and emp.orgid = @orgid
  113.    order by emp.lastname
  114.   end
  115.   else
  116.   begin
  117.    -- Liste des utilisateurs qu'en fonction du COUPLE et du DROIT
  118.    select  distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName,
  119.     emp.emailaddress
  120.    from  users u, ZVue_UserProfilePerimRegion zupp, zprofileGroupeDroit zpgd, employee emp, UserOrg uo
  121.    where uo.orgid = @orgid
  122.    and u.userid = uo.userid
  123.    and u.userId = zupp.userId
  124.    and zupp.profileId=zpgd.profileId
  125.    and zpgd.GroupedroitId = @droitId
  126.    and ( (locId=@locId) or (@tstLoc=0)  )
  127.    and ( (accId=@accId) or (@tstAcc=0)  )
  128.    and ( (depId=@depId) or (@tstDep=0)  )
  129.    and  u.employeeid *= emp.employeeid
  130.    and  u.active = 'A'
  131. --    and emp.orgid = @orgid
  132.    order by emp.lastname
  133.   end
  134.  end
  135. end
  136. select @lResult = @@rowcount
  137. GO


 
APRES :

Code :
  1. CREATE PROCEDURE ics_usersListForPerimDroit
  2. @orgId  int,
  3. @accId  int,
  4. @depId  int,
  5. @locId  int,
  6. @droitId int,
  7. @tous  int=1,
  8. @lResult int output
  9. AS
  10. -- SCR V7.1
  11. /*SCR V7.0.1
  12. userId : id de l'utilisateur pour lequel on doit verifier les contraintes
  13. depid, locid, accid :  
  14.  id pour lequel on doit verifier la retriction, si null, pas de test
  15. combinaison : (0,1,2,3,4,5,6)  0:cs+ac+dep  1:cs   2:ac  3:dep  4:cs+ac  5:cs+dep  6:ac+dep
  16.   on utilise les contrainte sur ca.
  17. isOk :  1 l'utilisateur a verifier toutes les contraintes,  
  18.  0 une contrainte n'est pas satisfaite
  19. */
  20. -- SD : 22/02/2005
  21. -- Maintenant, si cette procédure reçoit @orgid = -1 alors on doit récupérer les comptes dans toutes les organizations
  22. -- SD : 22/02/2005
  23. -- Crétation d'une table temporaire qui va recevoir tous les userid correspondants aux critères pour chaque organization
  24. create table #tmpU
  25. (
  26.  userid int
  27. )
  28. DECLARE cur_org CURSOR FOR
  29. select orgid
  30. from organization
  31. where (orgid = @orgid or @orgid = -1)
  32. and active = 'A'
  33. and type = 'C'
  34. OPEN cur_org
  35. FETCH NEXT FROM cur_org
  36. INTO @orgid
  37. WHILE @@FETCH_STATUS = 0
  38. BEGIN
  39.  DECLARE @combinaison int
  40.  DECLARE @tstAcc  smallint
  41.  DECLARE @tstDep  smallint
  42.  DECLARE @tstLoc  smallint
  43.  select  @combinaison=perimetreCombinaison
  44.  from zperimetreCombinaison
  45.  where  orgId=@orgId
  46.  if @combinaison=7 select @tstAcc=0, @tstDep=0, @tstLoc=0
  47.  if @combinaison=0 select @tstAcc=1, @tstDep=1, @tstLoc=1
  48.  if @combinaison=1 select @tstAcc=0, @tstDep=0, @tstLoc=1
  49.  if @combinaison=2 select @tstAcc=0, @tstDep=1, @tstLoc=0
  50.  if @combinaison=3 select @tstAcc=1, @tstDep=0, @tstLoc=0
  51.  if @combinaison=4 select @tstAcc=1, @tstDep=0, @tstLoc=1
  52.  if @combinaison=5 select @tstAcc=0, @tstDep=1, @tstLoc=1
  53.  if @combinaison=6 select @tstAcc=1, @tstDep=1, @tstLoc=0
  54.  /** permet de ne pas tester dans le select le (@tstLoc=0) OR (@locId=0) mais juste le 1er**/
  55.  if (@locId is null) or (@locId=0) select @locId=0, @tstLoc=0
  56.  if (@depId is null) or (@depId=0) select @depId=0, @tstDep=0
  57.  if (@accId is null) or (@accId=0) select @accId=0, @tstAcc=0
  58.  if @combinaison = 7 and @droitid<>0
  59.  begin
  60.   /***************** pas de perimetre *********/
  61.   insert into #tmpU
  62.   select u.userid
  63.   from zprofileGroupeDroit zpgd, zUserProfilePerimetre zupp, users u, userorg uo
  64.   where uo.orgid = @orgid
  65.   and u.userid = uo.userid
  66.   and  u.active = 'A'
  67.   and zupp.userid = u.userid
  68.   and zupp.userId = u.userId
  69.   and zpgd.profileId = zupp.profileId
  70.   and zpgd.groupeDroitId = @droitId
  71. /*   select  distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName, emp.emailaddress
  72.   from  users u, employee emp, zUserProfilePerimetre zupp, zprofileGroupeDroit zpgd, UserOrg uo
  73.   where  uo.orgid = @orgid
  74.   and u.userid = uo.userid
  75.   and zupp.userId = u.userId
  76.   and zupp.profileId = zpgd.profileId
  77.   and zpgd.groupeDroitId = @droitId
  78.   and  u.employeeid *= emp.employeeid
  79.   and  u.active = 'A'
  80.   order by emp.lastname */
  81.  end
  82.  else
  83.  begin
  84.   if @droitid=0
  85.   begin
  86.    if @tous = 1
  87.    begin
  88.     -- Liste de tous les utilisateurs
  89.     insert into #tmpU
  90.     select u.userid
  91.     from ZVue_UserProfilePerimRegion zupp, users u, UserOrg uo
  92.     where uo.orgid = @orgid
  93.     and u.userid = uo.userid
  94.     and  u.active = 'A'
  95.     and zupp.userid = u.userid
  96.     and ((zupp.locId = @locId) or (@tstLoc = 0) or (zupp.locId=0))
  97.     and ((zupp.accId = @accId) or (@tstAcc = 0) or (zupp.accId=0))
  98.     and ((zupp.depId = @depId) or (@tstDep = 0) or (zupp.depid=0))
  99. /*     select  distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName, emp.emailaddress
  100.     from  users u, ZVue_UserProfilePerimRegion zupp, employee emp, UserOrg uo
  101.     where uo.orgid = @orgid
  102.     and u.userid = uo.userid
  103.     and u.userId = zupp.userId
  104.     and ( (locId=@locId) or (@tstLoc=0) or (locId=0) )
  105.     and ( (accId=@accId) or (@tstAcc=0) or (accId=0) )
  106.     and ( (depId=@depId) or (@tstDep=0) or (depid=0) )
  107.     and  u.employeeid *= emp.employeeid
  108.     and  u.active = 'A'
  109.     order by emp.lastname */
  110.    end
  111.    else
  112.    begin
  113.     -- Liste des utilisateurs qu'en fonction du COUPLE
  114.     insert into #tmpU
  115.     select u.userid
  116.     from ZVue_UserProfilePerimRegion zupp, users u, UserOrg uo
  117.     where uo.orgid = @orgid
  118.     and u.userid = uo.userid
  119.     and  u.active = 'A'
  120.     and zupp.userId = u.userId
  121.     and ((zupp.locId = @locId) or (@tstLoc = 0))
  122.     and ((zupp.accId = @accId) or (@tstAcc = 0))
  123.     and ((zupp.depId = @depId) or (@tstDep = 0))
  124. /*     select  distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName, emp.emailaddress
  125.     from  users u, ZVue_UserProfilePerimRegion zupp, employee emp, UserOrg uo
  126.     where uo.orgid = @orgid
  127.     and u.userid = uo.userid
  128.     and u.userId=zupp.userId
  129.     and ( (locId=@locId) or (@tstLoc=0) )
  130.     and ( (accId=@accId) or (@tstAcc=0) )
  131.     and ( (depId=@depId) or (@tstDep=0) )
  132.     and  u.employeeid *= emp.employeeid
  133.     and  u.active = 'A'
  134.     order by emp.lastname */
  135.    end
  136.   end
  137.   else
  138.   begin
  139.    if @tous = 1
  140.    begin
  141.     -- Liste de tous les utilisateurs
  142.     insert into #tmpU
  143.     select u.userid
  144.     from zprofileGroupeDroit zpgd, ZVue_UserProfilePerimRegion zupp, users u, UserOrg uo
  145.     where uo.orgid = @orgid
  146.     and u.userid = uo.userid
  147.     and  u.active = 'A'
  148.     and zupp.userId = u.userId
  149.     and ((zupp.locId = @locId) or (@tstLoc = 0) or (zupp.locId = 0))
  150.     and ((zupp.accId = @accId) or (@tstAcc = 0) or (zupp.accId = 0))
  151.     and ((zupp.depId = @depId) or (@tstDep = 0) or (zupp.depid = 0))
  152.     and zpgd.profileId = zupp.profileId
  153.     and zpgd.GroupedroitId = @droitId
  154. /*     select  distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName, emp.emailaddress  
  155.     from  users u, ZVue_UserProfilePerimRegion zupp, zprofileGroupeDroit zpgd, employee emp, UserOrg uo
  156.     where uo.orgid = @orgid
  157.     and u.userid = uo.userid
  158.     and u.userId = zupp.userId
  159.     and zupp.profileId = zpgd.profileId
  160.     and zpgd.GroupedroitId = @droitId
  161.     and ( (locId=@locId) or (@tstLoc=0) or (locId=0) )
  162.     and ( (accId=@accId) or (@tstAcc=0) or (accId=0) )
  163.     and ( (depId=@depId) or (@tstDep=0) or (depid=0) )
  164.     and  u.employeeid *= emp.employeeid
  165.     and  u.active = 'A'
  166.     order by emp.lastname */
  167.    end
  168.    else
  169.    begin
  170.     -- Liste des utilisateurs qu'en fonction du COUPLE et du DROIT
  171.     insert into #tmpU
  172.     select u.userid
  173.     from zprofileGroupeDroit zpgd, ZVue_UserProfilePerimRegion zupp, users u, UserOrg uo
  174.     where uo.orgid = @orgid
  175.     and u.userid = uo.userid
  176.     and  u.active = 'A'
  177.     and zupp.userId = u.userId
  178.     and ((zupp.locId = @locId) or (@tstLoc = 0))
  179.     and ((zupp.accId = @accId) or (@tstAcc = 0))
  180.     and ((zupp.depId = @depId) or (@tstDep = 0))
  181.     and zpgd.profileId = zupp.profileId
  182.     and zpgd.GroupedroitId = @droitId
  183. /*     select  distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName, emp.emailaddress  
  184.     from  users u, ZVue_UserProfilePerimRegion zupp, zprofileGroupeDroit zpgd, employee emp, UserOrg uo
  185.     where uo.orgid = @orgid
  186.     and u.userid = uo.userid
  187.     and u.userId = zupp.userId
  188.     and zupp.profileId=zpgd.profileId
  189.     and zpgd.GroupedroitId = @droitId
  190.     and ( (locId=@locId) or (@tstLoc=0)  )
  191.     and ( (accId=@accId) or (@tstAcc=0)  )
  192.     and ( (depId=@depId) or (@tstDep=0)  )
  193.     and  u.employeeid *= emp.employeeid
  194.     and  u.active = 'A'
  195.     order by emp.lastname */
  196.    end
  197.   end
  198.  end
  199.  FETCH NEXT FROM cur_org
  200.  INTO @orgid
  201. END
  202. CLOSE authors_cursor
  203. DEALLOCATE authors_cursor
  204. select distinct u.userId, emp.employeeid, emp.lastname, emp.firstname, u.login as LoginName, emp.emailaddress
  205. from employee emp, users, #tmpU
  206. where users.userid = u.userid
  207. and emp.employeeid =* u.empployeeid
  208. select @lResult = @@rowcount
  209. GO


 
Si avec ça ça marche encore, bah je peux aller me faire moine :D


Message édité par Arjuna le 22-02-2005 à 16:29:23
Reply

Marsh Posté le 23-02-2005 à 02:13:03    

[:mlc]  
Et ça tournait (tourne ?) sur quoi et comment ce turc ? Le reste de l'appli est comment ?
 
Si t'en as encore, n'hésite pas, y a une forme de génie là dedans ! :D
 
Bon courage. ;)

Reply

Marsh Posté le 23-02-2005 à 09:46:44    

Bah... La procédure marchait plus (quelques bugs à la con, dont un très très con : cette PS est appelée par une autre, qui utilise déjà une table temporaire du même nom et avec une structure différente :D)
 
Maintenant c'est tout réparré, et ça marche :)
 
Alors, les détails techniques :
- OS : Windows NT 4.0 Server
- SGBD : SQL Server 2000
- Server d'appli : IIS 4.0
 
Il s'agit d'une appli dont la structure est heureusement plutôt bonne (pas ce qu'il y a de mieu niveau performances, mais pour la maintenance, y'a pas photo).
 
Les PS de la SGBD regroupent toutes les requêtes dans la base (du coup y'en a plus de 200 :D)
Des DLL écrites en VB6 contiennent toute "l'intelligence" de l'application. Ce sont uniquement elles qui sont authorisées à se connecter à la base de données.
Des pages ASP ne font qu'appel aux objets VB6 afin de récupérer les information et les mettre en forme.
 
Heureusement qu'il y a cette architecture, parceque sinon, c'est clair que ça ferait mal :D

Reply

Marsh Posté le 23-02-2005 à 09:59:47    

tu bosses en entreprise?
tu balances des sources comme ça?

Reply

Marsh Posté le 23-02-2005 à 10:08:23    

IIS ça fait serveur d'appli aussi ????


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 23-02-2005 à 10:16:12    

moktar1er >
1/ bah oui [:spamafote]
2/ bah oui [:spamafote]
 
Y'a rien de secret défense là-dedans...
 
nraynaud > bah oui [:spamafote]
Tout comme Apache, un serveur d'appli, c'est ni plus ni moins qu'un environnement applicatif capable d'héberger des applications. C'est les publicités made in Sun et Microsoft qui déforment le sens de tous les mots. Site Server et Commerce Server, présentés comme des serveurs d'application ne sont ni plus ni moins que des add-on de IIS et autre modules de Windows par exemple, mais il n'y a aucune modification particulière à l'environnement (mise à part quelques objets métiers pré-installés en plus)


Message édité par Arjuna le 23-02-2005 à 10:17:54
Reply

Marsh Posté le 23-02-2005 à 10:21:05    

ah ? ok.  
 
pour moi un serveur d'appli ça gère les objets métiers et ça leur apporte des services : transactions, persistance, indépendance par rapport au matériel (pour la migration dans lae systèmes distribués par ex.) et ça offre un point d'accès unique à ce tiers pour la gestion.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 23-02-2005 à 10:22:08    

Arjuna a écrit :

moktar1er >
1/ bah oui [:spamafote]
2/ bah oui [:spamafote]


 
Ce n'est pas une histoire de "secret défense"... Je me demande juste si ça ne peut pas être un motif de licenciement que de dévoiler publiquement des choses "internes" à l'entreprise c'est tout [:spamafote]

Reply

Marsh Posté le 23-02-2005 à 10:36:45    

nraynaud a écrit :

ah ? ok.  
 
pour moi un serveur d'appli ça gère les objets métiers et ça leur apporte des services : transactions, persistance, indépendance par rapport au matériel (pour la migration dans lae systèmes distribués par ex.) et ça offre un point d'accès unique à ce tiers pour la gestion.


Bah c'est le cas d'un serveur Web :
-> Un site Web, grâve à IIS ou Apache, je peux le changer de serveur sans problème (bon, avec IIS on est cantoné aux OS Microsoft, mais bon, ça tourne aussi bien sur un NT4 qu'un 2K ou 2K3 voir même un XP).
-> L'environnement de script propose des objets plus ou moins métier, je veux dire dédiés à ce type d'application : sessions, cookies, etc.
-> Les environnements de script PHP ou ASP sont parfaitement capable de gérer les exceptions sans "planter", et donc gérer ses propres transactions, ainsi qu'utiliser des objets utilisant des transactions eux-même (SGBD, etc.)
 
Bref, c'est des serveurs d'application "light" si tu veux, mais ça reste des serveurs d'application ;)

Reply

Marsh Posté le 23-02-2005 à 10:49:05    

Moktar1er a écrit :

Ce n'est pas une histoire de "secret défense"... Je me demande juste si ça ne peut pas être un motif de licenciement que de dévoiler publiquement des choses "internes" à l'entreprise c'est tout [:spamafote]


Ca peut en être une, mais uniquement dans le cas où :
1/ déjà, faudrait que vous sâchiez chez qui je suis, je suis plus chez GE :p
2/ ensuite, il faut que le code rendu public contienne des informations sensibles (mots de passe, données internes, algorythme vraiment complexe, etc.)
 
Donc dans mon cas, c'est comme si je poste sur un forum une main d'une personne que j'ai pris en photo en disant que la personne était vraiment très conne et tout ce qu'on veut.
Si la main n'est pas spécialement reconnaissable, alors même si la personne se reconnaît, elle ne pourra jamais rien dire devant un tribunal, car il n'y a pas de substance à pladoyé.
Par contre, évidement, si je poste l'intégralité du code ici, ou le contenu de tables qui contiennent des informations sensibles (contrats, etc.) c'est même pas un licenciement que je risque, mais carrément de très gros ennuis juridiques passibles de prision. [:spamafote]
 
Bref, la lois est bien faite, tant qu'on reste dans le domaine de "l'échantillon", qui ne peut en aucun cas être source de préjudice, on ne peut pas poursuivre une personne. Après, ça c'est le droit français, je sais pas ce que ça donne à l'étranger.
Sinon, en plus, les extraits de code que j'ai posté, c'est pas seulement pour râler, c'est aussi pour montrer à ceux qui se lance dans le PL/SQL / T-SQL ce qu'il ne faut surtout pas faire. C'est donc à but pédagogique (avec des lois assouplies dans ce cas) :p


Message édité par Arjuna le 23-02-2005 à 10:52:28
Reply

Marsh Posté le 24-02-2005 à 11:47:36    

Que c'est beau :love:
 
On en mangerait !
 

Code :
  1. dim void
  2. call obContrat.getPVEnteteDetail(i, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void, minRights)


 
Tout ça pour récupérer 1 paramètre :bounce:

Reply

Marsh Posté le 24-02-2005 à 12:56:20    

j'aime le "dim void" :D

Reply

Marsh Posté le 24-02-2005 à 13:43:59    

bah oui, void n'existe pas en VB :D

Reply

Marsh Posté le 24-02-2005 à 15:21:06    

Et ne rien mettre ça marche pas ?

Code :
  1. call obContrat.getPVEnteteDetail(i,,,,,,,,,,,,,,,,,, minRights)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed