f_quk_allcol.srf 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. $PBExportHeader$f_quk_allcol.srf
  2. global type f_quk_allcol from function_object
  3. end type
  4. forward prototypes
  5. global function s_dw2xls_dytitle f_quk_allcol (ref datawindow dw_dw, string str_dw_s)
  6. end prototypes
  7. global function s_dw2xls_dytitle f_quk_allcol (ref datawindow dw_dw, string str_dw_s);s_dw2xls_dytitle rtn_s_dw2xls_dytitle
  8. Int cur_development = 0
  9. Int cur_developtype = 0
  10. String cur_AllowVersion
  11. Long count
  12. datastore ls_ds
  13. ls_ds = Create datastore
  14. ls_ds.DataObject = 'dw_rbtnfilter_setlayout'
  15. datastore ls_ds_ori
  16. ls_ds_ori = Create datastore
  17. ls_ds_ori.DataObject = str_dw_s
  18. String ls_dwname, ls_AllowVersion
  19. String ls_mdfstr //存放modify string
  20. String des_1,des_2,szColumn,ls_dbname
  21. Long nColumnIndex,nColumnCount,lRow,ls_i
  22. s_dw_rbtnfilter_setlayout_rt ls_s_rt
  23. String ls_dwobjectstr,ls_type
  24. Long li_start,li_tab_pos
  25. Int li_lock
  26. String ls_object, ls_object_col, ls_object_txt, ls_object_txt_text
  27. String ls_mdfstr_visible, ls_mdfstr_x, ls_mdfstr_width, ls_mdfstr_alignment, ls_mdfstr_DftValue
  28. String ls_mdfstr_text
  29. String ls_mdfstr_height,ls_mdfstr_y,ls_mdfstr_Taborder
  30. String ls_mdfstr_value
  31. String ls_mdfstr_visible_zt
  32. String ls_mdfstr_value_zt
  33. ls_dwobjectstr = dw_dw.Describe("Datawindow.Objects") + "~t"
  34. ls_dwname = str_dw_s //修改点
  35. //Int li_dwstyle
  36. //li_dwstyle = Long(This.Object.DataWindow.Processing)
  37. //IF li_dwstyle <> 4 THEN //crosstab 不能保存布局
  38. IF cur_development = 0 THEN
  39. ls_AllowVersion = Fill("0",sys_version_int - 1)+"1"+Fill("0",20 - sys_version_int)
  40. ELSE
  41. IF cur_AllowVersion = "" THEN
  42. ls_AllowVersion = Fill("0",sys_version_int - 1)+"1"+Fill("0",20 - sys_version_int)
  43. ELSE
  44. ls_AllowVersion = cur_AllowVersion
  45. END IF
  46. END IF
  47. //版本方案
  48. SELECT DwObjVisible, DwObjText,
  49. DwObjX, DwObjY, DwObjWidth,
  50. DwObjHeight, DwObjAlignment,
  51. DwObjTaborder, DwObjDftValue
  52. INTO :ls_mdfstr_visible,:ls_mdfstr_text,
  53. :ls_mdfstr_x,:ls_mdfstr_y,:ls_mdfstr_width,
  54. :ls_mdfstr_height,:ls_mdfstr_alignment,
  55. :ls_mdfstr_Taborder,
  56. :ls_mdfstr_DftValue
  57. FROM sys_dwnSyntax_sys
  58. WHERE AllowVersion = :ls_AllowVersion
  59. And DwName = :ls_dwname;
  60. IF sqlca.SQLCode <> 0 THEN
  61. // lb_def = False
  62. END IF
  63. // //管理员解决方案
  64. SELECT dwnSyntax_layout_column_visible
  65. INTO :ls_mdfstr_visible_zt
  66. FROM sys_user_dwnSyntax
  67. WHERE empid = -1
  68. And DwName = :ls_dwname;
  69. IF sqlca.SQLCode <> 0 THEN
  70. ls_mdfstr_visible_zt = ''
  71. END IF
  72. li_start = 1
  73. li_tab_pos = Pos(ls_dwobjectstr, "~t", li_start)
  74. DO WHILE li_tab_pos > 0
  75. ls_object = Mid(ls_dwobjectstr, li_start, (li_tab_pos - li_start) )
  76. IF Pos(ls_object,'_t') > 0 THEN
  77. ls_object = Mid(ls_dwobjectstr, li_start, (li_tab_pos - li_start) - 2)
  78. ls_type = Lower(Left(dw_dw.Describe(ls_object+".Type"),4))
  79. IF ls_type = 'comp' Or ls_type = 'colu' THEN
  80. des_1 = dw_dw.Describe( ls_object + ".Name")
  81. des_2 = dw_dw.Describe(des_1+ "_t.Text")
  82. ls_object_col = des_1
  83. ls_dbname = dw_dw.Describe( ls_object + ".dbname")
  84. szColumn = f_strip( des_2)
  85. IF szColumn <> "!" THEN
  86. IF cur_developtype = 2 THEN //版本控制模式
  87. ELSE
  88. //查版本方案
  89. ls_mdfstr_value = f_get_obj_visible(dw_dw.DataObject,ls_mdfstr_visible,"visible",ls_object_col)
  90. //版本有效,查用户解决方案
  91. IF ls_mdfstr_value = "1" THEN //
  92. //查用户解决方案是否有效
  93. ls_mdfstr_value_zt = f_get_obj_visible(dw_dw.DataObject,ls_mdfstr_visible_zt,"visible",ls_object_col)
  94. IF ls_mdfstr_value_zt = "1" THEN
  95. li_lock = 0
  96. ELSE
  97. IF sys_power_issuper THEN
  98. li_lock = 2
  99. ELSE
  100. li_lock = 1
  101. END IF
  102. END IF
  103. ELSE
  104. GOTO nxtcol //用户解决方案不显示
  105. END IF
  106. END IF
  107. lRow = ls_ds.InsertRow( 0)
  108. ls_ds.SetItem( lRow, "ctitle", szColumn)
  109. ls_ds.SetItem( lRow, "cname", ls_dbname)
  110. ls_ds.SetItem( lRow, "name", des_1)
  111. ls_ds.SetItem( lRow, "cshow_flag", Long(dw_dw.Describe(des_1+ ".Visible")))
  112. ls_ds.SetItem( lRow, "cwidth", Long(dw_dw.Describe(des_1+ ".width")))
  113. ls_ds.SetItem( lRow, "cx", Long(dw_dw.Describe(des_1+ ".x")))
  114. ls_ds.SetItem( lRow, "nColumnIndex", nColumnIndex)
  115. ls_ds.SetItem( lRow, "lock_flag", li_lock)
  116. ls_ds.SetItem( lRow, "ctype", dw_dw.Describe(des_1+ ".type"))
  117. ls_ds.SetItem( lRow, "ccoltype", dw_dw.Describe(des_1+ ".coltype"))
  118. IF String(dw_dw.Describe(des_1+ ".Visible")) = '1' THEN
  119. count++
  120. rtn_s_dw2xls_dytitle.col_name[count] = des_1
  121. rtn_s_dw2xls_dytitle.title_name[count] = szColumn
  122. rtn_s_dw2xls_dytitle.col_visible[count] = String(dw_dw.Describe(des_1+ ".Visible"))
  123. // messagebox('',rtn_s_dw2xls_dytitle.col_visible[count])
  124. String lkk_type
  125. lkk_type = Lower(Left(dw_dw.Describe(des_1+ ".type"),4))
  126. rtn_s_dw2xls_dytitle.col_type[count] = lkk_type
  127. // messagebox(string(rtn_s_dw2xls_dytitle.col_name[count]),string(rtn_s_dw2xls_dytitle.title_name[count]))
  128. // messagebox(string(rtn_s_dw2xls_dytitle.col_type[count]),string(rtn_s_dw2xls_dytitle.title_name[count]))
  129. END IF
  130. END IF
  131. END IF
  132. END IF
  133. nxtcol:
  134. li_start = li_tab_pos + 1
  135. li_tab_pos = Pos(ls_dwobjectstr, "~t", li_start)
  136. LOOP
  137. ls_ds.SetSort("cx")
  138. ls_ds.Sort()
  139. RETURN rtn_s_dw2xls_dytitle
  140. end function