$PBExportHeader$w_define.srw forward global type w_define from w_publ_base end type type tab_1 from tab within w_define end type type tabpage_1 from userobject within tab_1 end type type dw_1 from u_dw_rbtnfilter within tabpage_1 end type type tabpage_1 from userobject within tab_1 dw_1 dw_1 end type type tabpage_2 from userobject within tab_1 end type type dw_2 from u_dw_rbtnfilter within tabpage_2 end type type tabpage_2 from userobject within tab_1 dw_2 dw_2 end type type tabpage_3 from userobject within tab_1 end type type dw_3 from u_dw_rbtnfilter within tabpage_3 end type type tabpage_3 from userobject within tab_1 dw_3 dw_3 end type type tab_1 from tab within w_define tabpage_1 tabpage_1 tabpage_2 tabpage_2 tabpage_3 tabpage_3 end type type cb_1 from uo_imflatbutton within w_define end type type cb_2 from uo_imflatbutton within w_define end type type cb_3 from uo_imflatbutton within w_define end type type cb_4 from uo_imflatbutton within w_define end type type cb_5 from uo_imflatbutton within w_define end type type cb_6 from uo_imflatbutton within w_define end type type cb_help from uo_imflatbutton within w_define end type type ln_bar from line within w_define end type type ln_bar2 from line within w_define end type type r_bar from rectangle within w_define end type end forward global type w_define from w_publ_base integer width = 3602 integer height = 2296 string title = "定义资料导入" boolean maxbox = true windowstate windowstate = maximized! long printnum = 34165640 event ue_help ( ) tab_1 tab_1 cb_1 cb_1 cb_2 cb_2 cb_3 cb_3 cb_4 cb_4 cb_5 cb_5 cb_6 cb_6 cb_help cb_help ln_bar ln_bar ln_bar2 ln_bar2 r_bar r_bar end type global w_define w_define type variables datawindow dw_2,dw_3,dw_1 end variables forward prototypes public subroutine wf_insertrow (datawindow arg_dw) public subroutine wf_delrow (datawindow arg_dw) public subroutine wf_savefile (datawindow arg_dw) public function integer wf_check_mtrl (ref string arg_msg) public function integer wf_check_cust (ref string arg_msg) public function integer wf_check_spt (ref string arg_msg) protected function integer wf_openfile (datawindow arg_dw) public subroutine wf_import_mtrl () public subroutine wf_import_spt () public subroutine wf_import_cust () end prototypes event ue_help();Int i i = htmlhelpA(Handle(THIS), sys_help_chm, 0, THIS.Title+".html") end event public subroutine wf_insertrow (datawindow arg_dw);long li_row li_row=arg_dw.insertrow(0) arg_dw.scrolltorow(li_row) arg_dw.setcolumn(1) end subroutine public subroutine wf_delrow (datawindow arg_dw); IF arg_dw.GETROW()=0 THEN RETURN END IF arg_dw.DeleteRow (0) arg_dw.TriggerEvent (rowfocuschanged!) end subroutine public subroutine wf_savefile (datawindow arg_dw);////IF NOT sys_power_issuper THEN //// MessageBox(publ_operator,'你没有使用权限!') //// RETURN ////END IF //// // ////new //Integer i //String Pathname,Filename //String arg_filename,arg_msg //Blob arg_blob // // //IF GetFileSaveName("选择备份文件",Pathname,Filename,'xls',"Excel,*.xls") < 1 THEN RETURN //IF Trim(Pathname) <> '' AND Trim(Filename) <> "" THEN //// Pathname //END IF // //arg_filename = Trim(Pathname) //IF arg_filename = '' THEN // MessageBox('提示','请输入文件名称', Information!, OK! ) // RETURN //END IF // //IF FileExists(arg_filename) THEN // IF MessageBox("询问","指定文件已经存在,是否覆盖该文件?",question!,yesno!,2) = 2 THEN // RETURN // END IF //END IF // //arg_dw.AcceptText( ) // ////n_cst_dw2excel n_excel ////n_excel.OF_SetTipsWindow("w_tipsabc","正在生成Excel文件,请稍候.....") ////n_excel.OF_dw2Excel(arg_dw,arg_filename) //gf_dw_to_excel(arg_dw,arg_filename) // // //IF NOT sys_power_issuper THEN // MessageBox(publ_operator,'你没有使用权限!') // RETURN //END IF // //new Integer i String Pathname,Filename String arg_filename,arg_msg Blob arg_blob IF GetFileSaveName("选择备份文件",Pathname,Filename,'xls',"Excel,*.xls") < 1 THEN RETURN IF Trim(Pathname) <> '' AND Trim(Filename) <> "" THEN // Pathname END IF arg_filename = Trim(Pathname) IF arg_filename = '' THEN MessageBox('提示','请输入文件名称', Information!, OK! ) RETURN END IF IF FileExists(arg_filename) THEN IF MessageBox("询问","指定文件已经存在,是否覆盖该文件?",question!,yesno!,2) = 2 THEN RETURN END IF END IF arg_dw.AcceptText( ) //n_cst_dw2excel n_excel //n_excel.OF_SetTipsWindow("w_tipsabc","正在生成Excel文件,请稍候.....") //n_excel.OF_dw2Excel(arg_dw,arg_filename) // TODO: 隐藏批修改 string ls_objs long ll_pos = 1, ll_end, ll_cnt = 0 string ls_name, ls_names[] string ls_oldvalues[] ls_objs = arg_dw.describe('DataWindow.Objects') if len(ls_objs) > 0 then ll_end = pos(ls_objs, '~t', ll_pos) do while ll_end > 0 ls_name = mid(ls_objs, ll_pos, ll_end - ll_pos) if mid(ls_name, 1, 6) = 't_mod_' OR ls_name = 'compute_1' then ll_cnt ++ ls_names[ll_cnt] = ls_name end if ll_pos = ll_end + 1 ll_end = pos(ls_objs, '~t', ll_pos) loop ls_name = mid(ls_objs, ll_pos) if mid(ls_name, 1, 6) = 't_mod_' OR ls_name = 'compute_1' then ll_cnt ++ ls_names[ll_cnt] = ls_name end if for ll_cnt = 1 to upperbound(ls_names) ls_oldvalues[ll_cnt] = arg_dw.describe(ls_names[ll_cnt] + ".Visible") arg_dw.modify(ls_names[ll_cnt] + ".Visible = '0'") next end if //gf_dw_to_excel(arg_dw,arg_filename) n_cst_dw2Excel lnv_Excel lnv_Excel.OF_dw2Excel(arg_dw,arg_filename,'Sheet1') // TODO: 显示批修改 for ll_cnt = 1 to upperbound(ls_names) arg_dw.modify(ls_names[ll_cnt] + ".Visible = '" + ls_oldvalues[ll_cnt] + "'") next end subroutine public function integer wf_check_mtrl (ref string arg_msg);Long i,rowcnt,rslt = 1,cnt,j,cur,strcunt,k,mtrlorigin String Columnname,storagename,storname String mtrlcode String ls_temp,dscrp String mtrlname,mtrlmodes rowcnt = dw_1.RowCount( ) IF rowcnt < 1 THEN RETURN rslt Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(rowcnt) w_sys_wait_jdt.wf_inc(0.5) w_sys_wait_jdt.st_msg.Text = "正在检查数据..." dw_1.AcceptText( ) //检查数据 FOR i = 1 TO rowcnt w_sys_wait_jdt.wf_inc(i) dw_1.Object.mtrlcode[i] = Trim(dw_1.Object.mtrlcode[i]) dw_1.Object.mtrlname[i] = Trim(dw_1.Object.mtrlname[i]) // dw_1.Object.mtrltype[i] = Trim(dw_1.Object.mtrltype[i]) // dw_1.Object.mtrlmodes[i] = Trim(dw_1.Object.mtrlmodes[i]) dw_1.Object.dscrp[i] = Trim(dw_1.Object.dscrp[i]) dw_1.Object.unit[i] = Trim(dw_1.Object.unit[i]) mtrlname = dw_1.Object.mtrlname[i] IF Len(mtrlname) <= 50 THEN dw_1.Object.mtrlname[i] = mtrlname ELSE MessageBox('提示',"物料名称不能超过50个字符", Information!, OK! ) dw_1.Object.mtrlname[i] = '' END IF dscrp = dw_1.Object.dscrp[i] IF Len(dscrp) <= 255 THEN dw_1.Object.dscrp[i] = dscrp ELSE MessageBox('提示',"备注不能超过255个字符", Information!, OK! ) dw_1.Object.dscrp[i] = '' END IF // if dw_1.Object.mtrlname[i]='' and dw_1.Object.mtrlcode[i]='' then // continue // end if String ls_mtrltype Long ll_mtrltypeid ls_mtrltype = Trim(dw_1.Object.mtrltype[i]) IF ls_mtrltype = '' THEN rslt = 0 arg_msg = '请输入物料类别' Columnname = 'mtrltype' GOTO ext END IF mtrlorigin = dw_1.Object.mtrlorigin[i] SELECT count(mtrltypeid) INTO :ll_mtrltypeid FROM u_mtrltype Where u_mtrltype.handtype = :ls_mtrltype ; //and mtrlprp=:mtrlorigin; IF ll_mtrltypeid = 0 THEN rslt = 0 arg_msg = '请先在系统中输入物料类别!' Columnname = 'mtrltype' GOTO ext END IF // if sqlca.sqlcode<>0 then // rslt = 0 // arg_msg = '请选择物料类别'+sqlca.sqlerrtext//+string(ll_mtrltypeid) // Columnname = 'handtype' // GOTO ext // else // dw_1.object.handtype[i]=lls_handtype // dw_1.object.mtrltypeid[i]=ll_mtrltypeid // dw_1.accepttext( ) // end if IF dw_1.Object.mtrlcode[i] = '' THEN rslt = 0 arg_msg = '请输入物料编号' Columnname = 'mtrlcode' GOTO ext END IF IF dw_1.Object.mtrlname[i] = '' THEN rslt = 0 arg_msg = '请输物料名称' Columnname = 'mtrlname' GOTO ext END IF IF dw_1.Object.unit[i] = '' THEN rslt = 0 arg_msg = '请输入物料计量单位' Columnname = 'unit' GOTO ext END IF // IF dw_1.Object.Mtrlorigin[i] = '' THEN // rslt = 0 // arg_msg = '请输入来源' // Columnname = 'Mtrlorigin' // GOTO ext // END IF 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 ELSE rslt = 0 arg_msg = ' "来源"必须为:"自制产品" 或 "产品包装件" 或 "采购" 或 "外协部件" 或 "自制部件"!' Columnname = 'Mtrlorigin' GOTO ext END IF // //检查物料编码是否重复 // cnt = 0 // if i>1 then // for j=1 to i - 1 // if dw_1.object.mtrlcode[i]=dw_1.object.mtrlcode[j] then // cnt=1 // end if // next // end if // mtrlcode=dw_1.Object.mtrlcode[i] // SELECT count(mtrlid) INTO :cnt // FROM u_mtrldef // Where mtrlcode = :mtrlcode; // // IF cnt > 0 THEN // dw_1.Object.repeat[i] = 1 // rslt=0 // arg_msg='物料编码不能重复!' // Columnname = 'mtrlcode' // GOTO ext // END IF //判断仓库 storagename = Trim(dw_1.Object.u_storage_storagename[i]) // if storagename<>'' then // do while len(storagename)>0 // cur=pos(storagename,'、') // // if cur=0 then // select count(storageid) // into :strcunt // from u_storage // where storagename=:storagename; // if strcunt=0 then // rslt=0 // // arg_msg='错误的仓库!' // Columnname = 'u_storage_storagename' // GOTO ext // end if // storagename=trim(left(storagename,cur - 1)) // // else // storname=trim(left(storagename,cur - 1)) // // select count(storageid) // into :strcunt // from u_storage // where storagename=:storname; // if strcunt=0 then // rslt=0 // // arg_msg='错误的仓库!' // Columnname = 'u_storage_storagename' // GOTO ext // end if // // storagename=trim(right(storagename,len(storagename)-cur)) // end if // loop // end if SELECT count(storageid) INTO :strcunt FROM u_storage Where storagename = :storagename; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询仓库资料失败'+sqlca.SQLErrText Columnname = 'u_storage_storagename' GOTO ext END IF IF strcunt = 0 THEN rslt = 0 arg_msg = '请先在系统中定义仓库资料!' Columnname = 'u_storage_storagename' GOTO ext END IF NEXT ext: Close(w_sys_wait_jdt) IF rslt = 0 THEN //MessageBox('系统提示',arg_msg) dw_1.SetFocus() dw_1.ScrollToRow( i) dw_1.SetColumn(Columnname) END IF RETURN rslt end function public function integer wf_check_cust (ref string arg_msg);//Long i,rowcnt,rslt = 1,cnt,j,cnt1,repcnt,cusid //String Columnname,custype,cusareaname //string cuscode //rowcnt = dw_3.RowCount( ) // //IF rowcnt < 1 THEN RETURN rslt // //Open(w_sys_wait_jdt) //初始化进度条 //w_sys_wait_jdt.Show() //w_sys_wait_jdt.wf_accepttol(rowcnt) //w_sys_wait_jdt.wf_inc(0.5) //w_sys_wait_jdt.st_msg.Text = "正在检查数据..." // //dw_3.AcceptText( ) // ////检查数据 //FOR i = 1 TO rowcnt // w_sys_wait_jdt.wf_inc(i) // // dw_3.Object.Name[i] = Trim(dw_3.Object.Name[i]) // dw_3.Object.custype[i] = Trim(dw_3.Object.custype[i]) // dw_3.Object.rep[i] = Trim(dw_3.Object.rep[i]) // dw_3.Object.tele[i] = Trim(dw_3.Object.tele[i]) // dw_3.Object.bank[i] = Trim(dw_3.Object.bank[i]) // dw_3.Object.cunt[i] = Trim(dw_3.Object.cunt[i]) // dw_3.Object.cuscode[i] = Trim(dw_3.Object.cuscode[i]) // dw_3.Object.Address[i] = Trim(dw_3.Object.Address[i]) // dw_3.Object.dscrp[i] = Trim(dw_3.Object.dscrp[i]) // custype=dw_3.Object.custype[i] // cusareaname=dw_3.Object.cusareaname[i] // // IF dw_3.Object.cuscode[i] = '' THEN // rslt = 0 // arg_msg = '请输入客户编号' // Columnname = 'cuscode' // GOTO ext // END IF // // IF dw_3.Object.Name[i] = '' THEN // // rslt = 0 // arg_msg = '请输入客户名称' // Columnname = 'name' // GOTO ext // END IF // // IF dw_3.Object.cusareaname[i] = '' THEN // // rslt = 0 // arg_msg = '请输入区域' // Columnname = 'cusareaname' // GOTO ext // END IF // // // //检查客户编号是否重复 // cnt = 0 // if i>1 then // for j=1 to i - 1 // if dw_3.object.cuscode[i]=dw_3.object.cuscode[j] then // cnt1=1 // end if // next // end if // cuscode=dw_3.Object.cuscode[i] // SELECT count(cusid) INTO :cnt1 // FROM u_cust // Where cuscode = :cuscode; // // IF cnt1 > 0 THEN // dw_3.Object.repeat[i] = 1 // rslt=0 // arg_msg='客户编号不能重复!' // Columnname = 'cuscode' // GOTO ext // END IF // ////检查业务员 // select count(outrepcode) // into :repcnt // from u_outrepdef // where outrepname=:custype; // if repcnt=0 then // rslt=0 // arg_msg='请先在系统中定义业务员资料!' // Columnname = 'custype' // GOTO ext // end if // // String ll_cusareaname,ll_areaname // string ls_temp // Long ll_cusareaid // // ////检查地区 // // select count(CusareaID) // into :cusID // from u_cusarea // where cusareaname=:cusareaname; // if sqlca.sqlcode<>0 then // rslt = 0 // arg_msg = '请输入客户区域'+sqlca.sqlerrtext//+string(ll_mtrltypeid) // Columnname = 'cusareaname' // GOTO ext // end if // if cusid=0 then // rslt=0 // arg_msg = '请先在系统中定义地区资料!' // Columnname = 'cusareaname' // GOTO ext // end if //NEXT // //ext: //Close(w_sys_wait_jdt) //IF rslt = 0 THEN // //MessageBox('系统提示',arg_msg) // dw_3.SetFocus() // dw_3.ScrollToRow( i) // dw_3.SetColumn(Columnname) //END IF // //return rslt // Long i,rowcnt,rslt = 1,cnt,j,cnt1,repcnt,cusid String Columnname,custype,cusareaname String cuscode, name rowcnt = dw_3.RowCount( ) IF rowcnt < 1 THEN RETURN rslt Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(rowcnt) w_sys_wait_jdt.wf_inc(0.5) w_sys_wait_jdt.st_msg.Text = "正在检查数据..." dw_3.AcceptText( ) //检查数据 FOR i = 1 TO rowcnt w_sys_wait_jdt.wf_inc(i) dw_3.Object.Name[i] = Trim(dw_3.Object.Name[i]) dw_3.Object.custype[i] = Trim(dw_3.Object.custype[i]) dw_3.Object.rep[i] = Trim(dw_3.Object.rep[i]) dw_3.Object.tele[i] = Trim(dw_3.Object.tele[i]) dw_3.Object.bank[i] = Trim(dw_3.Object.bank[i]) dw_3.Object.cunt[i] = Trim(dw_3.Object.cunt[i]) dw_3.Object.cuscode[i] = Trim(dw_3.Object.cuscode[i]) dw_3.Object.Address[i] = Trim(dw_3.Object.Address[i]) dw_3.Object.dscrp[i] = Trim(dw_3.Object.dscrp[i]) custype = dw_3.Object.custype[i] cusareaname = dw_3.Object.cusareaname[i] IF dw_3.Object.cuscode[i] = '' THEN rslt = 0 arg_msg = '请输入客户编号' Columnname = 'cuscode' GOTO ext END IF IF dw_3.Object.Name[i] = '' THEN rslt = 0 arg_msg = '请输入客户名称' Columnname = 'name' GOTO ext END IF IF dw_3.Object.cusareaname[i] = '' THEN rslt = 0 arg_msg = '请输入区域' Columnname = 'cusareaname' GOTO ext END IF //检查客户编号是否重复 cnt = 0 IF i > 1 THEN FOR j = 1 TO i - 1 IF dw_3.Object.cuscode[i] = dw_3.Object.cuscode[j] THEN dw_3.Object.repeat[i] = 1 rslt = 0 arg_msg = '客户编号不能重复!第 ' + string(i) + ' 行与第 ' + string(j) + ' 行重复' Columnname = 'cuscode' GOTO ext END IF if dw_3.Object.name[i] = dw_3.Object.name[j] then dw_3.object.repeat[i] = 1 rslt = 0 arg_msg = '客户名称不能重复!第 ' + string(i) + ' 行与第 ' + string(j) + ' 行重复' Columnname = 'name' GOTO ext end if NEXT END IF cuscode = dw_3.Object.cuscode[i] SELECT count(cusid) INTO :cnt1 FROM u_cust Where cuscode = :cuscode; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '数据库连失败,' + sqlca.sqlerrtext Columnname = 'cuscode' goto ext end if IF cnt1 > 0 THEN dw_3.Object.repeat[i] = 1 rslt = 0 arg_msg = '客户编号不能重复!编号已经使用' Columnname = 'cuscode' GOTO ext END IF name = dw_3.Object.name[i] SELECT count(cusid) INTO :cnt1 FROM u_cust Where name = :name; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '数据库连失败,' + sqlca.sqlerrtext Columnname = 'name' goto ext end if IF cnt1 > 0 THEN dw_3.Object.repeat[i] = 1 rslt = 0 arg_msg = '客户名称不能重复!"' + name + '"已经存在' Columnname = 'name' GOTO ext END IF // //检查业务员 // SELECT count(outrepcode) // INTO :repcnt // FROM u_outrepdef // Where outrepname = :custype; // IF repcnt = 0 THEN // rslt = 0 // arg_msg = '请先在系统中定义业务员资料!' // Columnname = 'custype' // GOTO ext // END IF // String ll_cusareaname,ll_areaname String ls_temp Long ll_cusareaid //检查地区 SELECT count(CusareaID) INTO :cusID FROM u_cusarea Where cusareaname = :cusareaname; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '请输入客户区域'+sqlca.SQLErrText //+string(ll_mtrltypeid) Columnname = 'cusareaname' GOTO ext END IF IF cusid = 0 THEN rslt = 0 arg_msg = '请先在系统中定义地区资料!' Columnname = 'cusareaname' GOTO ext END IF NEXT ext: Close(w_sys_wait_jdt) IF rslt = 0 THEN //MessageBox('系统提示',arg_msg) dw_3.SetFocus() dw_3.ScrollToRow( i) dw_3.SetColumn(Columnname) END IF RETURN rslt end function public function integer wf_check_spt (ref string arg_msg);Long i,rowcnt,rslt = 1,cnt,j String Columnname string sptcode rowcnt = dw_2.RowCount( ) IF rowcnt < 1 THEN RETURN rslt Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(rowcnt) w_sys_wait_jdt.wf_inc(0.5) w_sys_wait_jdt.st_msg.Text = "正在检查数据..." dw_2.accepttext( ) //检查数据 FOR i = 1 TO rowcnt w_sys_wait_jdt.wf_inc(i) dw_2.Object.sptcode[i] = Trim(dw_2.Object.sptcode[i]) dw_2.Object.Name[i] = Trim(dw_2.Object.Name[i]) dw_2.Object.spttype[i] = Trim(dw_2.Object.spttype[i]) dw_2.Object.rep[i] = Trim(dw_2.Object.rep[i]) dw_2.Object.tele[i] = Trim(dw_2.Object.tele[i]) dw_2.Object.tele1[i] = Trim(dw_2.Object.tele1[i]) dw_2.Object.bank[i] = Trim(dw_2.Object.bank[i]) dw_2.Object.cunt[i] = Trim(dw_2.Object.cunt[i]) dw_2.Object.code[i] = Trim(dw_2.Object.code[i]) dw_2.Object.Address[i] = Trim(dw_2.Object.Address[i]) dw_2.Object.dscrp[i] = Trim(dw_2.Object.dscrp[i]) dw_2.Object.faxno[i] = Trim(dw_2.Object.faxno[i]) IF dw_2.Object.sptcode[i] = '' THEN rslt = 0 arg_msg = '请输入供应商编号' Columnname = 'sptcode' GOTO ext END IF IF dw_2.Object.Name[i] = '' THEN rslt = 0 arg_msg = '请输入供应商名称' Columnname = 'name' GOTO ext END IF //检查供应商编号 cnt = 0 if i>1 then for j=1 to i - 1 if dw_2.object.sptcode[i]=dw_2.object.sptcode[j] then cnt=1 end if next end if sptcode=dw_2.Object.sptcode[i] SELECT count(sptid) INTO :cnt FROM u_spt Where sptcode = :sptcode; IF cnt > 0 THEN dw_2.Object.repeat[i] = 1 rslt=0 arg_msg='供应商编码不能重复!' Columnname = 'sptcode' GOTO ext END IF NEXT ext: Close(w_sys_wait_jdt) IF rslt = 0 THEN // MessageBox('系统提示',arg_msg) dw_2.SetFocus() dw_2.ScrollToRow( i) dw_2.SetColumn(Columnname) END IF RETURN rslt end function protected function integer wf_openfile (datawindow arg_dw); String str_savename,named,s_grxh Int excelok,li_net Long li_count,i oleobject excelserver excelserver = CREATE oleobject excelok = excelserver.ConnectToNewObject("excel.application") //检查返回值,以确保已成功地连接到了Excel IF excelok <> 0 THEN MessageBox("提示","连接EXCEL失败,请检查计算机中是否安装了EXCEL!", Information!, OK! ) RETURN -1 END IF li_net = GetFileOpenName("选择文件", str_savename,named,"xls","Excel文件(*.xls),*.xls") IF li_net > 0 THEN IF str_savename = "" THEN RETURN -1 arg_dw.SetTransObject(sqlca) arg_dw.InsertRow(0) arg_dw.Reset() excelserver.workbooks.Open(str_savename) excelserver.activesheet.cells.Copy datastore ds_col30 /////////////建立映射////////////////////// ds_col30 = create datastore ds_col30.dataobject = 'dw_col30' ds_col30.importclipboard(1) long ll_s_col_count = 30 long ll_d_col_count ll_d_col_count = long(arg_dw.object.datawindow.Column.Count) long ll_map[] // 目标表与原表的映射,0为没有映射 string ls_colType[] // 目标表列类型 long col_d, col_s for col_d = 1 to ll_d_col_count string ls_col_title, ls_col_name ls_col_name = arg_dw.describe('#' + string(col_d) + '.Name') ls_colType[col_d] = arg_dw.describe('#' + string(col_d) + '.ColType') ls_col_title = arg_dw.describe(ls_col_name + '_t.Text') ll_map[col_d] = 0 for col_s = 1 to ll_s_col_count string ls_s_title ls_s_title = ds_col30.GetItemString(1, col_s) if lower(trim(ls_col_title)) = lower(trim(ls_s_title)) then ll_map[col_d] = col_s exit end if next next // TODO: 人工干预,设置映射 long row_s, row_d for row_s = 2 to ds_col30.rowcount( ) row_d = arg_dw.insertrow(0) for col_d = 1 to ll_d_col_count if ll_map[col_d] = 0 then continue any value string ls_value ls_value = trim(ds_col30.GetItemString(row_s, ll_map[col_d])) if lower(left(ls_colType[col_d], 4)) = 'char' then value = ls_value elseif lower(left(ls_colType[col_d], 4)) = 'long' & OR lower(left(ls_colType[col_d], 3)) = 'int' & OR lower(left(ls_colType[col_d], 3)) = 'num' & OR lower(left(ls_colType[col_d], 5)) = 'ulong' then value = long(ls_value) elseif lower(left(ls_colType[col_d], 4)) = 'deci' & OR lower(left(ls_colType[col_d], 4)) = 'real' then value = dec(ls_value) elseif lower(left(ls_colType[col_d], 4)) = 'date' then value = Datetime(Date(left(ls_value, 10)), Time(mid(ls_value, 12))) end if arg_dw.SetItem(row_d, col_d, value) next next destroy ds_col30 /////////////////////////////////////// // li_count = arg_dw.ImportClipboard(2) //导入数据 (从第几行开始导入) Clipboard("") excelserver.quit() excelserver.DisconnectObject() DESTROY excelserver FOR i = 1 TO arg_dw.RowCount( ) arg_dw.Object.repeat[i] = 0 NEXT arg_dw.AcceptText( ) RETURN 1 ELSE MessageBox('提示','没有指定导入文件!', Information!, OK! ) RETURN -1 END IF end function public subroutine wf_import_mtrl ();String mtrlcode ,mtrlname ,mtrlengname,ls_storagename,ls_handtype String ls_mtrltype ,mtrlsectype,mtrlmode,unit,dscrp,zxmtrlmode Long Mtrlprp,Mtrlorigin,mtrltypeid,mtrlkind,ifsafa Dec planprice ,ctokg ,packqty ,lspacklimit Dec LMsaleprice,lmbuyprice,net_weight,gross_weight,cubage Dec price,cost String prdpackcode ,barcode,ls_temp Long ll_mtrlid,cnt_temp Long ls_storageid string ls_storage_str String arg_msg Long i,cnt,rowcnt,rslt = 1,k,j,l,t = 0,p = 1,cur,m String unit_buy,unit_scll,unit_sale Dec rate_buy,rate_scll,rate_sale String stro_name[] String descmtrl,sptname String mtrlnames,mtrlmodes String repeats dw_1.AcceptText( ) rowcnt = dw_1.RowCount( ) IF rowcnt = 0 THEN MessageBox('提示','当前没有数据', Information!, OK! ) RETURN END IF IF wf_check_mtrl(arg_msg) = 0 THEN MessageBox('提示',arg_msg, Information!, OK! ) RETURN END IF Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(rowcnt) w_sys_wait_jdt.wf_inc(0.5) w_sys_wait_jdt.st_msg.Text = "正在导入数据..." FOR i = 1 TO rowcnt w_sys_wait_jdt.wf_inc(i) mtrlcode = Trim(dw_1.Object.mtrlcode[i]) mtrlname = Trim(dw_1.Object.mtrlname[i]) mtrlengname = Trim(dw_1.Object.mtrlengname[i]) ls_handtype = Trim(dw_1.Object.mtrltype [i]) mtrlsectype = Trim(dw_1.Object.mtrlsectype [i]) mtrlmode = Trim(dw_1.Object.mtrlmode[i]) zxmtrlmode = Trim(dw_1.Object.zxmtrlmode[i]) unit = Trim(dw_1.Object.unit[i]) net_weight = dw_1.Object.net_weight[i] gross_weight = dw_1.Object.gross_weight[i] cubage = dw_1.Object.cubage[i] barcode = Trim(dw_1.Object.barcode[i]) prdpackcode = Trim(dw_1.Object.prdpackcode[i]) packqty = dw_1.Object.packqty[i] unit_buy = Trim(dw_1.Object.unit_buy[i]) rate_buy = dw_1.Object.rate_buy[i] unit_scll = Trim(dw_1.Object.unit_scll[i]) rate_scll = dw_1.Object.rate_scll[i] unit_sale = Trim(dw_1.Object.unit_sale[i]) rate_sale = dw_1.Object.rate_sale[i] dscrp = Trim(dw_1.Object.dscrp[i]) lmbuyprice = dw_1.Object.lmbuyprice[i] LMsaleprice = dw_1.Object.LMsaleprice[i] Mtrlorigin = dw_1.Object.Mtrlorigin[i] ls_storagename = Trim(dw_1.Object.u_storage_storagename[i]) //插入新记录 ll_mtrlid = f_sys_scidentity(0,"u_Mtrldef","mtrlid",arg_msg,FALSE,sqlca) IF ll_mtrlid <= 0 THEN rslt = 0 GOTO ext END IF SELECT mtrltype,mtrltypeid INTO :ls_mtrltype,:mtrltypeid FROM u_mtrltype Where handtype = :ls_handtype ;// and mtrlprp=:mtrlorigin; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询物料类别失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ls_storagename <> '' THEN IF Right(ls_storagename,1) = '/' THEN ELSE ls_storagename = ls_storagename+'/' END IF IF Pos(ls_storagename,'/') > 0 THEN DO WHILE Len(ls_storagename) > 0 cur = Pos(ls_storagename,'/') stro_name[p] = Trim(Left(ls_storagename,cur - 1)) p++ ls_storagename = Trim(Right(ls_storagename,Len(ls_storagename)-cur)) LOOP p = p - 1 END IF ls_storage_str = ',' FOR m = 1 TO p SELECT storageid INTO :ls_storageid FROM u_storage Where storagename = :stro_name[m]; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询仓库失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF INSERT INTO u_mtrl_storage (mtrlid,storageid) VALUES (:ll_mtrlid,:ls_storageid); IF sqlca.SQLCode <> 0 THEN arg_msg = '插入仓库失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ls_storage_str = ls_storage_str + string(ls_storageid) + ',' NEXT INSERT INTO u_mtrldef (mtrlid,mtrlcode, mtrlname, mtrlengname, mtrltype, mtrlsectype, mtrlmode, unit, zxmtrlmode, dscrp, packqty, prdpackcode, LMsaleprice, lmbuyprice, Mtrlorigin, mtrltypeid, handtype, barcode, net_weight, gross_weight, cubage, unit_buy,unit_scll,unit_sale,rate_buy,rate_scll,rate_sale,storagestr) VALUES (:ll_mtrlid,:mtrlcode, :mtrlname, :mtrlengname, :ls_mtrltype, :mtrlsectype, :mtrlmode, :unit, :zxmtrlmode, :dscrp, :packqty, :prdpackcode, :LMsaleprice, :lmbuyprice, :Mtrlorigin, :mtrltypeid, :ls_handtype, :barcode, :net_weight, :gross_weight, :cubage, :unit_buy,:unit_scll,:unit_sale,:rate_buy,:rate_scll,:rate_sale,:ls_storage_str); IF sqlca.SQLCode <> 0 THEN arg_msg = '插入产品定义资料失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF k++ NEXT ext: Close(w_sys_wait_jdt) IF rslt = 0 THEN ROLLBACK ; MessageBox('提示',arg_msg, Information!, OK! ) ELSEIF rslt = 1 THEN COMMIT ; MessageBox('提示','导入定义资料成功,数据共'+String(rowcnt)+'~n成功'+String(k)+'~n重复'+String(l)+' '+repeats+'~n空白行'+String(j), Information!, OK! ) END IF end subroutine public subroutine wf_import_spt ();string sptcode , sptname ,rep,spttype string tele ,tele1 ,bank ,cunt ,code ,address,dscrp Long ll_sptid String arg_msg,repeats,faxno,email Long i,cnt,rowcnt,rslt = 1,k,j,l rowcnt=dw_2.RowCount( ) IF rowcnt= 0 THEN MessageBox('提示','当前没有数据', Information!, OK! ) RETURN END IF if wf_check_spt(arg_msg)=0 then messagebox('提示',arg_msg, Information!, OK! ) return end if Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(rowcnt) w_sys_wait_jdt.wf_inc(0.5) w_sys_wait_jdt.st_msg.Text = "正在导入数据..." FOR i = 1 TO rowcnt w_sys_wait_jdt.wf_inc(i) sptcode=trim(dw_2.object.sptcode[i]) sptname=dw_2.object.name[i] rep=dw_2.object.rep[i] spttype=dw_2.object.spttype[i] tele=dw_2.object.tele[i] tele1=dw_2.object.tele1[i] bank=dw_2.object.bank[i] cunt=dw_2.object.cunt[i] code=dw_2.object.code[i] faxno=dw_2.object.faxno[i] email=dw_2.object.email[i] address=dw_2.object.address[i] dscrp=dw_2.object.dscrp[i] //插入新记录 ll_sptid = f_sys_scidentity(0,"u_spt","sptid",arg_msg,FALSE,sqlca) IF ll_sptid <= 0 THEN rslt = 0 GOTO ext END IF INSERT INTO u_spt (sptid,sptcode, name, rep, spttype, tele, tele1, bank, cunt, code,faxno,email, address, dscrp) VALUES (:ll_sptid,:sptcode, :sptname, :rep, :spttype, :tele, :tele1, :bank, :cunt, :code,:faxno,:email, :address, :dscrp); IF sqlca.SQLCode <> 0 THEN arg_msg = '插入供应商资料失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF k++ NEXT ext: Close(w_sys_wait_jdt) IF rslt = 0 THEN ROLLBACK ; MessageBox('提示',arg_msg, Information!, OK! ) ELSEIF rslt = 1 THEN COMMIT ; MessageBox('提示','导入定义资料成功,数据共'+string(rowcnt)+'~n成功'+string(k)+'~n重复'+string(l)+' '+repeats+'~n空白行'+string(j), Information!, OK! ) END IF end subroutine public subroutine wf_import_cust ();String cuscode, cusname, rep, custype, tele, tele1, bank, cunt, code, Address String dscrp, faxno, cusareaname, email,areaname long cusareaid Long ll_cusid String freight_tele,arg_msg,repeats,freight,freight_address Long i,cnt,rowcnt,rslt = 1,k,j,l dec givebackrate rowcnt = dw_3.RowCount( ) IF rowcnt = 0 THEN MessageBox('提示','当前没有数据', Information!, OK! ) RETURN END IF if wf_check_cust(arg_msg)=0 then messagebox('',arg_msg) return end if Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(rowcnt) w_sys_wait_jdt.wf_inc(0.5) w_sys_wait_jdt.st_msg.Text = "正在导入数据..." FOR i = 1 TO rowcnt w_sys_wait_jdt.wf_inc(i) cuscode = dw_3.Object.cuscode[i] cusname = dw_3.Object.Name[i] rep = dw_3.Object.rep[i] custype = dw_3.Object.custype[i] tele = dw_3.Object.tele[i] tele1 = dw_3.Object.tele1[i] bank = dw_3.Object.bank[i] cunt = dw_3.Object.cunt[i] code = dw_3.Object.code[i] Address = dw_3.Object.Address[i] dscrp = dw_3.Object.dscrp[i] faxno = dw_3.Object.faxno[i] givebackrate = dw_3.Object.givebackrate[i] cusareaname = dw_3.Object.cusareaname[i] email = dw_3.Object.email[i] freight = dw_3.Object.freight[i] freight_tele = dw_3.Object.freight_tele[i] freight_address= dw_3.Object.freight_address[i] select areaname,cusareaid into :areaname,:cusareaid from u_cusarea where cusareaname=:cusareaname; //插入新记录 ll_cusid = f_sys_scidentity(0,"u_cust","cusid",arg_msg,FALSE,sqlca) IF ll_cusid <= 0 THEN rslt = 0 GOTO ext END IF INSERT INTO u_cust (cusid,cuscode, name, rep, custype, tele, tele1, bank, cunt, code, address, dscrp, faxno, cusareaname, areaname, email,cusareaid,givebackrate,freight,freight_tele,freight_address) VALUES (:ll_cusid,:cuscode, :cusName, :rep, :custype, :tele, :tele1, :bank, :cunt, :code, :Address, :dscrp, :faxno, :cusareaname, :areaname, :email,:cusareaid,:givebackrate,:freight,:freight_tele,:freight_address); IF sqlca.SQLCode <> 0 THEN arg_msg = '插入客户资料失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF k++ NEXT ext: Close(w_sys_wait_jdt) IF rslt = 0 THEN ROLLBACK ; MessageBox('提示',arg_msg, Information!, OK! ) ELSEIF rslt = 1 THEN COMMIT ; MessageBox('提示','导入定义资料成功,数据共'+string(rowcnt)+'~n成功'+string(k)+'~n重复'+string(l)+' '+repeats+'~n空白行'+string(j), Information!, OK! ) END IF end subroutine on w_define.create int iCurrent call super::create this.tab_1=create tab_1 this.cb_1=create cb_1 this.cb_2=create cb_2 this.cb_3=create cb_3 this.cb_4=create cb_4 this.cb_5=create cb_5 this.cb_6=create cb_6 this.cb_help=create cb_help this.ln_bar=create ln_bar this.ln_bar2=create ln_bar2 this.r_bar=create r_bar iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.tab_1 this.Control[iCurrent+2]=this.cb_1 this.Control[iCurrent+3]=this.cb_2 this.Control[iCurrent+4]=this.cb_3 this.Control[iCurrent+5]=this.cb_4 this.Control[iCurrent+6]=this.cb_5 this.Control[iCurrent+7]=this.cb_6 this.Control[iCurrent+8]=this.cb_help this.Control[iCurrent+9]=this.ln_bar this.Control[iCurrent+10]=this.ln_bar2 this.Control[iCurrent+11]=this.r_bar end on on w_define.destroy call super::destroy destroy(this.tab_1) destroy(this.cb_1) destroy(this.cb_2) destroy(this.cb_3) destroy(this.cb_4) destroy(this.cb_5) destroy(this.cb_6) destroy(this.cb_help) destroy(this.ln_bar) destroy(this.ln_bar2) destroy(this.r_bar) end on event open;call super::open;String ls_sql dw_1 = tab_1.tabpage_1.dw_1 dw_2 = tab_1.tabpage_2.dw_2 dw_3 = tab_1.tabpage_3.dw_3 dw_1.SetTransObject(sqlca) dw_2.SetTransObject(sqlca) dw_3.SetTransObject(sqlca) Long i Long row Any la_parm s_define_import_parm s_parm la_parm = Message.PowerObjectParm IF IsValid(la_parm) THEN IF ClassName(la_parm) = 's_define_import_parm' THEN s_parm = la_parm FOR i = 1 To UpperBound(s_parm.cust_arr) row = dw_3.InsertRow(0) dw_3.Object.cuscode[row] = s_parm.cust_arr[i].cuscode dw_3.Object.Name[row] = s_parm.cust_arr[i].Name dw_3.Object.rep[row] = s_parm.cust_arr[i].rep dw_3.Object.custype[row] = s_parm.cust_arr[i].custype dw_3.Object.cusareaname[row] = s_parm.cust_arr[i].cusareaname dw_3.Object.tele[row] = s_parm.cust_arr[i].tele dw_3.Object.tele1[row] = s_parm.cust_arr[i].tele1 dw_3.Object.faxno[row] = s_parm.cust_arr[i].faxno dw_3.Object.bank[row] = s_parm.cust_arr[i].bank dw_3.Object.cunt[row] = s_parm.cust_arr[i].cunt dw_3.Object.Address[row] = s_parm.cust_arr[i].Address dw_3.Object.code[row] = s_parm.cust_arr[i].code dw_3.Object.givebackrate[row] = s_parm.cust_arr[i].givebackrate dw_3.Object.email[row] = s_parm.cust_arr[i].email dw_3.Object.dscrp[row] = s_parm.cust_arr[i].dscrp dw_3.Object.freight[row] = s_parm.cust_arr[i].freight dw_3.Object.freight_tele[row] = s_parm.cust_arr[i].freight_tele NEXT END IF END IF end event event resize;call super::resize;ln_bar.EndX = THIS.Width ln_bar2.EndX = THIS.Width r_bar.Width = THIS.Width Long w_width,w_height w_width = 3600 w_height = 2300 IF newwidth < w_width THEN THIS.Width = w_width IF newheight < w_height THEN THIS.Height = w_height tab_1.Width = THIS.Width - (w_width - 3525) tab_1.Height = THIS.Height - (w_height - 1952) dw_1.Width = THIS.Width - (w_width - 3474) dw_1.Height = THIS.Height - (w_height - 1824) dw_2.Width = THIS.Width - (w_width - 3474) dw_2.Height = THIS.Height - (w_height - 1824) dw_3.Width = THIS.Width - (w_width - 3474) dw_3.Height = THIS.Height - (w_height - 1824) end event type cb_func from w_publ_base`cb_func within w_define boolean visible = false integer x = 2011 integer taborder = 30 end type type cb_exit from w_publ_base`cb_exit within w_define integer x = 1513 integer width = 151 integer height = 164 integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type type tab_1 from tab within w_define integer y = 188 integer width = 3525 integer height = 1952 integer taborder = 20 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long backcolor = 134217739 boolean raggedright = true boolean focusonbuttondown = true integer selectedtab = 1 tabpage_1 tabpage_1 tabpage_2 tabpage_2 tabpage_3 tabpage_3 end type on tab_1.create this.tabpage_1=create tabpage_1 this.tabpage_2=create tabpage_2 this.tabpage_3=create tabpage_3 this.Control[]={this.tabpage_1,& this.tabpage_2,& this.tabpage_3} end on on tab_1.destroy destroy(this.tabpage_1) destroy(this.tabpage_2) destroy(this.tabpage_3) end on type tabpage_1 from userobject within tab_1 integer x = 18 integer y = 112 integer width = 3488 integer height = 1824 long backcolor = 134217739 string text = "物料产品" long tabtextcolor = 33554432 long tabbackcolor = 134217739 string picturename = "CheckDiff!" long picturemaskcolor = 536870912 dw_1 dw_1 end type on tabpage_1.create this.dw_1=create dw_1 this.Control[]={this.dw_1} end on on tabpage_1.destroy destroy(this.dw_1) end on type dw_1 from u_dw_rbtnfilter within tabpage_1 integer width = 3474 integer height = 1824 integer taborder = 20 string dataobject = "dw_define_mtrl" boolean hscrollbar = true boolean vscrollbar = true boolean hsplitscroll = true end type event constructor;call super::constructor;//wf_lock_uc Int LS_INT,uc_column_int Long ls_row uc_column_int = Long(THIS.Describe("DataWindow.Column.Count")) FOR LS_INT = 1 TO uc_column_int THIS.SetTabOrder (LS_INT,LS_INT*10 ) NEXT end event event rowfocuschanged;call super::rowfocuschanged;//IF dw_edit_mode THEN RETURN IF currentrow <= 0 THEN RETURN THIS.SelectRow(0,FALSE) THIS.SelectRow(currentrow,TRUE) datawindowchild dw_child Integer rtncode,mtrlorigin dw_1.AcceptText() if dw_1.getrow()>0 then rtncode = dw_1.GetChild('mtrltype',dw_child) mtrlorigin = dw_1.Object.mtrlorigin[dw_1.getrow()] IF mtrlorigin >= 0 THEN dw_child.SetTransObject(Sqlca) dw_child.SetFilter('mtrlprp='+String(mtrlorigin)) dw_child.Filter() END IF end if end event event dwnkey;If key = KeyEnter! Then // keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab return 1 end if end event event itemchanged;call super::itemchanged;datawindowchild dw_child integer rtncode,mtrlorigin dw_1.accepttext() rtncode=dw_1.getchild('mtrltype',dw_child) mtrlorigin=dw_1.object.mtrlorigin[row] dw_child.settransobject(Sqlca) dw_child.setfilter('mtrlprp='+string(mtrlorigin)) dw_child.filter() end event event clicked;call super::clicked;s_inputbox s_parm string ls_return long ll_row if dwo.Name = 't_mod_mtrlorigin' then // 来源 open(w_mtrlorigin_ch) s_mtrlorigin rls_mtrlorigin rls_mtrlorigin = message.powerobjectparm if rls_mtrlorigin.mtrloriginid = -1 then return for ll_row = 1 to this.rowcount( ) this.object.mtrlorigin[ll_row] = rls_mtrlorigin.mtrloriginid next elseif dwo.Name = 't_mod_mtrltype' then // 类别 open(w_mtrltype_ch) s_mtrltype s_mtrltype_rst s_mtrltype_rst = message.powerobjectparm if s_mtrltype_rst.mtrltypeid <= 0 then return for ll_row = 1 to this.rowcount( ) this.object.mtrltype[ll_row] = s_mtrltype_rst.handtype next elseif dwo.Name = 't_mod_mtrlmode' then // 规格 s_parm.title = '规格' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.mtrlmode[ll_row] = ls_return next elseif dwo.Name = 't_mod_unit' then // 库存单位 s_parm.title = '库存单位' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.unit[ll_row] = ls_return next elseif dwo.Name = 't_mod_mtrlsectype' then // 自定义1 s_parm.title = '自定义1' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.mtrlsectype[ll_row] = ls_return next elseif dwo.Name = 't_mod_zxmtrlmode' then // 自定义2 s_parm.title = '自定义2' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.zxmtrlmode[ll_row] = ls_return next elseif dwo.Name = 't_mod_prdpackcode' then // 包装单位 s_parm.title = '包装单位' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.prdpackcode[ll_row] = ls_return next elseif dwo.Name = 't_mod_packqty' then // 包装件数 s_parm.title = '包装件数' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.packqty[ll_row] = dec(ls_return) next elseif dwo.Name = 't_mod_u_storage_storagename' then // 仓库 s_parm.title = '仓库' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.u_storage_storagename[ll_row] = ls_return next elseif dwo.Name = 't_mod_dscrp' then // 备注 s_parm.title = '备注' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.dscrp[ll_row] = ls_return next end if end event type tabpage_2 from userobject within tab_1 integer x = 18 integer y = 112 integer width = 3488 integer height = 1824 long backcolor = 134217739 string text = "供应商" long tabtextcolor = 33554432 long tabbackcolor = 134217739 string picturename = "Custom081!" long picturemaskcolor = 536870912 dw_2 dw_2 end type on tabpage_2.create this.dw_2=create dw_2 this.Control[]={this.dw_2} end on on tabpage_2.destroy destroy(this.dw_2) end on type dw_2 from u_dw_rbtnfilter within tabpage_2 integer width = 3474 integer height = 1824 integer taborder = 20 string dataobject = "dw_define_spt" boolean hscrollbar = true boolean vscrollbar = true boolean hsplitscroll = true end type event constructor;//wf_lock_uc Int LS_INT,uc_column_int Long ls_row uc_column_int = Long(THIS.Describe("DataWindow.Column.Count")) FOR LS_INT = 1 TO uc_column_int THIS.SetTabOrder (LS_INT,LS_INT*10 ) NEXT end event event dwnkey;If key = KeyEnter! Then // keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab return 1 end if end event event rowfocuschanged;call super::rowfocuschanged;//IF dw_edit_mode THEN RETURN IF currentrow <=0 THEN RETURN this.selectrow(0,false) this.selectrow(currentrow,true) end event event clicked;call super::clicked;s_inputbox s_parm string ls_return long ll_row if dwo.Name = 't_mod_spttype' then // 类别 s_parm.title = '类别' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.spttype[ll_row] = ls_return next elseif dwo.Name = 't_mod_dscrp' then // 备注 s_parm.title = '备注' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.dscrp[ll_row] = ls_return next end if end event type tabpage_3 from userobject within tab_1 integer x = 18 integer y = 112 integer width = 3488 integer height = 1824 long backcolor = 134217739 string text = "客户" long tabtextcolor = 33554432 long tabbackcolor = 134217739 string picturename = "ComputeToday!" long picturemaskcolor = 536870912 dw_3 dw_3 end type on tabpage_3.create this.dw_3=create dw_3 this.Control[]={this.dw_3} end on on tabpage_3.destroy destroy(this.dw_3) end on type dw_3 from u_dw_rbtnfilter within tabpage_3 integer width = 3474 integer height = 1824 integer taborder = 20 string dataobject = "dw_define_cust" boolean hscrollbar = true boolean vscrollbar = true boolean hsplitscroll = true end type event constructor;//wf_lock_uc Int LS_INT,uc_column_int Long ls_row uc_column_int = Long(THIS.Describe("DataWindow.Column.Count")) FOR LS_INT = 1 TO uc_column_int THIS.SetTabOrder (LS_INT,LS_INT*10 ) NEXT end event event dwnkey;If key = KeyEnter! Then // keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab return 1 end if end event event rowfocuschanged;call super::rowfocuschanged;//IF dw_edit_mode THEN RETURN IF currentrow <=0 THEN RETURN this.selectrow(0,false) this.selectrow(currentrow,true) end event event clicked;call super::clicked;s_inputbox s_parm string ls_return long ll_row if dwo.Name = 't_mod_custype' then // 业务员 s_parm.title = '业务员' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.custype[ll_row] = ls_return next elseif dwo.Name = 't_mod_cusareaname' then // 区域 s_parm.title = '区域' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.cusareaname[ll_row] = ls_return next elseif dwo.Name = 't_mod_givebackrate' then // 返利率 s_parm.title = '返利率' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.givebackrate[ll_row] = dec(ls_return) next elseif dwo.Name = 't_mod_dscrp' then // 备注 s_parm.title = '备注' s_parm.old_text = '' openwithparm(w_inputbox, s_parm) ls_return = message.stringparm if trim(ls_return) = '' then return for ll_row = 1 to this.rowcount( ) this.object.dscrp[ll_row] = ls_return next end if end event type cb_1 from uo_imflatbutton within w_define integer width = 265 integer height = 164 integer taborder = 20 boolean bringtotop = true string text = "打开文件" string normalpicname = "open.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;CHOOSE CASE tab_1.SelectedTab CASE 1 wf_openfile(dw_1) CASE 2 wf_openfile(dw_2) CASE 3 wf_openfile(dw_3) END CHOOSE end event type cb_2 from uo_imflatbutton within w_define integer x = 265 integer width = 265 integer height = 164 integer taborder = 10 boolean bringtotop = true string text = "保存文件" string normalpicname = "save.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;CHOOSE CASE tab_1.SelectedTab CASE 1 wf_savefile(dw_1) CASE 2 wf_savefile(dw_2) CASE 3 wf_savefile(dw_3) END CHOOSE end event type cb_3 from uo_imflatbutton within w_define integer x = 530 integer width = 151 integer height = 164 integer taborder = 40 boolean bringtotop = true string text = "增行" string normalpicname = "mx1.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;choose case tab_1.selectedtab case 1 wf_insertrow(dw_1) case 2 wf_insertrow(dw_2) case 3 wf_insertrow(dw_3) end choose end event type cb_4 from uo_imflatbutton within w_define integer x = 681 integer width = 151 integer height = 164 integer taborder = 40 boolean bringtotop = true string text = "删行" string normalpicname = "mx2.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;CHOOSE CASE tab_1.SelectedTab CASE 1 wf_delrow(dw_1) CASE 2 wf_delrow(dw_2) CASE 3 wf_delrow(dw_3) END CHOOSE end event type cb_5 from uo_imflatbutton within w_define integer x = 832 integer width = 265 integer height = 164 integer taborder = 50 boolean bringtotop = true string text = "检查数据" string normalpicname = "update2.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;String arg_msg CHOOSE CASE tab_1.SelectedTab CASE 1 IF wf_check_mtrl(arg_msg) = 0 THEN MessageBox('提示',arg_msg, Information!, OK! ) END IF CASE 2 IF wf_check_spt(arg_msg) = 0 THEN MessageBox('提示',arg_msg, Information!, OK! ) END IF CASE 3 IF wf_check_cust(arg_msg) = 0 THEN MessageBox('提示',arg_msg, Information!, OK! ) END IF END CHOOSE end event type cb_6 from uo_imflatbutton within w_define integer x = 1097 integer width = 265 integer height = 164 integer taborder = 60 boolean bringtotop = true string text = "导入数据" string normalpicname = "update.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;choose case tab_1.selectedtab case 1 wf_import_mtrl() case 2 wf_import_spt() case 3 wf_import_cust() end choose end event type cb_help from uo_imflatbutton within w_define string tag = "帮助[F1]" integer x = 1362 integer width = 151 integer height = 164 integer taborder = 20 boolean bringtotop = true string text = "帮助" string normalpicname = "help.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;PARENT.TriggerEvent('ue_help') end event type ln_bar from line within w_define long linecolor = 268435456 integer linethickness = 4 integer beginy = 172 integer endx = 3323 integer endy = 172 end type type ln_bar2 from line within w_define long linecolor = 16777215 integer linethickness = 4 integer beginy = 176 integer endx = 3323 integer endy = 176 end type type r_bar from rectangle within w_define long linecolor = 16777215 long fillcolor = 1073741824 integer x = 2747 integer width = 73 integer height = 172 end type event constructor;this.fillcolor = 14215660 this.linecolor = 14215660 this.x = -1 this.y = -1 this.height = ln_bar2.beginy - 5 end event