f_dsr_quck_dwtoexecl_3.srf 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. $PBExportHeader$f_dsr_quck_dwtoexecl_3.srf
  2. global type f_dsr_quck_dwtoexecl_3 from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_dsr_quck_dwtoexecl (ref datawindow dw_1)
  6. global function integer f_dsr_quck_dwtoexecl_3 (ref datawindow ad_dw, string arg_filename)
  7. end prototypes
  8. global function integer f_dsr_quck_dwtoexecl (ref datawindow dw_1);
  9. Long ls_rtn
  10. Long i,j
  11. String ls_s,ls_temp,ls_modify
  12. Long ll_cnt
  13. datastore ds
  14. ds = Create datastore
  15. ds.DataObject = "dw_dw_to_execl"
  16. ds.SetTransObject(sqlca)
  17. //parent.openuserobject(ds,1467,816) //如果是数据窗口控件类型
  18. //ds.InsertRow(0)
  19. //
  20. //ds.SetItem(1,'spt1','fucker' )
  21. //ds.SetItem(1,'spt2',' 些小厂v' )
  22. //
  23. // messagebox('',string(ds.rowcount()))
  24. s_dw2xls_dytitle rtn_s_dw2xls_dytitle
  25. rtn_s_dw2xls_dytitle = f_quk_allcol(dw_1,dw_1.DataObject )
  26. ll_cnt = UpperBound(rtn_s_dw2xls_dytitle.title_name)
  27. FOR j = 1 To ll_cnt
  28. ls_temp = 'spt' + String(j)
  29. ds.Modify(ls_temp + '.width = ' + '600')
  30. ds.Modify(ls_temp +"_t.text = '" + rtn_s_dw2xls_dytitle.title_name[j] + "'")
  31. NEXT
  32. FOR j = ll_cnt + 1 To 100 //隐藏列
  33. ls_modify = ''
  34. ls_temp = 'spt' + String(j)
  35. ls_modify = ls_modify + "destroy " + ls_temp+ '_t ~n ' + ls_temp + '.visible=0 ~n '
  36. IF ls_modify <> '' THEN ds.Modify(ls_modify)
  37. NEXT
  38. //查入行
  39. for i=1 to dw_1.rowcount()
  40. ds.InsertRow(0)
  41. next
  42. //复制值
  43. String ls_Evaluate_str
  44. FOR j = 1 To ll_cnt
  45. // messagebox('',string(dw_1.describe( "Evaluate('" + 'aaa' + "',2)" ))) //计算列
  46. //
  47. //messagebox('',string(dw_1.Describe ( "Evaluate('LookupDisplay(" + 'username' + ")',1)" ))) //非计算列
  48. IF rtn_s_dw2xls_dytitle.col_type[j] <> 'comp' THEN //非计算列
  49. ls_Evaluate_str = ''
  50. FOR i = 1 To dw_1.RowCount()
  51. ls_Evaluate_str = String(dw_1.Describe ( "Evaluate('LookupDisplay(" +rtn_s_dw2xls_dytitle.col_name[j]+ ")'," + String(i)+ ")" ))
  52. ds.SetItem(i,'spt' + string(j),ls_Evaluate_str )
  53. NEXT
  54. ELSE //计算列
  55. ls_Evaluate_str = ''
  56. FOR i = 1 To dw_1.RowCount()
  57. ls_Evaluate_str = string(dw_1.describe( "Evaluate('" +rtn_s_dw2xls_dytitle.col_name[j] + "',"+string(i) + ")" ) )
  58. if ls_Evaluate_str='!' then exit
  59. ds.SetItem(i,'spt' + string(j),ls_Evaluate_str )
  60. NEXT
  61. END IF
  62. NEXT
  63. ls_rtn = ds.SaveAsAscii('C:\Users\dufff\Desktop\aaa.xls')
  64. IF ls_rtn = 1 THEN
  65. MessageBox('','导出成功')
  66. END IF
  67. return ls_rtn
  68. end function
  69. global function integer f_dsr_quck_dwtoexecl_3 (ref datawindow ad_dw, string arg_filename);Long ls_rtn
  70. datastore ds
  71. ds = Create datastore
  72. ds.DataObject = ad_dw.DataObject
  73. ad_dw.ShareData(ds)
  74. //messagebox('',string(ds.rowcount()))
  75. Long i, j, li_pos
  76. String ls_obj, ls_text, ls_err, ls_sql
  77. datastore lds_saveas //导出数据窗
  78. datastore lds_sort //获得根据 object.x 排序的 (band = detail and visible = 1) 的 column/compute
  79. Boolean lb_return //返回值
  80. String ls_pbver //pb 版本信息
  81. environment env //环境变量
  82. String ls_objects,ls_modify
  83. GetEnvironment(env)
  84. ls_pbver = String(env.PBMajorRevision)
  85. ls_objects = ds.Describe("datawindow.objects")
  86. //按~t位置作判断开始循环
  87. DO While (Pos(ls_objects,"~t") > 0)
  88. li_pos = Pos(ls_objects,"~t")
  89. ls_obj = Left(ls_objects,li_pos - 1)
  90. ls_objects = Right(ls_objects,Len(ls_objects) - li_pos)
  91. //(column or compute ) at detail and visible
  92. If (ds.Describe(ls_obj+".band") = "summary" Or&
  93. Pos(ds.Describe(ls_obj+".band"),'trailer') > 0 Or&
  94. ds.Describe(ls_obj+".band") = "footer" ) THEN
  95. ls_modify = "destroy " +ls_obj+ ' ~n ' +ls_obj + '.visible=0 ~n '
  96. IF ls_modify <> '' THEN ds.Modify(ls_modify)
  97. END IF
  98. LOOP
  99. ls_rtn = ds.SaveAsAscii(arg_filename)
  100. IF ls_rtn = 1 THEN
  101. ls_rtn = 1
  102. ELSE
  103. ls_rtn = 0
  104. END IF
  105. //Long i,j
  106. //String ls_s,ls_temp,ls_modify
  107. //
  108. //Long ll_cnt
  109. //datastore ds
  110. //ds = Create datastore
  111. //
  112. //ds.DataObject = "dw_dw_to_execl"
  113. //ds.SetTransObject(sqlca)
  114. ////parent.openuserobject(ds,1467,816) //如果是数据窗口控件类型
  115. //
  116. //
  117. //
  118. //
  119. //s_dw2xls_dytitle rtn_s_dw2xls_dytitle
  120. //
  121. //rtn_s_dw2xls_dytitle = f_quk_allcol(dw_1,dw_1.DataObject )
  122. //ll_cnt = UpperBound(rtn_s_dw2xls_dytitle.title_name)
  123. //
  124. //FOR j = 1 To ll_cnt
  125. //
  126. // ls_temp = 'spt' + String(j)
  127. // ds.Modify(ls_temp + '.width = ' + '600')
  128. // ds.Modify(ls_temp +"_t.text = '" + rtn_s_dw2xls_dytitle.title_name[j] + "'")
  129. //
  130. //
  131. //
  132. //
  133. //NEXT
  134. //
  135. //FOR j = ll_cnt + 1 To 100 //隐藏列
  136. // ls_modify = ''
  137. // ls_temp = 'spt' + String(j)
  138. // ls_modify = ls_modify + "destroy " + ls_temp+ '_t ~n ' + ls_temp + '.visible=0 ~n '
  139. // IF ls_modify <> '' THEN ds.Modify(ls_modify)
  140. //
  141. //
  142. //NEXT
  143. //
  144. ////查入行
  145. //FOR i = 1 To dw_1.RowCount()
  146. // ds.InsertRow(0)
  147. //NEXT
  148. //
  149. //
  150. //
  151. ////复制值
  152. //String ls_Evaluate_str
  153. //Open(w_sys_wait_jdt) //初始化进度条
  154. //w_sys_wait_jdt.Show()
  155. //w_sys_wait_jdt.wf_accepttol(ll_cnt)
  156. //FOR j = 1 To ll_cnt
  157. //
  158. // IF rtn_s_dw2xls_dytitle.col_visible[j] = '0' THEN CONTINUE
  159. // w_sys_wait_jdt.st_msg.Text = rtn_s_dw2xls_dytitle.title_name[j] + " 正在导出execl..." //进度信息
  160. // // messagebox('',string(dw_1.describe( "Evaluate('" + 'aaa' + "',2)" ))) //计算列
  161. // //
  162. // //messagebox('',string(dw_1.Describe ( "Evaluate('LookupDisplay(" + 'username' + ")',1)" ))) //非计算列
  163. //
  164. //
  165. // IF rtn_s_dw2xls_dytitle.col_type[j] <> 'comp' THEN //非计算列
  166. // ls_Evaluate_str = ''
  167. // FOR i = 1 To dw_1.RowCount()
  168. // ls_Evaluate_str = String(dw_1.Describe ( "Evaluate('LookupDisplay(" +rtn_s_dw2xls_dytitle.col_name[j]+ ")'," + String(i)+ ")" ))
  169. // ds.SetItem(i,'spt' + String(j),ls_Evaluate_str )
  170. // NEXT
  171. //
  172. //
  173. // ELSE //计算列
  174. // ls_Evaluate_str = ''
  175. // FOR i = 1 To dw_1.RowCount()
  176. //
  177. // ls_Evaluate_str = String(dw_1.Describe( "Evaluate('" +rtn_s_dw2xls_dytitle.col_name[j] + "',"+String(i) + ")" ) )
  178. //
  179. // IF ls_Evaluate_str = '!' THEN EXIT
  180. // ds.SetItem(i,'spt' + String(j),ls_Evaluate_str )
  181. // NEXT
  182. // END IF
  183. //
  184. //
  185. // w_sys_wait_jdt.wf_inc(j) //进度
  186. //NEXT
  187. //
  188. //
  189. //
  190. //
  191. //
  192. //
  193. //
  194. //
  195. //
  196. //
  197. //
  198. //
  199. //
  200. ls_rtn = ds.SaveAsAscii(arg_filename)
  201. //
  202. //Close(w_sys_wait_jdt)
  203. IF ls_rtn = 1 THEN
  204. ls_rtn = 1
  205. ELSE
  206. ls_rtn = 0
  207. END IF
  208. RETURN ls_rtn
  209. end function