w_define.srw 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056
  1. $PBExportHeader$w_define.srw
  2. forward
  3. global type w_define from w_publ_base
  4. end type
  5. type tab_1 from tab within w_define
  6. end type
  7. type tabpage_1 from userobject within tab_1
  8. end type
  9. type dw_1 from u_dw_rbtnfilter within tabpage_1
  10. end type
  11. type tabpage_1 from userobject within tab_1
  12. dw_1 dw_1
  13. end type
  14. type tabpage_2 from userobject within tab_1
  15. end type
  16. type dw_2 from u_dw_rbtnfilter within tabpage_2
  17. end type
  18. type tabpage_2 from userobject within tab_1
  19. dw_2 dw_2
  20. end type
  21. type tabpage_3 from userobject within tab_1
  22. end type
  23. type dw_3 from u_dw_rbtnfilter within tabpage_3
  24. end type
  25. type tabpage_3 from userobject within tab_1
  26. dw_3 dw_3
  27. end type
  28. type tab_1 from tab within w_define
  29. tabpage_1 tabpage_1
  30. tabpage_2 tabpage_2
  31. tabpage_3 tabpage_3
  32. end type
  33. type cb_1 from uo_imflatbutton within w_define
  34. end type
  35. type cb_2 from uo_imflatbutton within w_define
  36. end type
  37. type cb_3 from uo_imflatbutton within w_define
  38. end type
  39. type cb_4 from uo_imflatbutton within w_define
  40. end type
  41. type cb_5 from uo_imflatbutton within w_define
  42. end type
  43. type cb_6 from uo_imflatbutton within w_define
  44. end type
  45. type cb_help from uo_imflatbutton within w_define
  46. end type
  47. type ln_bar from line within w_define
  48. end type
  49. type ln_bar2 from line within w_define
  50. end type
  51. type r_bar from rectangle within w_define
  52. end type
  53. end forward
  54. global type w_define from w_publ_base
  55. integer width = 3602
  56. integer height = 2296
  57. string title = "定义资料导入"
  58. boolean maxbox = true
  59. windowstate windowstate = maximized!
  60. long printnum = 34165640
  61. event ue_help ( )
  62. tab_1 tab_1
  63. cb_1 cb_1
  64. cb_2 cb_2
  65. cb_3 cb_3
  66. cb_4 cb_4
  67. cb_5 cb_5
  68. cb_6 cb_6
  69. cb_help cb_help
  70. ln_bar ln_bar
  71. ln_bar2 ln_bar2
  72. r_bar r_bar
  73. end type
  74. global w_define w_define
  75. type variables
  76. datawindow dw_2,dw_3,dw_1
  77. end variables
  78. forward prototypes
  79. public subroutine wf_insertrow (datawindow arg_dw)
  80. public subroutine wf_delrow (datawindow arg_dw)
  81. public subroutine wf_savefile (datawindow arg_dw)
  82. public function integer wf_check_mtrl (ref string arg_msg)
  83. public function integer wf_check_cust (ref string arg_msg)
  84. public function integer wf_check_spt (ref string arg_msg)
  85. protected function integer wf_openfile (datawindow arg_dw)
  86. public subroutine wf_import_mtrl ()
  87. public subroutine wf_import_spt ()
  88. public subroutine wf_import_cust ()
  89. end prototypes
  90. event ue_help();Int i
  91. i = htmlhelpA(Handle(THIS), sys_help_chm, 0, THIS.Title+".html")
  92. end event
  93. public subroutine wf_insertrow (datawindow arg_dw);long li_row
  94. li_row=arg_dw.insertrow(0)
  95. arg_dw.scrolltorow(li_row)
  96. arg_dw.setcolumn(1)
  97. end subroutine
  98. public subroutine wf_delrow (datawindow arg_dw);
  99. IF arg_dw.GETROW()=0 THEN
  100. RETURN
  101. END IF
  102. arg_dw.DeleteRow (0)
  103. arg_dw.TriggerEvent (rowfocuschanged!)
  104. end subroutine
  105. public subroutine wf_savefile (datawindow arg_dw);////IF NOT sys_power_issuper THEN
  106. //// MessageBox(publ_operator,'你没有使用权限!')
  107. //// RETURN
  108. ////END IF
  109. ////
  110. //
  111. ////new
  112. //Integer i
  113. //String Pathname,Filename
  114. //String arg_filename,arg_msg
  115. //Blob arg_blob
  116. //
  117. //
  118. //IF GetFileSaveName("选择备份文件",Pathname,Filename,'xls',"Excel,*.xls") < 1 THEN RETURN
  119. //IF Trim(Pathname) <> '' AND Trim(Filename) <> "" THEN
  120. //// Pathname
  121. //END IF
  122. //
  123. //arg_filename = Trim(Pathname)
  124. //IF arg_filename = '' THEN
  125. // MessageBox('提示','请输入文件名称', Information!, OK! )
  126. // RETURN
  127. //END IF
  128. //
  129. //IF FileExists(arg_filename) THEN
  130. // IF MessageBox("询问","指定文件已经存在,是否覆盖该文件?",question!,yesno!,2) = 2 THEN
  131. // RETURN
  132. // END IF
  133. //END IF
  134. //
  135. //arg_dw.AcceptText( )
  136. //
  137. ////n_cst_dw2excel n_excel
  138. ////n_excel.OF_SetTipsWindow("w_tipsabc","正在生成Excel文件,请稍候.....")
  139. ////n_excel.OF_dw2Excel(arg_dw,arg_filename)
  140. //gf_dw_to_excel(arg_dw,arg_filename)
  141. //
  142. //
  143. //IF NOT sys_power_issuper THEN
  144. // MessageBox(publ_operator,'你没有使用权限!')
  145. // RETURN
  146. //END IF
  147. //
  148. //new
  149. Integer i
  150. String Pathname,Filename
  151. String arg_filename,arg_msg
  152. Blob arg_blob
  153. IF GetFileSaveName("选择备份文件",Pathname,Filename,'xls',"Excel,*.xls") < 1 THEN RETURN
  154. IF Trim(Pathname) <> '' AND Trim(Filename) <> "" THEN
  155. // Pathname
  156. END IF
  157. arg_filename = Trim(Pathname)
  158. IF arg_filename = '' THEN
  159. MessageBox('提示','请输入文件名称', Information!, OK! )
  160. RETURN
  161. END IF
  162. IF FileExists(arg_filename) THEN
  163. IF MessageBox("询问","指定文件已经存在,是否覆盖该文件?",question!,yesno!,2) = 2 THEN
  164. RETURN
  165. END IF
  166. END IF
  167. arg_dw.AcceptText( )
  168. //n_cst_dw2excel n_excel
  169. //n_excel.OF_SetTipsWindow("w_tipsabc","正在生成Excel文件,请稍候.....")
  170. //n_excel.OF_dw2Excel(arg_dw,arg_filename)
  171. // TODO: 隐藏批修改
  172. string ls_objs
  173. long ll_pos = 1, ll_end, ll_cnt = 0
  174. string ls_name, ls_names[]
  175. string ls_oldvalues[]
  176. ls_objs = arg_dw.describe('DataWindow.Objects')
  177. if len(ls_objs) > 0 then
  178. ll_end = pos(ls_objs, '~t', ll_pos)
  179. do while ll_end > 0
  180. ls_name = mid(ls_objs, ll_pos, ll_end - ll_pos)
  181. if mid(ls_name, 1, 6) = 't_mod_' OR ls_name = 'compute_1' then
  182. ll_cnt ++
  183. ls_names[ll_cnt] = ls_name
  184. end if
  185. ll_pos = ll_end + 1
  186. ll_end = pos(ls_objs, '~t', ll_pos)
  187. loop
  188. ls_name = mid(ls_objs, ll_pos)
  189. if mid(ls_name, 1, 6) = 't_mod_' OR ls_name = 'compute_1' then
  190. ll_cnt ++
  191. ls_names[ll_cnt] = ls_name
  192. end if
  193. for ll_cnt = 1 to upperbound(ls_names)
  194. ls_oldvalues[ll_cnt] = arg_dw.describe(ls_names[ll_cnt] + ".Visible")
  195. arg_dw.modify(ls_names[ll_cnt] + ".Visible = '0'")
  196. next
  197. end if
  198. //gf_dw_to_excel(arg_dw,arg_filename)
  199. n_cst_dw2Excel lnv_Excel
  200. lnv_Excel.OF_dw2Excel(arg_dw,arg_filename,'Sheet1')
  201. // TODO: 显示批修改
  202. for ll_cnt = 1 to upperbound(ls_names)
  203. arg_dw.modify(ls_names[ll_cnt] + ".Visible = '" + ls_oldvalues[ll_cnt] + "'")
  204. next
  205. end subroutine
  206. public function integer wf_check_mtrl (ref string arg_msg);Long i,rowcnt,rslt = 1,cnt,j,cur,strcunt,k,mtrlorigin
  207. String Columnname,storagename,storname
  208. String mtrlcode
  209. String ls_temp,dscrp
  210. String mtrlname,mtrlmodes
  211. rowcnt = dw_1.RowCount( )
  212. IF rowcnt < 1 THEN RETURN rslt
  213. Open(w_sys_wait_jdt) //初始化进度条
  214. w_sys_wait_jdt.Show()
  215. w_sys_wait_jdt.wf_accepttol(rowcnt)
  216. w_sys_wait_jdt.wf_inc(0.5)
  217. w_sys_wait_jdt.st_msg.Text = "正在检查数据..."
  218. dw_1.AcceptText( )
  219. //检查数据
  220. FOR i = 1 TO rowcnt
  221. w_sys_wait_jdt.wf_inc(i)
  222. dw_1.Object.mtrlcode[i] = Trim(dw_1.Object.mtrlcode[i])
  223. dw_1.Object.mtrlname[i] = Trim(dw_1.Object.mtrlname[i])
  224. // dw_1.Object.mtrltype[i] = Trim(dw_1.Object.mtrltype[i])
  225. // dw_1.Object.mtrlmodes[i] = Trim(dw_1.Object.mtrlmodes[i])
  226. dw_1.Object.dscrp[i] = Trim(dw_1.Object.dscrp[i])
  227. dw_1.Object.unit[i] = Trim(dw_1.Object.unit[i])
  228. mtrlname = dw_1.Object.mtrlname[i]
  229. IF Len(mtrlname) <= 50 THEN
  230. dw_1.Object.mtrlname[i] = mtrlname
  231. ELSE
  232. MessageBox('提示',"物料名称不能超过50个字符", Information!, OK! )
  233. dw_1.Object.mtrlname[i] = ''
  234. END IF
  235. dscrp = dw_1.Object.dscrp[i]
  236. IF Len(dscrp) <= 255 THEN
  237. dw_1.Object.dscrp[i] = dscrp
  238. ELSE
  239. MessageBox('提示',"备注不能超过255个字符", Information!, OK! )
  240. dw_1.Object.dscrp[i] = ''
  241. END IF
  242. // if dw_1.Object.mtrlname[i]='' and dw_1.Object.mtrlcode[i]='' then
  243. // continue
  244. // end if
  245. String ls_mtrltype
  246. Long ll_mtrltypeid
  247. ls_mtrltype = Trim(dw_1.Object.mtrltype[i])
  248. IF ls_mtrltype = '' THEN
  249. rslt = 0
  250. arg_msg = '请输入物料类别'
  251. Columnname = 'mtrltype'
  252. GOTO ext
  253. END IF
  254. mtrlorigin = dw_1.Object.mtrlorigin[i]
  255. SELECT count(mtrltypeid)
  256. INTO :ll_mtrltypeid
  257. FROM u_mtrltype
  258. Where u_mtrltype.handtype = :ls_mtrltype ;
  259. //and mtrlprp=:mtrlorigin;
  260. IF ll_mtrltypeid = 0 THEN
  261. rslt = 0
  262. arg_msg = '请先在系统中输入物料类别!'
  263. Columnname = 'mtrltype'
  264. GOTO ext
  265. END IF
  266. // if sqlca.sqlcode<>0 then
  267. // rslt = 0
  268. // arg_msg = '请选择物料类别'+sqlca.sqlerrtext//+string(ll_mtrltypeid)
  269. // Columnname = 'handtype'
  270. // GOTO ext
  271. // else
  272. // dw_1.object.handtype[i]=lls_handtype
  273. // dw_1.object.mtrltypeid[i]=ll_mtrltypeid
  274. // dw_1.accepttext( )
  275. // end if
  276. IF dw_1.Object.mtrlcode[i] = '' THEN
  277. rslt = 0
  278. arg_msg = '请输入物料编号'
  279. Columnname = 'mtrlcode'
  280. GOTO ext
  281. END IF
  282. IF dw_1.Object.mtrlname[i] = '' THEN
  283. rslt = 0
  284. arg_msg = '请输物料名称'
  285. Columnname = 'mtrlname'
  286. GOTO ext
  287. END IF
  288. IF dw_1.Object.unit[i] = '' THEN
  289. rslt = 0
  290. arg_msg = '请输入物料计量单位'
  291. Columnname = 'unit'
  292. GOTO ext
  293. END IF
  294. // IF dw_1.Object.Mtrlorigin[i] = '' THEN
  295. // rslt = 0
  296. // arg_msg = '请输入来源'
  297. // Columnname = 'Mtrlorigin'
  298. // GOTO ext
  299. // END IF
  300. If (dw_1.Object.mtrlorigin[i] = 0 OR dw_1.Object.mtrlorigin[i] = 1 OR dw_1.Object.mtrlorigin[i] = 2 OR dw_1.Object.mtrlorigin[i] = 3 OR dw_1.Object.mtrlorigin[i] = 4 ) THEN
  301. ELSE
  302. rslt = 0
  303. arg_msg = ' "来源"必须为:"自制产品" 或 "产品包装件" 或 "采购" 或 "外协部件" 或 "自制部件"!'
  304. Columnname = 'Mtrlorigin'
  305. GOTO ext
  306. END IF
  307. // //检查物料编码是否重复
  308. // cnt = 0
  309. // if i>1 then
  310. // for j=1 to i - 1
  311. // if dw_1.object.mtrlcode[i]=dw_1.object.mtrlcode[j] then
  312. // cnt=1
  313. // end if
  314. // next
  315. // end if
  316. // mtrlcode=dw_1.Object.mtrlcode[i]
  317. // SELECT count(mtrlid) INTO :cnt
  318. // FROM u_mtrldef
  319. // Where mtrlcode = :mtrlcode;
  320. //
  321. // IF cnt > 0 THEN
  322. // dw_1.Object.repeat[i] = 1
  323. // rslt=0
  324. // arg_msg='物料编码不能重复!'
  325. // Columnname = 'mtrlcode'
  326. // GOTO ext
  327. // END IF
  328. //判断仓库
  329. storagename = Trim(dw_1.Object.u_storage_storagename[i])
  330. // if storagename<>'' then
  331. // do while len(storagename)>0
  332. // cur=pos(storagename,'、')
  333. //
  334. // if cur=0 then
  335. // select count(storageid)
  336. // into :strcunt
  337. // from u_storage
  338. // where storagename=:storagename;
  339. // if strcunt=0 then
  340. // rslt=0
  341. //
  342. // arg_msg='错误的仓库!'
  343. // Columnname = 'u_storage_storagename'
  344. // GOTO ext
  345. // end if
  346. // storagename=trim(left(storagename,cur - 1))
  347. //
  348. // else
  349. // storname=trim(left(storagename,cur - 1))
  350. //
  351. // select count(storageid)
  352. // into :strcunt
  353. // from u_storage
  354. // where storagename=:storname;
  355. // if strcunt=0 then
  356. // rslt=0
  357. //
  358. // arg_msg='错误的仓库!'
  359. // Columnname = 'u_storage_storagename'
  360. // GOTO ext
  361. // end if
  362. //
  363. // storagename=trim(right(storagename,len(storagename)-cur))
  364. // end if
  365. // loop
  366. // end if
  367. SELECT count(storageid)
  368. INTO :strcunt
  369. FROM u_storage
  370. Where storagename = :storagename;
  371. IF sqlca.SQLCode <> 0 THEN
  372. rslt = 0
  373. arg_msg = '查询仓库资料失败'+sqlca.SQLErrText
  374. Columnname = 'u_storage_storagename'
  375. GOTO ext
  376. END IF
  377. IF strcunt = 0 THEN
  378. rslt = 0
  379. arg_msg = '请先在系统中定义仓库资料!'
  380. Columnname = 'u_storage_storagename'
  381. GOTO ext
  382. END IF
  383. NEXT
  384. ext:
  385. Close(w_sys_wait_jdt)
  386. IF rslt = 0 THEN
  387. //MessageBox('系统提示',arg_msg)
  388. dw_1.SetFocus()
  389. dw_1.ScrollToRow( i)
  390. dw_1.SetColumn(Columnname)
  391. END IF
  392. RETURN rslt
  393. end function
  394. public function integer wf_check_cust (ref string arg_msg);//Long i,rowcnt,rslt = 1,cnt,j,cnt1,repcnt,cusid
  395. //String Columnname,custype,cusareaname
  396. //string cuscode
  397. //rowcnt = dw_3.RowCount( )
  398. //
  399. //IF rowcnt < 1 THEN RETURN rslt
  400. //
  401. //Open(w_sys_wait_jdt) //初始化进度条
  402. //w_sys_wait_jdt.Show()
  403. //w_sys_wait_jdt.wf_accepttol(rowcnt)
  404. //w_sys_wait_jdt.wf_inc(0.5)
  405. //w_sys_wait_jdt.st_msg.Text = "正在检查数据..."
  406. //
  407. //dw_3.AcceptText( )
  408. //
  409. ////检查数据
  410. //FOR i = 1 TO rowcnt
  411. // w_sys_wait_jdt.wf_inc(i)
  412. //
  413. // dw_3.Object.Name[i] = Trim(dw_3.Object.Name[i])
  414. // dw_3.Object.custype[i] = Trim(dw_3.Object.custype[i])
  415. // dw_3.Object.rep[i] = Trim(dw_3.Object.rep[i])
  416. // dw_3.Object.tele[i] = Trim(dw_3.Object.tele[i])
  417. // dw_3.Object.bank[i] = Trim(dw_3.Object.bank[i])
  418. // dw_3.Object.cunt[i] = Trim(dw_3.Object.cunt[i])
  419. // dw_3.Object.cuscode[i] = Trim(dw_3.Object.cuscode[i])
  420. // dw_3.Object.Address[i] = Trim(dw_3.Object.Address[i])
  421. // dw_3.Object.dscrp[i] = Trim(dw_3.Object.dscrp[i])
  422. // custype=dw_3.Object.custype[i]
  423. // cusareaname=dw_3.Object.cusareaname[i]
  424. //
  425. // IF dw_3.Object.cuscode[i] = '' THEN
  426. // rslt = 0
  427. // arg_msg = '请输入客户编号'
  428. // Columnname = 'cuscode'
  429. // GOTO ext
  430. // END IF
  431. //
  432. // IF dw_3.Object.Name[i] = '' THEN
  433. //
  434. // rslt = 0
  435. // arg_msg = '请输入客户名称'
  436. // Columnname = 'name'
  437. // GOTO ext
  438. // END IF
  439. //
  440. // IF dw_3.Object.cusareaname[i] = '' THEN
  441. //
  442. // rslt = 0
  443. // arg_msg = '请输入区域'
  444. // Columnname = 'cusareaname'
  445. // GOTO ext
  446. // END IF
  447. //
  448. //
  449. // //检查客户编号是否重复
  450. // cnt = 0
  451. // if i>1 then
  452. // for j=1 to i - 1
  453. // if dw_3.object.cuscode[i]=dw_3.object.cuscode[j] then
  454. // cnt1=1
  455. // end if
  456. // next
  457. // end if
  458. // cuscode=dw_3.Object.cuscode[i]
  459. // SELECT count(cusid) INTO :cnt1
  460. // FROM u_cust
  461. // Where cuscode = :cuscode;
  462. //
  463. // IF cnt1 > 0 THEN
  464. // dw_3.Object.repeat[i] = 1
  465. // rslt=0
  466. // arg_msg='客户编号不能重复!'
  467. // Columnname = 'cuscode'
  468. // GOTO ext
  469. // END IF
  470. //
  471. ////检查业务员
  472. // select count(outrepcode)
  473. // into :repcnt
  474. // from u_outrepdef
  475. // where outrepname=:custype;
  476. // if repcnt=0 then
  477. // rslt=0
  478. // arg_msg='请先在系统中定义业务员资料!'
  479. // Columnname = 'custype'
  480. // GOTO ext
  481. // end if
  482. //
  483. // String ll_cusareaname,ll_areaname
  484. // string ls_temp
  485. // Long ll_cusareaid
  486. //
  487. //
  488. ////检查地区
  489. //
  490. // select count(CusareaID)
  491. // into :cusID
  492. // from u_cusarea
  493. // where cusareaname=:cusareaname;
  494. // if sqlca.sqlcode<>0 then
  495. // rslt = 0
  496. // arg_msg = '请输入客户区域'+sqlca.sqlerrtext//+string(ll_mtrltypeid)
  497. // Columnname = 'cusareaname'
  498. // GOTO ext
  499. // end if
  500. // if cusid=0 then
  501. // rslt=0
  502. // arg_msg = '请先在系统中定义地区资料!'
  503. // Columnname = 'cusareaname'
  504. // GOTO ext
  505. // end if
  506. //NEXT
  507. //
  508. //ext:
  509. //Close(w_sys_wait_jdt)
  510. //IF rslt = 0 THEN
  511. // //MessageBox('系统提示',arg_msg)
  512. // dw_3.SetFocus()
  513. // dw_3.ScrollToRow( i)
  514. // dw_3.SetColumn(Columnname)
  515. //END IF
  516. //
  517. //return rslt
  518. //
  519. Long i,rowcnt,rslt = 1,cnt,j,cnt1,repcnt,cusid
  520. String Columnname,custype,cusareaname
  521. String cuscode, name
  522. rowcnt = dw_3.RowCount( )
  523. IF rowcnt < 1 THEN RETURN rslt
  524. Open(w_sys_wait_jdt) //初始化进度条
  525. w_sys_wait_jdt.Show()
  526. w_sys_wait_jdt.wf_accepttol(rowcnt)
  527. w_sys_wait_jdt.wf_inc(0.5)
  528. w_sys_wait_jdt.st_msg.Text = "正在检查数据..."
  529. dw_3.AcceptText( )
  530. //检查数据
  531. FOR i = 1 TO rowcnt
  532. w_sys_wait_jdt.wf_inc(i)
  533. dw_3.Object.Name[i] = Trim(dw_3.Object.Name[i])
  534. dw_3.Object.custype[i] = Trim(dw_3.Object.custype[i])
  535. dw_3.Object.rep[i] = Trim(dw_3.Object.rep[i])
  536. dw_3.Object.tele[i] = Trim(dw_3.Object.tele[i])
  537. dw_3.Object.bank[i] = Trim(dw_3.Object.bank[i])
  538. dw_3.Object.cunt[i] = Trim(dw_3.Object.cunt[i])
  539. dw_3.Object.cuscode[i] = Trim(dw_3.Object.cuscode[i])
  540. dw_3.Object.Address[i] = Trim(dw_3.Object.Address[i])
  541. dw_3.Object.dscrp[i] = Trim(dw_3.Object.dscrp[i])
  542. custype = dw_3.Object.custype[i]
  543. cusareaname = dw_3.Object.cusareaname[i]
  544. IF dw_3.Object.cuscode[i] = '' THEN
  545. rslt = 0
  546. arg_msg = '请输入客户编号'
  547. Columnname = 'cuscode'
  548. GOTO ext
  549. END IF
  550. IF dw_3.Object.Name[i] = '' THEN
  551. rslt = 0
  552. arg_msg = '请输入客户名称'
  553. Columnname = 'name'
  554. GOTO ext
  555. END IF
  556. IF dw_3.Object.cusareaname[i] = '' THEN
  557. rslt = 0
  558. arg_msg = '请输入区域'
  559. Columnname = 'cusareaname'
  560. GOTO ext
  561. END IF
  562. //检查客户编号是否重复
  563. cnt = 0
  564. IF i > 1 THEN
  565. FOR j = 1 TO i - 1
  566. IF dw_3.Object.cuscode[i] = dw_3.Object.cuscode[j] THEN
  567. dw_3.Object.repeat[i] = 1
  568. rslt = 0
  569. arg_msg = '客户编号不能重复!第 ' + string(i) + ' 行与第 ' + string(j) + ' 行重复'
  570. Columnname = 'cuscode'
  571. GOTO ext
  572. END IF
  573. if dw_3.Object.name[i] = dw_3.Object.name[j] then
  574. dw_3.object.repeat[i] = 1
  575. rslt = 0
  576. arg_msg = '客户名称不能重复!第 ' + string(i) + ' 行与第 ' + string(j) + ' 行重复'
  577. Columnname = 'name'
  578. GOTO ext
  579. end if
  580. NEXT
  581. END IF
  582. cuscode = dw_3.Object.cuscode[i]
  583. SELECT count(cusid) INTO :cnt1
  584. FROM u_cust
  585. Where cuscode = :cuscode;
  586. if sqlca.sqlcode <> 0 then
  587. rslt = 0
  588. arg_msg = '数据库连失败,' + sqlca.sqlerrtext
  589. Columnname = 'cuscode'
  590. goto ext
  591. end if
  592. IF cnt1 > 0 THEN
  593. dw_3.Object.repeat[i] = 1
  594. rslt = 0
  595. arg_msg = '客户编号不能重复!编号已经使用'
  596. Columnname = 'cuscode'
  597. GOTO ext
  598. END IF
  599. name = dw_3.Object.name[i]
  600. SELECT count(cusid) INTO :cnt1
  601. FROM u_cust
  602. Where name = :name;
  603. if sqlca.sqlcode <> 0 then
  604. rslt = 0
  605. arg_msg = '数据库连失败,' + sqlca.sqlerrtext
  606. Columnname = 'name'
  607. goto ext
  608. end if
  609. IF cnt1 > 0 THEN
  610. dw_3.Object.repeat[i] = 1
  611. rslt = 0
  612. arg_msg = '客户名称不能重复!"' + name + '"已经存在'
  613. Columnname = 'name'
  614. GOTO ext
  615. END IF
  616. // //检查业务员
  617. // SELECT count(outrepcode)
  618. // INTO :repcnt
  619. // FROM u_outrepdef
  620. // Where outrepname = :custype;
  621. // IF repcnt = 0 THEN
  622. // rslt = 0
  623. // arg_msg = '请先在系统中定义业务员资料!'
  624. // Columnname = 'custype'
  625. // GOTO ext
  626. // END IF
  627. //
  628. String ll_cusareaname,ll_areaname
  629. String ls_temp
  630. Long ll_cusareaid
  631. //检查地区
  632. SELECT count(CusareaID)
  633. INTO :cusID
  634. FROM u_cusarea
  635. Where cusareaname = :cusareaname;
  636. IF sqlca.SQLCode <> 0 THEN
  637. rslt = 0
  638. arg_msg = '请输入客户区域'+sqlca.SQLErrText //+string(ll_mtrltypeid)
  639. Columnname = 'cusareaname'
  640. GOTO ext
  641. END IF
  642. IF cusid = 0 THEN
  643. rslt = 0
  644. arg_msg = '请先在系统中定义地区资料!'
  645. Columnname = 'cusareaname'
  646. GOTO ext
  647. END IF
  648. NEXT
  649. ext:
  650. Close(w_sys_wait_jdt)
  651. IF rslt = 0 THEN
  652. //MessageBox('系统提示',arg_msg)
  653. dw_3.SetFocus()
  654. dw_3.ScrollToRow( i)
  655. dw_3.SetColumn(Columnname)
  656. END IF
  657. RETURN rslt
  658. end function
  659. public function integer wf_check_spt (ref string arg_msg);Long i,rowcnt,rslt = 1,cnt,j
  660. String Columnname
  661. string sptcode
  662. rowcnt = dw_2.RowCount( )
  663. IF rowcnt < 1 THEN RETURN rslt
  664. Open(w_sys_wait_jdt) //初始化进度条
  665. w_sys_wait_jdt.Show()
  666. w_sys_wait_jdt.wf_accepttol(rowcnt)
  667. w_sys_wait_jdt.wf_inc(0.5)
  668. w_sys_wait_jdt.st_msg.Text = "正在检查数据..."
  669. dw_2.accepttext( )
  670. //检查数据
  671. FOR i = 1 TO rowcnt
  672. w_sys_wait_jdt.wf_inc(i)
  673. dw_2.Object.sptcode[i] = Trim(dw_2.Object.sptcode[i])
  674. dw_2.Object.Name[i] = Trim(dw_2.Object.Name[i])
  675. dw_2.Object.spttype[i] = Trim(dw_2.Object.spttype[i])
  676. dw_2.Object.rep[i] = Trim(dw_2.Object.rep[i])
  677. dw_2.Object.tele[i] = Trim(dw_2.Object.tele[i])
  678. dw_2.Object.tele1[i] = Trim(dw_2.Object.tele1[i])
  679. dw_2.Object.bank[i] = Trim(dw_2.Object.bank[i])
  680. dw_2.Object.cunt[i] = Trim(dw_2.Object.cunt[i])
  681. dw_2.Object.code[i] = Trim(dw_2.Object.code[i])
  682. dw_2.Object.Address[i] = Trim(dw_2.Object.Address[i])
  683. dw_2.Object.dscrp[i] = Trim(dw_2.Object.dscrp[i])
  684. dw_2.Object.faxno[i] = Trim(dw_2.Object.faxno[i])
  685. IF dw_2.Object.sptcode[i] = '' THEN
  686. rslt = 0
  687. arg_msg = '请输入供应商编号'
  688. Columnname = 'sptcode'
  689. GOTO ext
  690. END IF
  691. IF dw_2.Object.Name[i] = '' THEN
  692. rslt = 0
  693. arg_msg = '请输入供应商名称'
  694. Columnname = 'name'
  695. GOTO ext
  696. END IF
  697. //检查供应商编号
  698. cnt = 0
  699. if i>1 then
  700. for j=1 to i - 1
  701. if dw_2.object.sptcode[i]=dw_2.object.sptcode[j] then
  702. cnt=1
  703. end if
  704. next
  705. end if
  706. sptcode=dw_2.Object.sptcode[i]
  707. SELECT count(sptid) INTO :cnt
  708. FROM u_spt
  709. Where sptcode = :sptcode;
  710. IF cnt > 0 THEN
  711. dw_2.Object.repeat[i] = 1
  712. rslt=0
  713. arg_msg='供应商编码不能重复!'
  714. Columnname = 'sptcode'
  715. GOTO ext
  716. END IF
  717. NEXT
  718. ext:
  719. Close(w_sys_wait_jdt)
  720. IF rslt = 0 THEN
  721. // MessageBox('系统提示',arg_msg)
  722. dw_2.SetFocus()
  723. dw_2.ScrollToRow( i)
  724. dw_2.SetColumn(Columnname)
  725. END IF
  726. RETURN rslt
  727. end function
  728. protected function integer wf_openfile (datawindow arg_dw);
  729. String str_savename,named,s_grxh
  730. Int excelok,li_net
  731. Long li_count,i
  732. oleobject excelserver
  733. excelserver = CREATE oleobject
  734. excelok = excelserver.ConnectToNewObject("excel.application")
  735. //检查返回值,以确保已成功地连接到了Excel
  736. IF excelok <> 0 THEN
  737. MessageBox("提示","连接EXCEL失败,请检查计算机中是否安装了EXCEL!", Information!, OK! )
  738. RETURN -1
  739. END IF
  740. li_net = GetFileOpenName("选择文件", str_savename,named,"xls","Excel文件(*.xls),*.xls")
  741. IF li_net > 0 THEN
  742. IF str_savename = "" THEN RETURN -1
  743. arg_dw.SetTransObject(sqlca)
  744. arg_dw.InsertRow(0)
  745. arg_dw.Reset()
  746. excelserver.workbooks.Open(str_savename)
  747. excelserver.activesheet.cells.Copy
  748. datastore ds_col30
  749. /////////////建立映射//////////////////////
  750. ds_col30 = create datastore
  751. ds_col30.dataobject = 'dw_col30'
  752. ds_col30.importclipboard(1)
  753. long ll_s_col_count = 30
  754. long ll_d_col_count
  755. ll_d_col_count = long(arg_dw.object.datawindow.Column.Count)
  756. long ll_map[] // 目标表与原表的映射,0为没有映射
  757. string ls_colType[] // 目标表列类型
  758. long col_d, col_s
  759. for col_d = 1 to ll_d_col_count
  760. string ls_col_title, ls_col_name
  761. ls_col_name = arg_dw.describe('#' + string(col_d) + '.Name')
  762. ls_colType[col_d] = arg_dw.describe('#' + string(col_d) + '.ColType')
  763. ls_col_title = arg_dw.describe(ls_col_name + '_t.Text')
  764. ll_map[col_d] = 0
  765. for col_s = 1 to ll_s_col_count
  766. string ls_s_title
  767. ls_s_title = ds_col30.GetItemString(1, col_s)
  768. if lower(trim(ls_col_title)) = lower(trim(ls_s_title)) then
  769. ll_map[col_d] = col_s
  770. exit
  771. end if
  772. next
  773. next
  774. // TODO: 人工干预,设置映射
  775. long row_s, row_d
  776. for row_s = 2 to ds_col30.rowcount( )
  777. row_d = arg_dw.insertrow(0)
  778. for col_d = 1 to ll_d_col_count
  779. if ll_map[col_d] = 0 then continue
  780. any value
  781. string ls_value
  782. ls_value = trim(ds_col30.GetItemString(row_s, ll_map[col_d]))
  783. if lower(left(ls_colType[col_d], 4)) = 'char' then
  784. value = ls_value
  785. elseif lower(left(ls_colType[col_d], 4)) = 'long' &
  786. OR lower(left(ls_colType[col_d], 3)) = 'int' &
  787. OR lower(left(ls_colType[col_d], 3)) = 'num' &
  788. OR lower(left(ls_colType[col_d], 5)) = 'ulong' then
  789. value = long(ls_value)
  790. elseif lower(left(ls_colType[col_d], 4)) = 'deci' &
  791. OR lower(left(ls_colType[col_d], 4)) = 'real' then
  792. value = dec(ls_value)
  793. elseif lower(left(ls_colType[col_d], 4)) = 'date' then
  794. value = Datetime(Date(left(ls_value, 10)), Time(mid(ls_value, 12)))
  795. end if
  796. arg_dw.SetItem(row_d, col_d, value)
  797. next
  798. next
  799. destroy ds_col30
  800. ///////////////////////////////////////
  801. // li_count = arg_dw.ImportClipboard(2) //导入数据 (从第几行开始导入)
  802. Clipboard("")
  803. excelserver.quit()
  804. excelserver.DisconnectObject()
  805. DESTROY excelserver
  806. FOR i = 1 TO arg_dw.RowCount( )
  807. arg_dw.Object.repeat[i] = 0
  808. NEXT
  809. arg_dw.AcceptText( )
  810. RETURN 1
  811. ELSE
  812. MessageBox('提示','没有指定导入文件!', Information!, OK! )
  813. RETURN -1
  814. END IF
  815. end function
  816. public subroutine wf_import_mtrl ();String mtrlcode ,mtrlname ,mtrlengname,ls_storagename,ls_handtype
  817. String ls_mtrltype ,mtrlsectype,mtrlmode,unit,dscrp,zxmtrlmode
  818. Long Mtrlprp,Mtrlorigin,mtrltypeid,mtrlkind,ifsafa
  819. Dec planprice ,ctokg ,packqty ,lspacklimit
  820. Dec LMsaleprice,lmbuyprice,net_weight,gross_weight,cubage
  821. Dec price,cost
  822. String prdpackcode ,barcode,ls_temp
  823. Long ll_mtrlid,cnt_temp
  824. Long ls_storageid
  825. string ls_storage_str
  826. String arg_msg
  827. Long i,cnt,rowcnt,rslt = 1,k,j,l,t = 0,p = 1,cur,m
  828. String unit_buy,unit_scll,unit_sale
  829. Dec rate_buy,rate_scll,rate_sale
  830. String stro_name[]
  831. String descmtrl,sptname
  832. String mtrlnames,mtrlmodes
  833. String repeats
  834. dw_1.AcceptText( )
  835. rowcnt = dw_1.RowCount( )
  836. IF rowcnt = 0 THEN
  837. MessageBox('提示','当前没有数据', Information!, OK! )
  838. RETURN
  839. END IF
  840. IF wf_check_mtrl(arg_msg) = 0 THEN
  841. MessageBox('提示',arg_msg, Information!, OK! )
  842. RETURN
  843. END IF
  844. Open(w_sys_wait_jdt) //初始化进度条
  845. w_sys_wait_jdt.Show()
  846. w_sys_wait_jdt.wf_accepttol(rowcnt)
  847. w_sys_wait_jdt.wf_inc(0.5)
  848. w_sys_wait_jdt.st_msg.Text = "正在导入数据..."
  849. FOR i = 1 TO rowcnt
  850. w_sys_wait_jdt.wf_inc(i)
  851. mtrlcode = Trim(dw_1.Object.mtrlcode[i])
  852. mtrlname = Trim(dw_1.Object.mtrlname[i])
  853. mtrlengname = Trim(dw_1.Object.mtrlengname[i])
  854. ls_handtype = Trim(dw_1.Object.mtrltype [i])
  855. mtrlsectype = Trim(dw_1.Object.mtrlsectype [i])
  856. mtrlmode = Trim(dw_1.Object.mtrlmode[i])
  857. zxmtrlmode = Trim(dw_1.Object.zxmtrlmode[i])
  858. unit = Trim(dw_1.Object.unit[i])
  859. net_weight = dw_1.Object.net_weight[i]
  860. gross_weight = dw_1.Object.gross_weight[i]
  861. cubage = dw_1.Object.cubage[i]
  862. barcode = Trim(dw_1.Object.barcode[i])
  863. prdpackcode = Trim(dw_1.Object.prdpackcode[i])
  864. packqty = dw_1.Object.packqty[i]
  865. unit_buy = Trim(dw_1.Object.unit_buy[i])
  866. rate_buy = dw_1.Object.rate_buy[i]
  867. unit_scll = Trim(dw_1.Object.unit_scll[i])
  868. rate_scll = dw_1.Object.rate_scll[i]
  869. unit_sale = Trim(dw_1.Object.unit_sale[i])
  870. rate_sale = dw_1.Object.rate_sale[i]
  871. dscrp = Trim(dw_1.Object.dscrp[i])
  872. lmbuyprice = dw_1.Object.lmbuyprice[i]
  873. LMsaleprice = dw_1.Object.LMsaleprice[i]
  874. Mtrlorigin = dw_1.Object.Mtrlorigin[i]
  875. ls_storagename = Trim(dw_1.Object.u_storage_storagename[i])
  876. //插入新记录
  877. ll_mtrlid = f_sys_scidentity(0,"u_Mtrldef","mtrlid",arg_msg,FALSE,sqlca)
  878. IF ll_mtrlid <= 0 THEN
  879. rslt = 0
  880. GOTO ext
  881. END IF
  882. SELECT mtrltype,mtrltypeid
  883. INTO :ls_mtrltype,:mtrltypeid
  884. FROM u_mtrltype
  885. Where handtype = :ls_handtype ;// and mtrlprp=:mtrlorigin;
  886. IF sqlca.SQLCode <> 0 THEN
  887. arg_msg = '查询物料类别失败'+sqlca.SQLErrText
  888. rslt = 0
  889. GOTO ext
  890. END IF
  891. IF ls_storagename <> '' THEN
  892. IF Right(ls_storagename,1) = '/' THEN
  893. ELSE
  894. ls_storagename = ls_storagename+'/'
  895. END IF
  896. IF Pos(ls_storagename,'/') > 0 THEN
  897. DO WHILE Len(ls_storagename) > 0
  898. cur = Pos(ls_storagename,'/')
  899. stro_name[p] = Trim(Left(ls_storagename,cur - 1))
  900. p++
  901. ls_storagename = Trim(Right(ls_storagename,Len(ls_storagename)-cur))
  902. LOOP
  903. p = p - 1
  904. END IF
  905. ls_storage_str = ','
  906. FOR m = 1 TO p
  907. SELECT storageid
  908. INTO :ls_storageid
  909. FROM u_storage
  910. Where storagename = :stro_name[m];
  911. IF sqlca.SQLCode <> 0 THEN
  912. arg_msg = '查询仓库失败'+sqlca.SQLErrText
  913. rslt = 0
  914. GOTO ext
  915. END IF
  916. INSERT INTO u_mtrl_storage
  917. (mtrlid,storageid)
  918. VALUES
  919. (:ll_mtrlid,:ls_storageid);
  920. IF sqlca.SQLCode <> 0 THEN
  921. arg_msg = '插入仓库失败'+sqlca.SQLErrText
  922. rslt = 0
  923. GOTO ext
  924. END IF
  925. ls_storage_str = ls_storage_str + string(ls_storageid) + ','
  926. NEXT
  927. INSERT INTO u_mtrldef
  928. (mtrlid,mtrlcode, mtrlname, mtrlengname, mtrltype, mtrlsectype, mtrlmode, unit,
  929. zxmtrlmode, dscrp, packqty, prdpackcode, LMsaleprice,
  930. lmbuyprice, Mtrlorigin, mtrltypeid, handtype, barcode, net_weight,
  931. gross_weight, cubage, unit_buy,unit_scll,unit_sale,rate_buy,rate_scll,rate_sale,storagestr)
  932. VALUES
  933. (:ll_mtrlid,:mtrlcode, :mtrlname, :mtrlengname, :ls_mtrltype, :mtrlsectype, :mtrlmode, :unit,
  934. :zxmtrlmode, :dscrp, :packqty, :prdpackcode, :LMsaleprice,
  935. :lmbuyprice, :Mtrlorigin, :mtrltypeid, :ls_handtype, :barcode, :net_weight,
  936. :gross_weight, :cubage, :unit_buy,:unit_scll,:unit_sale,:rate_buy,:rate_scll,:rate_sale,:ls_storage_str);
  937. IF sqlca.SQLCode <> 0 THEN
  938. arg_msg = '插入产品定义资料失败'+sqlca.SQLErrText
  939. rslt = 0
  940. GOTO ext
  941. END IF
  942. END IF
  943. k++
  944. NEXT
  945. ext:
  946. Close(w_sys_wait_jdt)
  947. IF rslt = 0 THEN
  948. ROLLBACK ;
  949. MessageBox('提示',arg_msg, Information!, OK! )
  950. ELSEIF rslt = 1 THEN
  951. COMMIT ;
  952. MessageBox('提示','导入定义资料成功,数据共'+String(rowcnt)+'~n成功'+String(k)+'~n重复'+String(l)+' '+repeats+'~n空白行'+String(j), Information!, OK! )
  953. END IF
  954. end subroutine
  955. public subroutine wf_import_spt ();string sptcode , sptname ,rep,spttype
  956. string tele ,tele1 ,bank ,cunt ,code ,address,dscrp
  957. Long ll_sptid
  958. String arg_msg,repeats,faxno,email
  959. Long i,cnt,rowcnt,rslt = 1,k,j,l
  960. rowcnt=dw_2.RowCount( )
  961. IF rowcnt= 0 THEN
  962. MessageBox('提示','当前没有数据', Information!, OK! )
  963. RETURN
  964. END IF
  965. if wf_check_spt(arg_msg)=0 then
  966. messagebox('提示',arg_msg, Information!, OK! )
  967. return
  968. end if
  969. Open(w_sys_wait_jdt) //初始化进度条
  970. w_sys_wait_jdt.Show()
  971. w_sys_wait_jdt.wf_accepttol(rowcnt)
  972. w_sys_wait_jdt.wf_inc(0.5)
  973. w_sys_wait_jdt.st_msg.Text = "正在导入数据..."
  974. FOR i = 1 TO rowcnt
  975. w_sys_wait_jdt.wf_inc(i)
  976. sptcode=trim(dw_2.object.sptcode[i])
  977. sptname=dw_2.object.name[i]
  978. rep=dw_2.object.rep[i]
  979. spttype=dw_2.object.spttype[i]
  980. tele=dw_2.object.tele[i]
  981. tele1=dw_2.object.tele1[i]
  982. bank=dw_2.object.bank[i]
  983. cunt=dw_2.object.cunt[i]
  984. code=dw_2.object.code[i]
  985. faxno=dw_2.object.faxno[i]
  986. email=dw_2.object.email[i]
  987. address=dw_2.object.address[i]
  988. dscrp=dw_2.object.dscrp[i]
  989. //插入新记录
  990. ll_sptid = f_sys_scidentity(0,"u_spt","sptid",arg_msg,FALSE,sqlca)
  991. IF ll_sptid <= 0 THEN
  992. rslt = 0
  993. GOTO ext
  994. END IF
  995. INSERT INTO u_spt
  996. (sptid,sptcode, name, rep, spttype, tele, tele1, bank, cunt, code,faxno,email, address, dscrp)
  997. VALUES (:ll_sptid,:sptcode, :sptname, :rep, :spttype, :tele, :tele1, :bank, :cunt, :code,:faxno,:email, :address, :dscrp);
  998. IF sqlca.SQLCode <> 0 THEN
  999. arg_msg = '插入供应商资料失败'+sqlca.SQLErrText
  1000. rslt = 0
  1001. GOTO ext
  1002. END IF
  1003. k++
  1004. NEXT
  1005. ext:
  1006. Close(w_sys_wait_jdt)
  1007. IF rslt = 0 THEN
  1008. ROLLBACK ;
  1009. MessageBox('提示',arg_msg, Information!, OK! )
  1010. ELSEIF rslt = 1 THEN
  1011. COMMIT ;
  1012. MessageBox('提示','导入定义资料成功,数据共'+string(rowcnt)+'~n成功'+string(k)+'~n重复'+string(l)+' '+repeats+'~n空白行'+string(j), Information!, OK! )
  1013. END IF
  1014. end subroutine
  1015. public subroutine wf_import_cust ();String cuscode, cusname, rep, custype, tele, tele1, bank, cunt, code, Address
  1016. String dscrp, faxno, cusareaname, email,areaname
  1017. long cusareaid
  1018. Long ll_cusid
  1019. String freight_tele,arg_msg,repeats,freight,freight_address
  1020. Long i,cnt,rowcnt,rslt = 1,k,j,l
  1021. dec givebackrate
  1022. rowcnt = dw_3.RowCount( )
  1023. IF rowcnt = 0 THEN
  1024. MessageBox('提示','当前没有数据', Information!, OK! )
  1025. RETURN
  1026. END IF
  1027. if wf_check_cust(arg_msg)=0 then
  1028. messagebox('',arg_msg)
  1029. return
  1030. end if
  1031. Open(w_sys_wait_jdt) //初始化进度条
  1032. w_sys_wait_jdt.Show()
  1033. w_sys_wait_jdt.wf_accepttol(rowcnt)
  1034. w_sys_wait_jdt.wf_inc(0.5)
  1035. w_sys_wait_jdt.st_msg.Text = "正在导入数据..."
  1036. FOR i = 1 TO rowcnt
  1037. w_sys_wait_jdt.wf_inc(i)
  1038. cuscode = dw_3.Object.cuscode[i]
  1039. cusname = dw_3.Object.Name[i]
  1040. rep = dw_3.Object.rep[i]
  1041. custype = dw_3.Object.custype[i]
  1042. tele = dw_3.Object.tele[i]
  1043. tele1 = dw_3.Object.tele1[i]
  1044. bank = dw_3.Object.bank[i]
  1045. cunt = dw_3.Object.cunt[i]
  1046. code = dw_3.Object.code[i]
  1047. Address = dw_3.Object.Address[i]
  1048. dscrp = dw_3.Object.dscrp[i]
  1049. faxno = dw_3.Object.faxno[i]
  1050. givebackrate = dw_3.Object.givebackrate[i]
  1051. cusareaname = dw_3.Object.cusareaname[i]
  1052. email = dw_3.Object.email[i]
  1053. freight = dw_3.Object.freight[i]
  1054. freight_tele = dw_3.Object.freight_tele[i]
  1055. freight_address= dw_3.Object.freight_address[i]
  1056. select areaname,cusareaid
  1057. into :areaname,:cusareaid
  1058. from u_cusarea
  1059. where cusareaname=:cusareaname;
  1060. //插入新记录
  1061. ll_cusid = f_sys_scidentity(0,"u_cust","cusid",arg_msg,FALSE,sqlca)
  1062. IF ll_cusid <= 0 THEN
  1063. rslt = 0
  1064. GOTO ext
  1065. END IF
  1066. INSERT INTO u_cust
  1067. (cusid,cuscode, name, rep, custype, tele, tele1, bank, cunt, code, address, dscrp, faxno,
  1068. cusareaname, areaname, email,cusareaid,givebackrate,freight,freight_tele,freight_address)
  1069. VALUES (:ll_cusid,:cuscode, :cusName, :rep, :custype, :tele, :tele1, :bank, :cunt, :code, :Address, :dscrp, :faxno,
  1070. :cusareaname, :areaname, :email,:cusareaid,:givebackrate,:freight,:freight_tele,:freight_address);
  1071. IF sqlca.SQLCode <> 0 THEN
  1072. arg_msg = '插入客户资料失败'+sqlca.SQLErrText
  1073. rslt = 0
  1074. GOTO ext
  1075. END IF
  1076. k++
  1077. NEXT
  1078. ext:
  1079. Close(w_sys_wait_jdt)
  1080. IF rslt = 0 THEN
  1081. ROLLBACK ;
  1082. MessageBox('提示',arg_msg, Information!, OK! )
  1083. ELSEIF rslt = 1 THEN
  1084. COMMIT ;
  1085. MessageBox('提示','导入定义资料成功,数据共'+string(rowcnt)+'~n成功'+string(k)+'~n重复'+string(l)+' '+repeats+'~n空白行'+string(j), Information!, OK! )
  1086. END IF
  1087. end subroutine
  1088. on w_define.create
  1089. int iCurrent
  1090. call super::create
  1091. this.tab_1=create tab_1
  1092. this.cb_1=create cb_1
  1093. this.cb_2=create cb_2
  1094. this.cb_3=create cb_3
  1095. this.cb_4=create cb_4
  1096. this.cb_5=create cb_5
  1097. this.cb_6=create cb_6
  1098. this.cb_help=create cb_help
  1099. this.ln_bar=create ln_bar
  1100. this.ln_bar2=create ln_bar2
  1101. this.r_bar=create r_bar
  1102. iCurrent=UpperBound(this.Control)
  1103. this.Control[iCurrent+1]=this.tab_1
  1104. this.Control[iCurrent+2]=this.cb_1
  1105. this.Control[iCurrent+3]=this.cb_2
  1106. this.Control[iCurrent+4]=this.cb_3
  1107. this.Control[iCurrent+5]=this.cb_4
  1108. this.Control[iCurrent+6]=this.cb_5
  1109. this.Control[iCurrent+7]=this.cb_6
  1110. this.Control[iCurrent+8]=this.cb_help
  1111. this.Control[iCurrent+9]=this.ln_bar
  1112. this.Control[iCurrent+10]=this.ln_bar2
  1113. this.Control[iCurrent+11]=this.r_bar
  1114. end on
  1115. on w_define.destroy
  1116. call super::destroy
  1117. destroy(this.tab_1)
  1118. destroy(this.cb_1)
  1119. destroy(this.cb_2)
  1120. destroy(this.cb_3)
  1121. destroy(this.cb_4)
  1122. destroy(this.cb_5)
  1123. destroy(this.cb_6)
  1124. destroy(this.cb_help)
  1125. destroy(this.ln_bar)
  1126. destroy(this.ln_bar2)
  1127. destroy(this.r_bar)
  1128. end on
  1129. event open;call super::open;String ls_sql
  1130. dw_1 = tab_1.tabpage_1.dw_1
  1131. dw_2 = tab_1.tabpage_2.dw_2
  1132. dw_3 = tab_1.tabpage_3.dw_3
  1133. dw_1.SetTransObject(sqlca)
  1134. dw_2.SetTransObject(sqlca)
  1135. dw_3.SetTransObject(sqlca)
  1136. Long i
  1137. Long row
  1138. Any la_parm
  1139. s_define_import_parm s_parm
  1140. la_parm = Message.PowerObjectParm
  1141. IF IsValid(la_parm) THEN
  1142. IF ClassName(la_parm) = 's_define_import_parm' THEN
  1143. s_parm = la_parm
  1144. FOR i = 1 To UpperBound(s_parm.cust_arr)
  1145. row = dw_3.InsertRow(0)
  1146. dw_3.Object.cuscode[row] = s_parm.cust_arr[i].cuscode
  1147. dw_3.Object.Name[row] = s_parm.cust_arr[i].Name
  1148. dw_3.Object.rep[row] = s_parm.cust_arr[i].rep
  1149. dw_3.Object.custype[row] = s_parm.cust_arr[i].custype
  1150. dw_3.Object.cusareaname[row] = s_parm.cust_arr[i].cusareaname
  1151. dw_3.Object.tele[row] = s_parm.cust_arr[i].tele
  1152. dw_3.Object.tele1[row] = s_parm.cust_arr[i].tele1
  1153. dw_3.Object.faxno[row] = s_parm.cust_arr[i].faxno
  1154. dw_3.Object.bank[row] = s_parm.cust_arr[i].bank
  1155. dw_3.Object.cunt[row] = s_parm.cust_arr[i].cunt
  1156. dw_3.Object.Address[row] = s_parm.cust_arr[i].Address
  1157. dw_3.Object.code[row] = s_parm.cust_arr[i].code
  1158. dw_3.Object.givebackrate[row] = s_parm.cust_arr[i].givebackrate
  1159. dw_3.Object.email[row] = s_parm.cust_arr[i].email
  1160. dw_3.Object.dscrp[row] = s_parm.cust_arr[i].dscrp
  1161. dw_3.Object.freight[row] = s_parm.cust_arr[i].freight
  1162. dw_3.Object.freight_tele[row] = s_parm.cust_arr[i].freight_tele
  1163. NEXT
  1164. END IF
  1165. END IF
  1166. end event
  1167. event resize;call super::resize;ln_bar.EndX = THIS.Width
  1168. ln_bar2.EndX = THIS.Width
  1169. r_bar.Width = THIS.Width
  1170. Long w_width,w_height
  1171. w_width = 3600
  1172. w_height = 2300
  1173. IF newwidth < w_width THEN THIS.Width = w_width
  1174. IF newheight < w_height THEN THIS.Height = w_height
  1175. tab_1.Width = THIS.Width - (w_width - 3525)
  1176. tab_1.Height = THIS.Height - (w_height - 1952)
  1177. dw_1.Width = THIS.Width - (w_width - 3474)
  1178. dw_1.Height = THIS.Height - (w_height - 1824)
  1179. dw_2.Width = THIS.Width - (w_width - 3474)
  1180. dw_2.Height = THIS.Height - (w_height - 1824)
  1181. dw_3.Width = THIS.Width - (w_width - 3474)
  1182. dw_3.Height = THIS.Height - (w_height - 1824)
  1183. end event
  1184. type cb_func from w_publ_base`cb_func within w_define
  1185. boolean visible = false
  1186. integer x = 2011
  1187. integer taborder = 30
  1188. end type
  1189. type cb_exit from w_publ_base`cb_exit within w_define
  1190. integer x = 1513
  1191. integer width = 151
  1192. integer height = 164
  1193. integer picsize = 16
  1194. toolbaralignment pic_align = alignattop!
  1195. boolean border = false
  1196. end type
  1197. type tab_1 from tab within w_define
  1198. integer y = 188
  1199. integer width = 3525
  1200. integer height = 1952
  1201. integer taborder = 20
  1202. integer textsize = -9
  1203. integer weight = 400
  1204. fontcharset fontcharset = gb2312charset!
  1205. fontpitch fontpitch = variable!
  1206. string facename = "宋体"
  1207. long backcolor = 134217739
  1208. boolean raggedright = true
  1209. boolean focusonbuttondown = true
  1210. integer selectedtab = 1
  1211. tabpage_1 tabpage_1
  1212. tabpage_2 tabpage_2
  1213. tabpage_3 tabpage_3
  1214. end type
  1215. on tab_1.create
  1216. this.tabpage_1=create tabpage_1
  1217. this.tabpage_2=create tabpage_2
  1218. this.tabpage_3=create tabpage_3
  1219. this.Control[]={this.tabpage_1,&
  1220. this.tabpage_2,&
  1221. this.tabpage_3}
  1222. end on
  1223. on tab_1.destroy
  1224. destroy(this.tabpage_1)
  1225. destroy(this.tabpage_2)
  1226. destroy(this.tabpage_3)
  1227. end on
  1228. type tabpage_1 from userobject within tab_1
  1229. integer x = 18
  1230. integer y = 112
  1231. integer width = 3488
  1232. integer height = 1824
  1233. long backcolor = 134217739
  1234. string text = "物料产品"
  1235. long tabtextcolor = 33554432
  1236. long tabbackcolor = 134217739
  1237. string picturename = "CheckDiff!"
  1238. long picturemaskcolor = 536870912
  1239. dw_1 dw_1
  1240. end type
  1241. on tabpage_1.create
  1242. this.dw_1=create dw_1
  1243. this.Control[]={this.dw_1}
  1244. end on
  1245. on tabpage_1.destroy
  1246. destroy(this.dw_1)
  1247. end on
  1248. type dw_1 from u_dw_rbtnfilter within tabpage_1
  1249. integer width = 3474
  1250. integer height = 1824
  1251. integer taborder = 20
  1252. string dataobject = "dw_define_mtrl"
  1253. boolean hscrollbar = true
  1254. boolean vscrollbar = true
  1255. boolean hsplitscroll = true
  1256. end type
  1257. event constructor;call super::constructor;//wf_lock_uc
  1258. Int LS_INT,uc_column_int
  1259. Long ls_row
  1260. uc_column_int = Long(THIS.Describe("DataWindow.Column.Count"))
  1261. FOR LS_INT = 1 TO uc_column_int
  1262. THIS.SetTabOrder (LS_INT,LS_INT*10 )
  1263. NEXT
  1264. end event
  1265. event rowfocuschanged;call super::rowfocuschanged;//IF dw_edit_mode THEN RETURN
  1266. IF currentrow <= 0 THEN RETURN
  1267. THIS.SelectRow(0,FALSE)
  1268. THIS.SelectRow(currentrow,TRUE)
  1269. datawindowchild dw_child
  1270. Integer rtncode,mtrlorigin
  1271. dw_1.AcceptText()
  1272. if dw_1.getrow()>0 then
  1273. rtncode = dw_1.GetChild('mtrltype',dw_child)
  1274. mtrlorigin = dw_1.Object.mtrlorigin[dw_1.getrow()]
  1275. IF mtrlorigin >= 0 THEN
  1276. dw_child.SetTransObject(Sqlca)
  1277. dw_child.SetFilter('mtrlprp='+String(mtrlorigin))
  1278. dw_child.Filter()
  1279. END IF
  1280. end if
  1281. end event
  1282. event dwnkey;If key = KeyEnter! Then //
  1283. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  1284. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  1285. return 1
  1286. end if
  1287. end event
  1288. event itemchanged;call super::itemchanged;datawindowchild dw_child
  1289. integer rtncode,mtrlorigin
  1290. dw_1.accepttext()
  1291. rtncode=dw_1.getchild('mtrltype',dw_child)
  1292. mtrlorigin=dw_1.object.mtrlorigin[row]
  1293. dw_child.settransobject(Sqlca)
  1294. dw_child.setfilter('mtrlprp='+string(mtrlorigin))
  1295. dw_child.filter()
  1296. end event
  1297. event clicked;call super::clicked;s_inputbox s_parm
  1298. string ls_return
  1299. long ll_row
  1300. if dwo.Name = 't_mod_mtrlorigin' then // 来源
  1301. open(w_mtrlorigin_ch)
  1302. s_mtrlorigin rls_mtrlorigin
  1303. rls_mtrlorigin = message.powerobjectparm
  1304. if rls_mtrlorigin.mtrloriginid = -1 then return
  1305. for ll_row = 1 to this.rowcount( )
  1306. this.object.mtrlorigin[ll_row] = rls_mtrlorigin.mtrloriginid
  1307. next
  1308. elseif dwo.Name = 't_mod_mtrltype' then // 类别
  1309. open(w_mtrltype_ch)
  1310. s_mtrltype s_mtrltype_rst
  1311. s_mtrltype_rst = message.powerobjectparm
  1312. if s_mtrltype_rst.mtrltypeid <= 0 then return
  1313. for ll_row = 1 to this.rowcount( )
  1314. this.object.mtrltype[ll_row] = s_mtrltype_rst.handtype
  1315. next
  1316. elseif dwo.Name = 't_mod_mtrlmode' then // 规格
  1317. s_parm.title = '规格'
  1318. s_parm.old_text = ''
  1319. openwithparm(w_inputbox, s_parm)
  1320. ls_return = message.stringparm
  1321. if trim(ls_return) = '' then return
  1322. for ll_row = 1 to this.rowcount( )
  1323. this.object.mtrlmode[ll_row] = ls_return
  1324. next
  1325. elseif dwo.Name = 't_mod_unit' then // 库存单位
  1326. s_parm.title = '库存单位'
  1327. s_parm.old_text = ''
  1328. openwithparm(w_inputbox, s_parm)
  1329. ls_return = message.stringparm
  1330. if trim(ls_return) = '' then return
  1331. for ll_row = 1 to this.rowcount( )
  1332. this.object.unit[ll_row] = ls_return
  1333. next
  1334. elseif dwo.Name = 't_mod_mtrlsectype' then // 自定义1
  1335. s_parm.title = '自定义1'
  1336. s_parm.old_text = ''
  1337. openwithparm(w_inputbox, s_parm)
  1338. ls_return = message.stringparm
  1339. if trim(ls_return) = '' then return
  1340. for ll_row = 1 to this.rowcount( )
  1341. this.object.mtrlsectype[ll_row] = ls_return
  1342. next
  1343. elseif dwo.Name = 't_mod_zxmtrlmode' then // 自定义2
  1344. s_parm.title = '自定义2'
  1345. s_parm.old_text = ''
  1346. openwithparm(w_inputbox, s_parm)
  1347. ls_return = message.stringparm
  1348. if trim(ls_return) = '' then return
  1349. for ll_row = 1 to this.rowcount( )
  1350. this.object.zxmtrlmode[ll_row] = ls_return
  1351. next
  1352. elseif dwo.Name = 't_mod_prdpackcode' then // 包装单位
  1353. s_parm.title = '包装单位'
  1354. s_parm.old_text = ''
  1355. openwithparm(w_inputbox, s_parm)
  1356. ls_return = message.stringparm
  1357. if trim(ls_return) = '' then return
  1358. for ll_row = 1 to this.rowcount( )
  1359. this.object.prdpackcode[ll_row] = ls_return
  1360. next
  1361. elseif dwo.Name = 't_mod_packqty' then // 包装件数
  1362. s_parm.title = '包装件数'
  1363. s_parm.old_text = ''
  1364. openwithparm(w_inputbox, s_parm)
  1365. ls_return = message.stringparm
  1366. if trim(ls_return) = '' then return
  1367. for ll_row = 1 to this.rowcount( )
  1368. this.object.packqty[ll_row] = dec(ls_return)
  1369. next
  1370. elseif dwo.Name = 't_mod_u_storage_storagename' then // 仓库
  1371. s_parm.title = '仓库'
  1372. s_parm.old_text = ''
  1373. openwithparm(w_inputbox, s_parm)
  1374. ls_return = message.stringparm
  1375. if trim(ls_return) = '' then return
  1376. for ll_row = 1 to this.rowcount( )
  1377. this.object.u_storage_storagename[ll_row] = ls_return
  1378. next
  1379. elseif dwo.Name = 't_mod_dscrp' then // 备注
  1380. s_parm.title = '备注'
  1381. s_parm.old_text = ''
  1382. openwithparm(w_inputbox, s_parm)
  1383. ls_return = message.stringparm
  1384. if trim(ls_return) = '' then return
  1385. for ll_row = 1 to this.rowcount( )
  1386. this.object.dscrp[ll_row] = ls_return
  1387. next
  1388. end if
  1389. end event
  1390. type tabpage_2 from userobject within tab_1
  1391. integer x = 18
  1392. integer y = 112
  1393. integer width = 3488
  1394. integer height = 1824
  1395. long backcolor = 134217739
  1396. string text = "供应商"
  1397. long tabtextcolor = 33554432
  1398. long tabbackcolor = 134217739
  1399. string picturename = "Custom081!"
  1400. long picturemaskcolor = 536870912
  1401. dw_2 dw_2
  1402. end type
  1403. on tabpage_2.create
  1404. this.dw_2=create dw_2
  1405. this.Control[]={this.dw_2}
  1406. end on
  1407. on tabpage_2.destroy
  1408. destroy(this.dw_2)
  1409. end on
  1410. type dw_2 from u_dw_rbtnfilter within tabpage_2
  1411. integer width = 3474
  1412. integer height = 1824
  1413. integer taborder = 20
  1414. string dataobject = "dw_define_spt"
  1415. boolean hscrollbar = true
  1416. boolean vscrollbar = true
  1417. boolean hsplitscroll = true
  1418. end type
  1419. event constructor;//wf_lock_uc
  1420. Int LS_INT,uc_column_int
  1421. Long ls_row
  1422. uc_column_int = Long(THIS.Describe("DataWindow.Column.Count"))
  1423. FOR LS_INT = 1 TO uc_column_int
  1424. THIS.SetTabOrder (LS_INT,LS_INT*10 )
  1425. NEXT
  1426. end event
  1427. event dwnkey;If key = KeyEnter! Then //
  1428. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  1429. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  1430. return 1
  1431. end if
  1432. end event
  1433. event rowfocuschanged;call super::rowfocuschanged;//IF dw_edit_mode THEN RETURN
  1434. IF currentrow <=0 THEN RETURN
  1435. this.selectrow(0,false)
  1436. this.selectrow(currentrow,true)
  1437. end event
  1438. event clicked;call super::clicked;s_inputbox s_parm
  1439. string ls_return
  1440. long ll_row
  1441. if dwo.Name = 't_mod_spttype' then // 类别
  1442. s_parm.title = '类别'
  1443. s_parm.old_text = ''
  1444. openwithparm(w_inputbox, s_parm)
  1445. ls_return = message.stringparm
  1446. if trim(ls_return) = '' then return
  1447. for ll_row = 1 to this.rowcount( )
  1448. this.object.spttype[ll_row] = ls_return
  1449. next
  1450. elseif dwo.Name = 't_mod_dscrp' then // 备注
  1451. s_parm.title = '备注'
  1452. s_parm.old_text = ''
  1453. openwithparm(w_inputbox, s_parm)
  1454. ls_return = message.stringparm
  1455. if trim(ls_return) = '' then return
  1456. for ll_row = 1 to this.rowcount( )
  1457. this.object.dscrp[ll_row] = ls_return
  1458. next
  1459. end if
  1460. end event
  1461. type tabpage_3 from userobject within tab_1
  1462. integer x = 18
  1463. integer y = 112
  1464. integer width = 3488
  1465. integer height = 1824
  1466. long backcolor = 134217739
  1467. string text = "客户"
  1468. long tabtextcolor = 33554432
  1469. long tabbackcolor = 134217739
  1470. string picturename = "ComputeToday!"
  1471. long picturemaskcolor = 536870912
  1472. dw_3 dw_3
  1473. end type
  1474. on tabpage_3.create
  1475. this.dw_3=create dw_3
  1476. this.Control[]={this.dw_3}
  1477. end on
  1478. on tabpage_3.destroy
  1479. destroy(this.dw_3)
  1480. end on
  1481. type dw_3 from u_dw_rbtnfilter within tabpage_3
  1482. integer width = 3474
  1483. integer height = 1824
  1484. integer taborder = 20
  1485. string dataobject = "dw_define_cust"
  1486. boolean hscrollbar = true
  1487. boolean vscrollbar = true
  1488. boolean hsplitscroll = true
  1489. end type
  1490. event constructor;//wf_lock_uc
  1491. Int LS_INT,uc_column_int
  1492. Long ls_row
  1493. uc_column_int = Long(THIS.Describe("DataWindow.Column.Count"))
  1494. FOR LS_INT = 1 TO uc_column_int
  1495. THIS.SetTabOrder (LS_INT,LS_INT*10 )
  1496. NEXT
  1497. end event
  1498. event dwnkey;If key = KeyEnter! Then //
  1499. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  1500. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  1501. return 1
  1502. end if
  1503. end event
  1504. event rowfocuschanged;call super::rowfocuschanged;//IF dw_edit_mode THEN RETURN
  1505. IF currentrow <=0 THEN RETURN
  1506. this.selectrow(0,false)
  1507. this.selectrow(currentrow,true)
  1508. end event
  1509. event clicked;call super::clicked;s_inputbox s_parm
  1510. string ls_return
  1511. long ll_row
  1512. if dwo.Name = 't_mod_custype' then // 业务员
  1513. s_parm.title = '业务员'
  1514. s_parm.old_text = ''
  1515. openwithparm(w_inputbox, s_parm)
  1516. ls_return = message.stringparm
  1517. if trim(ls_return) = '' then return
  1518. for ll_row = 1 to this.rowcount( )
  1519. this.object.custype[ll_row] = ls_return
  1520. next
  1521. elseif dwo.Name = 't_mod_cusareaname' then // 区域
  1522. s_parm.title = '区域'
  1523. s_parm.old_text = ''
  1524. openwithparm(w_inputbox, s_parm)
  1525. ls_return = message.stringparm
  1526. if trim(ls_return) = '' then return
  1527. for ll_row = 1 to this.rowcount( )
  1528. this.object.cusareaname[ll_row] = ls_return
  1529. next
  1530. elseif dwo.Name = 't_mod_givebackrate' then // 返利率
  1531. s_parm.title = '返利率'
  1532. s_parm.old_text = ''
  1533. openwithparm(w_inputbox, s_parm)
  1534. ls_return = message.stringparm
  1535. if trim(ls_return) = '' then return
  1536. for ll_row = 1 to this.rowcount( )
  1537. this.object.givebackrate[ll_row] = dec(ls_return)
  1538. next
  1539. elseif dwo.Name = 't_mod_dscrp' then // 备注
  1540. s_parm.title = '备注'
  1541. s_parm.old_text = ''
  1542. openwithparm(w_inputbox, s_parm)
  1543. ls_return = message.stringparm
  1544. if trim(ls_return) = '' then return
  1545. for ll_row = 1 to this.rowcount( )
  1546. this.object.dscrp[ll_row] = ls_return
  1547. next
  1548. end if
  1549. end event
  1550. type cb_1 from uo_imflatbutton within w_define
  1551. integer width = 265
  1552. integer height = 164
  1553. integer taborder = 20
  1554. boolean bringtotop = true
  1555. string text = "打开文件"
  1556. string normalpicname = "open.bmp"
  1557. integer picsize = 16
  1558. toolbaralignment pic_align = alignattop!
  1559. boolean border = false
  1560. end type
  1561. event clicked;call super::clicked;CHOOSE CASE tab_1.SelectedTab
  1562. CASE 1
  1563. wf_openfile(dw_1)
  1564. CASE 2
  1565. wf_openfile(dw_2)
  1566. CASE 3
  1567. wf_openfile(dw_3)
  1568. END CHOOSE
  1569. end event
  1570. type cb_2 from uo_imflatbutton within w_define
  1571. integer x = 265
  1572. integer width = 265
  1573. integer height = 164
  1574. integer taborder = 10
  1575. boolean bringtotop = true
  1576. string text = "保存文件"
  1577. string normalpicname = "save.bmp"
  1578. integer picsize = 16
  1579. toolbaralignment pic_align = alignattop!
  1580. boolean border = false
  1581. end type
  1582. event clicked;call super::clicked;CHOOSE CASE tab_1.SelectedTab
  1583. CASE 1
  1584. wf_savefile(dw_1)
  1585. CASE 2
  1586. wf_savefile(dw_2)
  1587. CASE 3
  1588. wf_savefile(dw_3)
  1589. END CHOOSE
  1590. end event
  1591. type cb_3 from uo_imflatbutton within w_define
  1592. integer x = 530
  1593. integer width = 151
  1594. integer height = 164
  1595. integer taborder = 40
  1596. boolean bringtotop = true
  1597. string text = "增行"
  1598. string normalpicname = "mx1.bmp"
  1599. integer picsize = 16
  1600. toolbaralignment pic_align = alignattop!
  1601. boolean border = false
  1602. end type
  1603. event clicked;call super::clicked;choose case tab_1.selectedtab
  1604. case 1
  1605. wf_insertrow(dw_1)
  1606. case 2
  1607. wf_insertrow(dw_2)
  1608. case 3
  1609. wf_insertrow(dw_3)
  1610. end choose
  1611. end event
  1612. type cb_4 from uo_imflatbutton within w_define
  1613. integer x = 681
  1614. integer width = 151
  1615. integer height = 164
  1616. integer taborder = 40
  1617. boolean bringtotop = true
  1618. string text = "删行"
  1619. string normalpicname = "mx2.bmp"
  1620. integer picsize = 16
  1621. toolbaralignment pic_align = alignattop!
  1622. boolean border = false
  1623. end type
  1624. event clicked;call super::clicked;CHOOSE CASE tab_1.SelectedTab
  1625. CASE 1
  1626. wf_delrow(dw_1)
  1627. CASE 2
  1628. wf_delrow(dw_2)
  1629. CASE 3
  1630. wf_delrow(dw_3)
  1631. END CHOOSE
  1632. end event
  1633. type cb_5 from uo_imflatbutton within w_define
  1634. integer x = 832
  1635. integer width = 265
  1636. integer height = 164
  1637. integer taborder = 50
  1638. boolean bringtotop = true
  1639. string text = "检查数据"
  1640. string normalpicname = "update2.bmp"
  1641. integer picsize = 16
  1642. toolbaralignment pic_align = alignattop!
  1643. boolean border = false
  1644. end type
  1645. event clicked;call super::clicked;String arg_msg
  1646. CHOOSE CASE tab_1.SelectedTab
  1647. CASE 1
  1648. IF wf_check_mtrl(arg_msg) = 0 THEN
  1649. MessageBox('提示',arg_msg, Information!, OK! )
  1650. END IF
  1651. CASE 2
  1652. IF wf_check_spt(arg_msg) = 0 THEN
  1653. MessageBox('提示',arg_msg, Information!, OK! )
  1654. END IF
  1655. CASE 3
  1656. IF wf_check_cust(arg_msg) = 0 THEN
  1657. MessageBox('提示',arg_msg, Information!, OK! )
  1658. END IF
  1659. END CHOOSE
  1660. end event
  1661. type cb_6 from uo_imflatbutton within w_define
  1662. integer x = 1097
  1663. integer width = 265
  1664. integer height = 164
  1665. integer taborder = 60
  1666. boolean bringtotop = true
  1667. string text = "导入数据"
  1668. string normalpicname = "update.bmp"
  1669. integer picsize = 16
  1670. toolbaralignment pic_align = alignattop!
  1671. boolean border = false
  1672. end type
  1673. event clicked;call super::clicked;choose case tab_1.selectedtab
  1674. case 1
  1675. wf_import_mtrl()
  1676. case 2
  1677. wf_import_spt()
  1678. case 3
  1679. wf_import_cust()
  1680. end choose
  1681. end event
  1682. type cb_help from uo_imflatbutton within w_define
  1683. string tag = "帮助[F1]"
  1684. integer x = 1362
  1685. integer width = 151
  1686. integer height = 164
  1687. integer taborder = 20
  1688. boolean bringtotop = true
  1689. string text = "帮助"
  1690. string normalpicname = "help.bmp"
  1691. integer picsize = 16
  1692. toolbaralignment pic_align = alignattop!
  1693. boolean border = false
  1694. end type
  1695. event clicked;call super::clicked;PARENT.TriggerEvent('ue_help')
  1696. end event
  1697. type ln_bar from line within w_define
  1698. long linecolor = 268435456
  1699. integer linethickness = 4
  1700. integer beginy = 172
  1701. integer endx = 3323
  1702. integer endy = 172
  1703. end type
  1704. type ln_bar2 from line within w_define
  1705. long linecolor = 16777215
  1706. integer linethickness = 4
  1707. integer beginy = 176
  1708. integer endx = 3323
  1709. integer endy = 176
  1710. end type
  1711. type r_bar from rectangle within w_define
  1712. long linecolor = 16777215
  1713. long fillcolor = 1073741824
  1714. integer x = 2747
  1715. integer width = 73
  1716. integer height = 172
  1717. end type
  1718. event constructor;this.fillcolor = 14215660
  1719. this.linecolor = 14215660
  1720. this.x = -1
  1721. this.y = -1
  1722. this.height = ln_bar2.beginy - 5
  1723. end event