日历

« 2008-09-07  
 123456
78910111213
14151617181920
21222324252627
282930    

最新来客

我的好友

统计信息

  • 访问量: 1288
  • 日志数: 32
  • 建立时间: 2008-03-07
  • 更新时间: 2008-09-01

RSS订阅

青春与成就 是人生的两大财富 / 当你享受青春时 你必须要吃点苦 / 当你失去青春时 成就会成为你的拥有 / 否则 青春之后就一无所有

我的最新日志

  • 测试WebTable中记录与数据库中记录相比较

    2008-9-01

    '打开预检测的WebTable所在页面
    Browser...

    '快速排序:ReArr 是待排序数组, head和tail是该数组的最小下标和最大下标
    Public Function QSort(ByRef ReArr, ByVal head, ByVal tail)

    Dim lef, rig
    Dim pivot

    If head < tail Then
     lef=head
     rig=tail
     pivot=ReArr(lef)
     While (lef <> rig)

      'strcmop(string,string,1)  1:代表按照汉字比较; 默认0:代表按照二进制比较

      While (lef < rig and strcomp(ReArr(rig),pivot,1) > 0)
       rig = rig-1
      Wend
      If lef <rig Then
       ReArr(lef) = ReArr(rig)
       lef = lef+1
      End If

      While (lef < rig and strcomp(ReArr(lef),pivot,1) < 0)
       lef = lef+1
      Wend
      If lef <rig Then
       ReArr(rig) = ReArr(lef)
       rig = rig-1
      End If
     
     Wend

     ReArr(lef) = pivot
     call QSort(ReArr, head, lef-1)
     call QSort(ReArr, lef+1, tail)
     
    End If
    End Function

    '两数组比较
    Public function ArrCmp(arr1,arr2,Rows1,Rows2)
     
        If Rows1 <> Rows2 Then
         Msgbox "WebTable与数据库记录数不一致!"
         exit function
        End If
        For i = 0 to Rows1
      If strcomp(arr1(i),arr2(i),1) <> 0 Then
       msgbox "第" & i & "行记录不一致,请查看!"
       Exit for
       exit function
      End If
        Next
     msgbox "成功!"
    End Function


    '初始化webtable信息,为遍历WebTable所有记录做准备(WebTable格式:第1行:标题,中间:记录,最后1行:页码行)
    Dim tWebTable
    Dim intWTRows
    Dim intWTCols
    Dim intWTPages
    set tWebTable=Browser("...").Page("...").Frame("main").WebTable("grd...")
    intWTRows=tWebTable.GetRoProperty("rows")
    intWTCols=tWebTable.GetRoProperty("cols")
    intWTPages=tWebTable.ChildItemCount(intWTRows,1,"Link") + 1
    Dim arrWT()
    Call TraverseWT(tWebTable,intWTRows,intWTCols,intWTPages)

    '使用getcelldata(i,j)的方法遍历webtable把表格内容存入一个数组中,将每条记录拼成一个字符串,构成一个一维数组
    Public function TraverseWT(WebTable,byref WTRows,WTCols,WTPages)

    Dim intAllRows
    Dim intCurRows
    intAllRows = 0

    For k=1 to WTPages
     If WebTable.Exist Then
      intCurRows = WebTable.GetRoProperty("rows")-2
      intAllRows = intAllRows + intCurRows
      WTRows = intAllRows
     End If
     
     For i=2 to intCurRows+1
      Dim strData1
      strData1=""
      For j=2 to WTCols-2
       ReDim preserve arrWT(intAllRows-1)
       strData1 = strData1 & WebTable.GetCellData(i,j) & "&"
       arrWT(intAllRows - intCurRows + i-2) = strData1
      Next  
     Next
     If k< WTPages Then
      WebTable.ChildItem(intCurRows+2,1,"Link",k-1).click
      set WebTable=Browser("配电网管理系统_2").Page("配电网管理系统").Frame("main").WebTable("grd...")
     End If
    Next

    '调用排序函数
    Call QSort(arrWT,0,intWTRows-3)

    End Function

    '使用数据库连接组件ADODB连接后台数据库,使用数据结果集对象保存select查询结果,将每条记录拼成一个字符串,构成一个一维

    数组
    Dim Cnn
    Dim Rst
    Dim strCnn
    Dim strSql
    strCnn="Provider=OraOLEDB.Oracle.1;Password=fm;Persist Security Info=True;User ID=fm;Data Source=pms04"
    Set Cnn=CreateObject("ADODB.Connection")
    Cnn.Open strCnn
    Set Rst=CreateObject("ADODB.Recordset")

    'sql查询语句
    strSql="SELECT a.f_... || '&' || a.f_.... as f_String FROM vw_... ORDER BY a.f_...,a.f_..."

    Rst.open strSql,Cnn,1,3
    'Rst.movelast   '光标到最后一行
    Dim iRow
    iRow = Rst.recordcount-1
    msgbox (iRow)

    i=1
    Dim arrDB()
    While not Rst.eof
     Dim strData2
     strData2 = Rst("f_String")
     Dim num
     reDim preserve arrDB(iRow)
     arrDB(i-1) = strData2
     i=i+1
     Rst.movenext   '光标到下一行
    Wend
    Dim intDBRows
    intDBRows = i-2

    '调用排序函数
    Call QSort(arrDB,0,intDBRows)

    '调用两数组比较函数
    Call ArrCmp(arrWT,arrDB,intWTRows-1,intDBRows)

  • vbs运算符之"+"、"&"

    2008-9-01

    "+":

    计算两个数之和。

    result = expression1 + expression2

    参数
    result

    任意数值变量。

    expression1

    任意表达式。

    expression2

    任意表达式。

    说明
    虽然也可以使用 + 运算符连接两个字符串,但是您仍应使用 & 运算符进行字符串的连接以避免混淆,提供易理解的代码。

    这是因为在使用 + 运算符时,有可能无法确定是做加法还是做字符串连接。

    表达式的基本子类型决定了 + 运算符所做的操作,如下表所示:

     如果  则
     两个表达式都是数值  相加
     两个表达式都是字符串  连接 
     一个表达式是数值,另一个表达式是字符串  相加

    如果一个表达式或两个表达式都为 Null 表达式,则 result 为 Null。如果两个表达式都为Empty,则 result 为 Integer 子类型。但是如果一个表达式为 Empty,则返回另一个表达式作为 result。

    "&":

    强制两个表达式进行字符串连接。

    result = expression1 & expression2

    参数
    result

    任意变量。

    expression1

    任意表达式。

    expression2

    任意表达式。

    说明
    任一 expression 不是字符串时,它将被转换为 String 子类型。如果两个表达式都为 Null,result 也为 Null。然而,如果仅有一个 expression 为 Null,则它和其他表达式连接时,按零长度字符串("") 处理。任何表达式为 Empty 时也按零长度字符串处理。

    本文来自: 脚本之家(www.jb51.net)

  • byval和byref的区别

    2008-8-29

    1、引用参数(ref)在可以作为引用参数在函数成员调用中传递之前,必须已明确赋值,而输出参数(out)在可以作为输出参数在函数成员调用中传递之前不一定要明确赋值,在该函数成员正常返回前都必须已明确赋值。

    2、在函数内部,引用参数(ref)被视为初始已赋值,输出参数(out)被视为初始未赋值。

    3、默认地,VB中的所有参数都是值传递。只有在参数的修饰符中明确包含out或ref,才是引用传递。但是需要知道的是,当参数的类型是引用类型时,你传递的是一个对象的引用而不是实际的对象。

    二者区别:
    byval 传递数值,实参和形参分处不同的内存单元,互不干扰!
    byref 传递地址,实参和形参占用相同的内存单元,形参变则实参变!
    通俗理解:
    byval 一去不复返
    byref 进去再出来,可能被更新!
    在Javascrīpt中:
    Boolean,Number,String型的参数是按值传递的 ==> 相当于VBS中的ByVal;
    而Object型的参数(包括JS对象,Array对象,Function对象等),是按引用传递 ==> 相当于VBS中的ByRef

     

  • 转:获得汉字字符串拼音首字母

    2008-8-29

    转自:http://dev.csdn.net/article/39/39914.shtm

    '返回给定字符串的首字母

    Function IndexCode(ByVal IndexTxt As String) As String

        Dim i As Integer

        For i = 1 To IndexTxt.Length

            IndexCode = IndexCode & GetOneIndex(Mid(IndexTxt, i, 1))

        Next

    End Function

     

    '得到单个字符的首字母

    Private Function GetOneIndex(ByVal OneIndexTxt As String) As String

        If Asc(OneIndexTxt) >= 0 And Asc(OneIndexTxt) < 256 Then

            GetOneIndex = OneIndexTxt

        Else

            GetOneIndex = GetX(CInt(Format((Asc(OneIndexTxt) + 65536) \ 256 - 160, "00") & Format((Asc(OneIndexTxt) + 65536) Mod 256 - 160, "00")))

        End If

    End Function

     

    '根据区位得到首字母

    Private Function GetX(ByVal GBCode As Integer) As String

        '判断一级汉字

        If GBCode >= 1601 And GBCode < 1637 Then GetX = "A"

        If GBCode >= 1637 And GBCode < 1833 Then GetX = "B"

        If GBCode >= 1833 And GBCode < 2078 Then GetX = "C"

        If GBCode >= 2078 And GBCode < 2274 Then GetX = "D"

        If GBCode >= 2274 And GBCode < 2302 Then GetX = "E"

        If GBCode >= 2302 And GBCode < 2433 Then GetX = "F"

        If GBCode >= 2433 And GBCode < 2594 Then GetX = "G"

        If GBCode >= 2594 And GBCode < 2787 Then GetX = "H"

        If GBCode >= 2787 And GBCode < 3106 Then GetX = "J"

        If GBCode >= 3106 And GBCode < 3212 Then GetX = "K"

        If GBCode >= 3212 And GBCode < 3472 Then GetX = "L"

        If GBCode >= 3472 And GBCode < 3635 Then GetX = "M"

        If GBCode >= 3635 And GBCode < 3722 Then GetX = "N"

        If GBCode >= 3722 And GBCode < 3730 Then GetX = "O"

        If GBCode >= 3730 And GBCode < 3858 Then GetX = "P"

        If GBCode >= 3858 And GBCode < 4027 Then GetX = "Q"

        If GBCode >= 4027 And GBCode < 4086 Then GetX = "R"

        If GBCode >= 4086 And GBCode < 4390 Then GetX = "S"

        If GBCode >= 4390 And GBCode < 4558 Then GetX = "T"

        If GBCode >= 4558 And GBCode < 4684 Then GetX = "W"

        If GBCode >= 4684 And GBCode < 4925 Then GetX = "X"

        If GBCode >= 4925 And GBCode < 5249 Then GetX = "Y"

        If GBCode >= 5249 And GBCode <= 5589 Then GetX = "Z"

     

        '判断二级汉字

        If GBCode >= 5601 And GBCode <= 8794 Then

            Dim CodeData As String

            CodeData = "cjwgnspgcenegypbtwxzdxykygtpjnmjqmbsgzscyjsyyfpggbzgydywjkgaljswkbjqhyjwpdzlsgmrybywwccgznkydgttngjeyekzydcjnmcylqlypyqbqrpzslwbdgkjfyxjwcltbncxjjjjcxdtqsqzycdxxhgckbphffsspybgmxjbbyglbhlssmzmpjhsojnghdzcdklgjhsgqzhxqgkezzwymcscjnyetxadzpmdssmzjjqjyzcjjfwqjbdzbjgdnzcbwhgxhqkmwfbpbqdtjjzkqhylcgxfptyjyyzpsjlfchmqshgmmxsxjpkdcmbbqbefsjwhwwgckpylqbgldlcctnmaeddksjngkcsgxlhzaybdbtsdkdylhgymylcxpycjndqjwxqxfyyfjlejbzrwccqhqcsbzkymgplbmcrqcflnymyqmsqtrbcjthztqfrxchxmcjcjlxqgjmshzkbswxemdlckfsydsglycjjssjnqbjctyhbftdcyjdgwyghqfrxwckqkxebpdjpxjqsrmebwgjlbjslyysmdxlclqkxlhtjrjjmbjhxhwywcbhtrxxglhjhfbmgykldyxzpplggpmtcbbajjzyljtyanjgbjflqgdzyqcaxbkclecjsznslyzhlxlzcghbxzhznytdsbcjkdlzayffydlabbgqszkggldndnyskjshdlxxbcghxyggdjmmzngmmccgwzszxsjbznmlzdthcqydbdllscddnlkjyhjsycjlkohqasdhnhcsgaehdaashtcplcpqybsdmpjlpcjaqlcdhjjasprchngjnlhlyyqyhwzpnccgwwmzffjqqqqxxaclbhkdjxdgmmydjxzllsygxgkjrywzwyclzmcsjzldbndcfcxyhlschycjqppqagmnyxpfrkssbjlyxyjjglnscmhcwwmnzjjlhmhchsyppttxrycsxbyhcsmxjsxnbwgpxxtaybgajcxlypdccwqocwkccsbnhcpdyznbcyytyckskybsqkkytqqxfcwchcwkelcqbsqyjqcclmthsywhmktlkjlychwheqjhtjhppqpqscfymmcmgbmhglgsllysdllljpchmjhwljcyhzjxhdxjlhxrswlwzjcbxmhzqxsdzpmgfcsglsdymjshxpjxomyqknmyblrthbcftpmgyxlchlhlzylxgsssscclsldclepbhshxyyfhbmgdfycnjqwlqhjjcywjztejjdhfblqxtqkwhdchqxagtlxljxmsljhdzkzjecxjcjnmbbjcsfywkbjzghysdcpqyrsljpclpwxsdwejbjcbcnaytmgmbapclyqbclzxcbnmsggfnzjjbzsfqyndxhpcqkzczwalsbccjxpozgwkybsgxfcfcdkhjbstlqfsgdslqwzkxtmhsbgzhjcrglyjbpmljsxlcjqqhzmjczydjwbmjklddpmjegxyhylxhlqyqhkycwcjmyhxnatjhyccxzpcqlbzwwwtwbqcmlbmynjcccxbbsnzzljpljxyztzlgcldcklyrzzgqtgjhhgjljaxfgfjzslcfdqzlclgjdjcsnclljpjqdcclcjxmyzftsxgcgsbrzxjqqcczhgyjdjqqlzxjyldlbcyamcstylbdjbyregklzdzhldszchznwczcllwjqjjjkdgjcolbbzppglghtgzcygezmycnqcycyhbhgxkamtxyxnbskyzzgjzlqjdfcjxdygjqjjpmgwgjjjpkjsbgbmmcjssclpqpdxcdyykypcjddyygywchjrtgcnyqldkljczzgzccjgdyksgpzmdlcphnjafyzdjcnmwescsglbtzcgmsdllyxqsxsbljsbbsgghfjlwpmzjnlyywdqshzxtyywhmcyhywdbxbtlmswyyfsbjcbdxxlhjhfpsxzqhfzmqcztqcxzxrdkdjhnnyzqqfnqdmmgnydxmjgdhcdycbffallztdltfkmxqzdngeqdbdczjdxbzgsqqddjcmbkxffxmkdmcsychzcmljdjynhprsjmkmpcklgdbqtfzswtfgglyplljzhgjjgypzltcsmcnbtjbhfkdhbyzgkpbbymtdlsxsbnpdkleycjnycdykzddhqgsdzsctarlltkzlgecllkjljjaqnbdggghfjtzqjsecshalqfmmgjnlyjbbtmlycxdcjpldlpcqdhsycbzsckbzmsljflhrbjsnbrgjhxpdgdjybzgdlgcsezgxlblgyxtwmabchecmwyjyzlljjshlgndjlslygkdzpzxjyyzlpcxszfgwyydlyhcljscmbjhblyjlycblydpdqysxktbytdkdxjypcnrjmfdjgklccjbctbjddbblblcdqrppxjcglzcshltoljnmdddlngkaqakgjgyhheznmshrphqqjchgmfprxcjgdychghlyrzqlcngjnzsqdkqjymszswlcfqjqxgbggxmdjwlmcrnfkkfsyyljbmqammmycctbshcptxxzzsmphfshmclmldjfyqxsdyjdjjzzhqpdszglssjbckbxyqzjsgpsxjzqznqtbdkwxjkhhgflbcsmdldgdzdblzkycqnncsybzbfglzzxswmsccmqnjqsbdqsjtxxmbldxcclzshzcxrqjgjylxzfjphymzqqydfqjjlcznzjcdgzygcdxmzysctlkphtxhtlbjxjlxscdqccbbqjfqzfsltjbtkqbsxjjljchczdbzjdczjccprnlqcgpfczlclcxzdmxmphgsgzgszzqjxlwtjpfsyaslcjbtckwcwmytcsjjljcqlwzmalbxyfbpnlschtgjwejjxxglljstgshjqlzfkcgnndszfdeqfhbsaqdgylbxmmygszldydjmjjrgbjgkgdhgkblgkbdmbylxwcxyttybkmrjjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhz"

            GetX = Mid(CodeData, (Microsoft.VisualBasic.Left(CStr(GBCode), 2) - 56) * 94 + (Microsoft.VisualBasic.Right(CStr(GBCode), 2)), 1)

        End If

    End Function

  • 转:汉字排序

    2008-8-29

    转自:http://topic.csdn.net/t/20050903/11/4247360.html

    Function   HZSort(ByVal   txt_DOC   As   String)   As   String  
       
          Dim   m,   n     As   Integer  
          Dim   l           As   Integer  
          Dim   HanZi()       As   String   *   1  
          Dim   tmp_Han       As   String  
          'Dim   txt_DOC       As   String  
           
          'txt_DOC   =   txtHzList.Text  
          l   =   Len(txt_DOC)  
          ReDim   HanZi(l   -   1)   
            
          '剔除非汉字   
          For   m   =   1   To   l  
              tmp_Han   =   Mid(txt_DOC,   m,   1)  
              If   Asc(tmp_Han)   <   0   Then  
                    HanZi(n)   =   tmp_Han  
                    n   =   n   +   1  
              End   If  
          Next   m  
          l   =   n   -   1   
            
          '排序汉字   
          ReDim   Preserve   HanZi(l)  
          For   m   =   0   To   (l   -   1)  
              For   n   =   (l   -   1)   To   m   Step   -1  
                  If   Asc(HanZi(n))   >   Asc(HanZi(n   +   1))   Then  
                        tmp_Han   =   HanZi(n)  
                        HanZi(n)   =   HanZi(n   +   1)  
                        HanZi(n   +   1)   =   tmp_Han  
                  End   If  
              Next   n  
          Next   m   
            
          '剔除重复字   
          n   =   0  
          For   m   =   1   To   l  
                  If   Asc(HanZi(m))   >   Asc(HanZi(m   -   1))   Then  
                        n   =   n   +   1  
                        HanZi(n)   =   HanZi(m)  
                  End   If  
          Next   m  
           
          HZSort   =   ""  
          For   m   =   0   To   n  
                  HZSort   =   HZSort   &   HanZi(m)  
          Next   m  
       
      End   Function  

  • 记录集对象Open

    2008-8-28

    1、记录集对象Open的语法为:

    recordset.Open SQL语句,数据库连接对象,游标类型,锁定类型,配置源

    其中前两个参数为必填项,其他的选填。


    游标常量 对应常数值 游标说明
    -------------------------------------------------------------
    adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标,也是速度最快的游标。

    adOpenKeyset 1 启动一个关键集类型的游标。
    adOpenDynamic 2 启动一个动态游标。
    adOpenStatic 3 启动一个静态游标。
    -------------------------------------------------------------


    锁定常量 对应常数值 锁定说明
    --------------------------------------------------------------
    adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法
    adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。
    adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。
    adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增删改操作。
    -------------------------------------------------------------


    毫无疑问,使用默认值效率是最高的,(recordset.Open sql,conn,0,1)

    如果需要统计返回记录数以及分页操作的话,就至少必需启动一个集合类型的游标(recordset.Open sql,conn,1,1)
    如果需要进行增删改操作的话,可以参考锁定说明,一般是使用常数3的类型(recordset.Open sql,conn,3,3)

    另:
    set rs=conn.execute(sql)
    相当于
    rs.open sql,conn,0,1

    --这两个有没有区别,有待进一步研究。

     

    2、record.recordcount

     

    1)统计结果集行数时,格式需要:

    recordset.Open SQL语句,数据库连接对象,1,3

    否则record.recordcount=-1

    --为什么是“1,3”,看上面的语法说明,还不怎么理解,待研究

    2)如果表中不存在主键,也有可能出现值为-1的问题。

     

    如果这方面的高手看到,希望能对我的两个疑问给予解答,谢谢大家。

     

  • 转:VBS的快速排序

    2008-7-08

    转自:http://www.51testing.com/?141956/action_viewspace_itemid_84696.html

    下面是VBS的快速排序代码,适合数字和字符串数组:

    Public Function QSort(ByRef ReArr, ByVal head,ByVall tail)
    ReArr是待排序数组,head和tail是该数组的最小下标和最大下标
    Dim lef,rig
    Dim pivot

    If head<tail,Then
    lef=head
    rig=tail
    pivot=ReArr(lef)
    While (lef<>rig)

    While (lef<rig and ReArr(rig)>=pivot)
    rig=rig-1
    Wend
    If lef<rig Then
    ReArr(lef)=ReArr(rig)
    lef=lef+1
    End If


    While (lef<rig and ReArr(lef)<=pivot)
     lef=lef+1
    Wend

    If lef<rig Then
    ReArr(rig)=ReArr(lef)
     rig=rig-1
    End If
    Wend

    ReArr(lef)=pivot
    call QSort(ReArr,head,lef-1)
    call QSort(ReArr,lef+1,tail)

    End If
    End Function

  • 转:VBScript字符串函数介绍

    2008-7-08

    转自:http://xz7.2000y.net/mb/2/ReadNews.asp?NewsID=466508

    1. Split(expression, delimiter, count, compare)
    返回基于 0 的一维数组,其中包含指定数目的子字符串。
    expression:必选。字符串表达式,包含子字符串和分隔符。如果 expression 为零长度字符串,Split 返回空数组,即不包含元素和数据的数组。
    delimiter:可选。用于标识子字符串界限的字符。如果省略,使用空格 (" ") 作为分隔符。如果 delimiter 为零长度字符串,则返回包含整个 expression 字符串的单元素数组。
    count:可选。被返回的子字符串数目,-1 指示返回所有子字符串。
    compare:可选。compare 参数可以有以下值:0 执行二进制比较;1 执行文本比较;2 执行基于数据库(在此数据库中执行比较)中包含的信息的比较。

    2. Replace(expression, find, replacewith, compare, count, start)
    返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。
    expression:必选。字符串表达式,包含要替换的子字符串。
    find:必选。被搜索的子字符串。
    replacewith:必选。用于替换的子字符串。
    start:可选。expression 中开始搜索子字符串的位置。如果省略,默认值为 1。
    count:可选。执行子字符串替换的数目。如果省略,默认值为 -1,表示进行所有可能的替换。
    compare:可选。参数值同上。

    3. Mid(string, start, length)
    从字符串中返回指定数目的字符。
    string:字符串表达式,从中返回字符。如果 string 包含 Null,则返回 Null。
    start:string 中被提取的字符部分的开始位置。如果 start 超过了 string 中字符的数目,Mid 将返回零长度字符串 ("")。
    length:要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到字符串结束的所有字符。

    4. LTrim(string), RTrim(string), Trim(string)
    返回不带前导空格 (LTrim)、后续空格 (RTrim) 或前导与后续空格 (Trim) 的字符串副本。
    string:参数是任意有效的字符串表达式。如果 string 参数中包含 Null,则返回 Null。

    5. InStr(start, string1, string2, compare)
    (InstrRev(start, string1, string2, compare))
    返回某字符串在另一字符串中从头部出现的位置
    (返回某字符串在另一字符串中从结尾出现的位置)。
    start:可选。数值表达式,用于设置每次搜索的开始位置。如果省略,将从第一个字符的位置开始搜索。如果 start 包含 Null,则会出现错误。如果已指定 compare,则必须要有 start 参数。
    string1:必选。接受搜索的字符串表达式。
    string2:必选。要搜索的字符串表达式。
    compare:可选。参数值同上。

    6. String(number, character)
    返回具有指定长度的、重复字符组成的字符串。
    number:返回字符串的长度。如果 number 参数包含 Null,则返回 Null。
    character:指定字符或字符串表达式的字符代码,其中字符串表达式的第一个字符用于组成返回的字符串。如果 character 参数包含 Null,则返回 Null。

    7. Space(number)
    返回由指定数目的空格组成的字符串。
    number:参数为字符串中用户所需的空格数。

    8. Left(string, length), Right(string, length)
    返回指定数目的从字符串的左边(右边)算起的字符。
    string:字符串表达式,其最左边(右边)的字符被返回。如果 string 参数中包含 Null,则返回 Null。
    length:数值表达式,指明要返回的字符数目。如果是 0,返回零长度字符串 ("");如果大于或等于 string 参数中的字符总数,则返回整个字符串。

    9. Len(string | varname)
    返回字符串内字符的数目,或是存储一变量所需的字节数。
    string:任意有效的字符串表达式。如果 string 参数包含 Null,则返回 Null。
    varname:任意有效的变量名。如果 varname 参数包含 Null,则返回 Null。

    10. Asc(string)
    返回与字符串的第一个字母对应的 ANSI 字符代码。
    string:参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。

    11. Chr(charcode)
    返回与指定的 ANSI 字符代码相对应的字符。
    charcode:参数是可以标识字符的数字。从 0 到 31 的数字表示标准的不可打印的 ASCII 代码。例如,Chr(10) 返回换行符。

    12. LCase(string), UCase(string)
    返回字符串的小写(大写)形式,所有大写(小写)字母和非字母字符保持不变。
    string:参数是任意有效的字符串表达式。如果 string 参数中包含 Null,则返回 Null。

    13. Join(list, delimiter)
    返回一个字符串,此字符串由包含在数组中的许多子字符串联接创建。
    list:必选。包含要联接的子字符串一维数组。
    delimiter:可选。在返回字符串中用于分隔子字符串的字符。如果省略,将使用空字符 ("")。 如果 delimiter 是零长度字符串,则在同一列表中列出全部项,没有分界符。

    14. StrComp(string1, string2, compare)
    返回指示字符串比较结果的值。StrComp 函数有以下返回值:-1, 0, 1, Null。
    string1, string2:必选。任意有效的字符串表达式。
    compare:可选。参数值同上。

    15. StrReverse(string)
    返回字符串,此字符串与指定字符串顺序相反。
    string:参数是要进行字符反向的字符串。如果 string 是零长度字符串 (""),则返回零长度字符串。如果 string1 为 Null,则会出现错误。

    二、VBscrīpt其他函数介绍

    1. Option Explicit
    用于 scrīpt 级强制要求显式声明该 scrīpt 中的所有变量。如果使用 Option Explicit,该语句必须出现在 scrīpt 的任何过程之前。使用 Option Explicit 语句时,必须使用 Dim、Private、Public 或 ReDim 语句显式声明所有变量。如果试图使用未经声明的变量名,则会出现错误。

    2. UBound(arrayname, dimension)(LBound(arrayname, dimension))
    返回指定数组维数的最大可用下标。(返回指定数组维的最小可用下标)。
    arrayname:数组变量名,遵循标准变量命名约定。
    dimension:指明要返回哪一维下界的整数。使用 1 表示第一维,2 表示第二维,以此类推。如果省略 dimension 参数,默认值为 1。
    UBound 函数与 LBound 函数一起使用,用于确定数组的大小。使用 LBound 函数可以确定数组某一维的下界。所有维的默认下界均为 0。

    3. IsArray, IsDate, IsEmpty, IsNull, IsNumeric, IsObject
    判断是否数组,日期,Empty,Null,数值或对象。

    4. CBool, CByte, CCur, CDate, CDbl, CInt, CLng, CSng, CStr
    变量类型转换函数,分别转化为Boolean, Byte, Currency, Date, Double, Integer, Long, Single, String类型。

    5. On Error Resume Next
    启动错误处理程序。若不使用 On Error Resume Next 语句,发生的任何运行时错误都将是致命的,即显示错误信息并终止运行。On Error Resume Next 会使程序从紧随产生错误的语句之后的语句继续执行,或是从紧随最近一次调用过程(该过程含有 On Error Resume Next 语句)的语句继续运行。这个语句可以不顾运行时错误,继续执行程序,之后您可以在过程内部建立错误处理例程。在调用另一个过程时,On Error Resume Next 语句变为非活动的。所以,如果希望在例程中进行内部错误处理,则应在每一个调用的例程中执行 On Error Resume Next 语句。

    6. Err.{property | method}
    Err.Number为出错的个数。Err.Raise可以在代码中生成运行时的错误。Err.Clear可用于重新设置Err。

    7. RGB(red, green, blue)
    返回代表 RGB 颜色值的整数。
    red:必选。0 到 255 间的整数,代表颜色中的红色成分。
    green:必选。0 到 255 间的整数,代表颜色中的绿色成分。
    blue:必选。0 到 255 间的整数,代表颜色中的蓝色成分。

    8. 函数
    [Public | Private] Function name [(arglist)]
    [statements]
    [name = expression]
    [Exit Function]
    [statements]
    [name = expression]
    End Function

    声明 Function 过程的名称、参数以及构成其主体的代码。

    Public:表示 Function 过程可被所有 scrīpt 中的所有其他过程访问。
    Private:表示 Function 过程只可被声明它的 scrīpt 中的其他过程访问。
    name:Function 的名称,遵循标准的变量命名约定。
    arglis:代表调用时要传递给 Function 过程的参数的变量列表。用逗号隔开多个变量。
    statements:在 Function 过程的主体中执行的任意语句组。
    expression:Function 的返回值。

    9. 过程
    [Public | Private] Sub name [(arglist)]
    [statements]
    [Exit Sub]
    [statements]
    End Sub

    声明 Sub 过程的名称、参数以及构成其主体的代码。

    10. Set ōbjectvar = {objectexpression | Nothing}
    将对象引用赋给变量或属性。
    objectvar:变量或属性的名称,遵循标准变量命名约定。
    objectexpression:由对象名称、另一个已声明为相同对象类型的变量或返回相同对象类型的对象的函数或方法组成的表达式。
    Nothing:停止 objectvar 与任何指定对象的关联。当没有其他变量引用 objectvar 原来所引用的对象时,如将其赋为 Nothing 会释放与该对象所关联的所有系统和内存资源。

    11. Rem comment 或 ' comment
    用于包含程序中的解释性注释。comment 参数是需要包含的注释文本。在 Rem 关键字和 comment 之间应有一个空格。

    12. DateSerial(year, month, day)
    对于指定的年、月、日,返回 Date 子类型的 Variant。

    13. TimeSerial(hour, minute, second)
    返回一个 Date 子类型的 Variant,含有指定时、分、秒的时间。

    14. Date, Time, Now
    系统的日期,时间。

    15. Year, Month, Day, Hour, Minute, Second
    把日期或时间拆分开为年、月、日、小时、分钟、秒。

    16. DateDiff(interval, date1, date2)
    interval:必选。字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔。
    date1, date2:必选。日期表达式。用于计算的两个日期。
    interval 参数可以有以下值:
    yyyy 年
    q 季度
    m 月
    y 一年的日数
    d 日
    w 一周的日数
    ww 周
    h 小时
    m 分钟
    s 秒

    17. Rnd(number)
    number 参数可以是任意有效的数值表达式。Rnd 函数返回一个小于 1 但大于或等于 0 的随机数。要产生指定范围的随机整数,请使用以下公式:
    Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
    这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界。

    18. TypeName(varname)
    返回一个字符串,提供有关变量的 Variant 子类型信息。
    TypeName 函数返回值如下:
    Byte 字节值
    Integer 整型值
    Long 长整型值
    Single 单精度浮点值
    Double 双精度浮点值
    Currency 货币值
    Decimal 十进制值
    Date 日期或时间值
    String 字符串值
    Boolean Boolean 值;True 或 False
    Empty 未初始化
    Null 无有效数据
    <object type> 实际对象类型名
    Object 一般对象
    Unknown 未知对象类型
    Nothing 还未引用对象实例的对象变量
    Error 错误

  • 给WEB页面属性为只读的文本框赋值

    2008-7-08

    webedit("   ").object.value="要设置的值“ 为其赋值
  • 转:你的加薪手册(上)——攻薪指南

    2008-7-08

    转自:http://arts.51job.com/arts/26/339326.html陈湘鹏

    这是一个特别行动,是公开而隐秘地发生在你日常生活中的战斗。

        首先,需要把已经习惯的一切重新审视一下:小隔断就是你的碉堡,办公桌椅是你的阵地,在办公大厅里窃窃私语的人既有盟军、也有敌军(敌军已经向“钱线”进发了)。时间有限。你需要一份地图,一份战术计划,然后拿出勇气为生活而战!你是这个时代的武士,当胜利属于他人的时候,那失败就是你的。你需要在20周内完成这个任务!JUST DO IT。

        营地:你在职已经两年半,掌握基本的专业技能,能跟上队伍。但你知道自己还有潜力没能发挥,不知道下一步怎么走。你渴望有人指导,在接下来的征途中摆脱平庸,脱颖而出。

        战斗力:你正直、聪明、渴望进步,你正在度过成熟前最蔫的那段时间,你不够有经验、社会资源匮乏、专业上止步不前,而且时常缺乏自信,觉得自己有点土,没有上层的朋友,总感到游离在公司圈子之外。

        压力:你笑不出来,缺钱是种鲜明的痛苦,你想多给父母寄些钱,想让女朋友踏实开心,想把自己打扮得入时些。最大的挣扎还在于,由于你是一个年轻男人(或女人),想争得自己尊严和荣誉。眼看同学们都渐露锋芒,拥有了你所没有的东西。你亟需展示一下自己的能力,于是为自己定下了特别目标——

        目标:20周内把晋职加薪的可能提高85个百分点,拿下部门副经理一职。

        搞清楚,这不是梦,不是好莱坞电影剧本,这是一个行动计划。和世界上所有伟大的计划一样,如果它制定得到位,就会像诺曼底一样决定谁最后站着,谁最后趴下。

        STEP 1
        时间表:第一天
        指令:我要加薪


        游戏从今天开始,你不会遇到神仙,也不会遇到贵人,要想完成任务,你需要真正的竞赛状态,以后所有事件能否完成,完成质量如何,取决于你的意识和意志。这虽然是个短期的行动,但其中包含了长期乃至恒久的智慧,你对此有多认真,成果就有多真实。

        投入状态,咬紧目标。为了把它当作一场真正的战役,你需要把自己的目标和时间表完整清晰地写下来,冠以“我要加薪!”四个大字,贴在你每天能看到的地方。

        ——进入竞赛状态,战斗力增加3个百分点

        STEP 2
        时间表:第一天开始到游戏结束
        指令:多做


        时间有限,你最好的策略是,一开始就在目前的岗位上采取“多做”策略。
    你尽可能要多做1.5倍的工作量,或者多出成果,或者多花时间,或者多做配合,或者提高水平和质量。这是从边缘人通往核心圈的重要路线。一是为了赢得上司好感和信任,二是获得锻炼机会,三是获得更多信息。对获取的信息,却不要急于判断,等待、观察,把心得记录在自己的笔记本上。

        主动是一种极珍贵的素养,它能使人变得更加敏捷,更有高度。“每天多做一点”的工作态度能使你脱颖而出,老板、经理和顾客会给你更多的机会。

        ——通过“多做”策略,战斗力增加8个百分点。

        STEP 3
        时间表:第七天
        指令:提升装备


        制造一个大家都看得到的变化:你需要提升自己的职业形象。

        按照行业风格把自己装扮成典型的职业人。在演出开始前,你得从表面做起,这种形式感有助于把别人和你自己导入正在发生的变化中。不要轻视它,形式感是非常必要的,它能帮你克服窘境、提高信心、争取信任、获得优势。你可以通过关于职业着装、商务礼仪的书籍获取帮助,或者向有经验的行业人士学习穿着。一次性投资4000元,就可轻松拿到宝物。对,这像是在“魔兽”世界。

        ——通过职业化形象提升,战斗力增加5个百分点。

        STEP 4
        时间表:第二周
        指令:战术计划之路线


        你要进行作战部署了——确定主路线、专业化建设、战斗力升级。

        确定主路线:在公司内部,存在着不同的岗位,其价值并非一样,你要尽可能到主战场作战。最能提供价值的业务部门才拥有最多资源和最多升迁机会,容易随着公司发展而发展。如果你并非在这样的部门,就需要做一种妥协和迂回,在部门里做价值最大的事,或者为业务部门提供更优质的服务是你的进攻路线。看看这条线上,你需要何种能力?你就知道接下来该怎么行动了。画出这条主线的阶梯型图和主线上所需要的能力。

        行动:观察公司业务核心,进行分析。和业务骨干套瓷,获取情报:哪些部门最重要,哪些能力最重要,明星员工是怎么发展的。

        STEP 5
        时间表:第二周
        指令:战术计划之专业


        专业化建设:如果专业水平止步不前,你必须了解其原因,它所指的不一定是专业的深化,而是指实用性。比如营销的专业深度和MARKING的实际效果并不一致。在现实中能组合应用起来的能力才是真正的专业能力,尤其它不是僵化的,它可能是思考能力、表达能力、亲和力、创造力。这些能力有些来自意识的刹那领悟,有些是实践的升华,有些是累积的质变。利用大量时间进行相关实践、阅读、学习是最佳途径。设置一个特别学习笔记本,把学习和实践记下来并课以分析。

        行动:根据实际需要,寻找一个或几个学习的榜样,分析他们的发展路径,与业内资深人士交流。购买你欲发展的专业书籍和培训资料,尽快提升专业效能和专业高度

        STEP 6
        时间表:第二周
        指令:战术计划之战斗力


        战斗力升级:

        组合竞争力——单一的竞争力往往难以凸显优势,而一种能力和另一种能力的组合,使你的能力具有独特性、复合性、增值性。你需要一些组合竞争力。细心观察,有很多价值空白处等待开发。

        行业意识——没有行业观是常常出现的职业发展大忌,很多人开始做得不错,但逐渐就走入迷宫失去了方向感。建立行业的意识,会让你有洞察力和远见。对行业惯例、发展趋势、价值链条、运营层面的了解会让你意识到你的价值空间。在如今这种分工很细的空间里你的特长在哪里?你将在哪种价值上深入发掘?你的目标是要成为某个环节的专家,你的收入才能跟一般人不一样。

        在特别行动笔记本上添加自己的战斗力框架,根据行业发展的趋势,来挖掘自己的能力空间;为提升核心能力给自己设定一些学习目标,并安排培训、阅读的具体计划。

        行动:自学某种技能;为自己选择一些专业或行业报刊、网站,大量阅读;参加必要的技能培训。

        ——上述三个战术计划的制定,一共增加9个百分点

        STEP 7
        时间表:第三周
        指令:像高手一样思考


        有些人经常做错事,有些人经常做对事,区别是,后者经常站在正确的角度上思考。所谓正确的角度往往并非本人的角度,而是他人或全局的角度。因此聪明人就要学会换一种观念,经常站在领导旁边的角度上看问题,替领导着想、起到辅佐、协助作用,能够迅速赢得领导的青睐。“董事会关注产业,总裁关注行业,总经理关注企业,员工关注职业。”想想你的上司在想什么,然后看看自己可以怎样提供协助。

        ——换位思考,切入管理者视野,积极成为领导的得力助手。战斗力增加5个百分点。

        STEP 8
        时间表:第四周
        指令:联合战线


        一个人不可能独自成功。成功在于你在和正确的人交往。你的战略组圈子里所包含的重要的人物分别是,上级、同事、客户、同行。

        公司内有些要员你是需要加倍留意的,并要尽可能与他们结为盟友,因为他们对你的事业发展往往起到非常关键的作用。先来认定谁是目标人物:人力资源部总管、部门的主管、助理和秘书、公司内的“明星”、名人、公关、传讯经理、员工培训主管、高级管理层。

        要与以上的重要人物建立良好关系,你可以从小事帮忙开始,例如在秘书忙得透不过气时帮她接一个电话,于内部training时替员工训练主管移动桌椅、帮忙人力资源部主管寻找合适的headcount等。当信心建立后,他们便会乐意与你交往。善用人际关系,是步向成功的不二法门。

        ——一个团体带来更多机会,增加8个百分点

        STEP 9
        时间表:第五周
        指令:躲避陷阱 选择高路


        在征途中,你必须谨慎地避开如下陷阱:

        不要认为正确性是唯一的评判指标

        不要越过上级

        不要接近小人

        不要过度表现

        不要恃强凌弱

        不可公私不分

        不可理所当然、不知感谢

        不可制造是非纷争

        不要做天生的“反对派”

        与人打交道时,有3条路可走,要想高人一筹,你得选择最难的那条高路:

        低路——我们对待别人,比他们待我们更坏。

        中路——别人怎样对待我们,我们就怎样待他们。

        高路——我们对待别人,比他们待我们更好。

        高路会带来积极的关系,吸引别人走近我们——即便是在冲突当中。

        若你想提高自己,就用行动来向人们展示你是一个能够原谅和忘记的人。这会为你赢得尊敬。

        ——增加6个百分点

        STEP 10
        时间表:第七周
        指令:挑战压力


        现在,放马出山吧。

        接受或提出一项部门内的任务,提高原有目标,勇于向“不可能完成”的工作挑战!

        你必须马上做一件让自己头皮发麻的具有高难度的任务,来检验上述准备工作,并实现升级。

        “心有多大,舞台就有多大。”不敢向高难度的工作挑战,是对自己的潜能画地为牢,最终使自己的潜能被压制殆尽。大胆提出自己的建议和执行策略,直面困难,努力拓展。或者打开大客户市场获得很好销量,或者做出政府公关计划,或者积极处理危机。这会让你的公司地位获得新的飞跃。

        ——增加9个百分点

        STEP 11
        时间表:第十一周
        指令:抓住青蛙眼


        一个小小的科学常识:青蛙只能看到运动中的物体。而老板和他们差不多。所以,无论如何,你需要唤醒他。

        如果你老是躲在高高的隔断板后面忙碌,尽管你把报告写得尽善尽美,也无法使得老板对你的工作有所了解。和老板保持沟通至关重要,让他知道你在做什么,你的想法和方案,并且提出建议。在工作中,也可以适当询问老板的意见,让他不知不觉参与到你的工作中来。

        如果缺少这样的机会,你就要做一番工作了。了解了老板的奋斗经历,弄清老板毕业的学校,人际风格,关心的问题,精心设计几句简短却有分量的开场白,在算好的时间去乘电梯,跟老板打过几次招呼后,创造机会跟老板长谈一次。

        必要时,让老板知道你在关注晋升:一方面,如果你不这样做,会失去晋升机会。当职位出现空缺时,老板会任命别人根本不考虑你。另一方面,老板可以告诉你需要什么技能才有希望获取这个职位。他可以帮助你获取这些技能。可以为你提供更多的体验,可以增加你的责任。

        无需躲闪。譬如,你就直接说你想谈论一下你将来的打算,请领导给你一些建议。

        ——增加7个百分点

        STEP 12
        时间表:第十二周
        指令:搭船


        你为领导保驾护航,做得比他期待的还要好,你的目标就越有保障。

        你和你的上司乘的是“一条船”。你们要想成功就得同舟共济。你该先问问自己下面这些问题:

        你是否在帮助上司达到目标?

        你对上司寄予你的期望是否了然于胸?

        你是否竭尽全力地使我的上司和部门都显得很出色?

        这种关系并非仅是顺服,实际上你要学习如何管理你的上级。《孙子兵法》曰:上下同欲者胜。这是管理好上级的基础。只要你能将自己的利益与上级的利益以及单位的利益找到共同点,就不愁没有自己的发展空间。而管理上级的关键是,用足上级的长处。德鲁克倡导的这一点,在管理上级时尤其适用。

        ——增加10个百分点

        STEP 13
        时间表:第十三周
        指令:脱颖而出


        不要害怕在必要的时候做领导者。比如一个好员工退休了,组织一个告别派对;有同事被提升,开个祝贺会,自告奋勇,别人马上会喜欢上你。

        若你是位领导者或创新思想家,你就会长期走在众人前头,这让你有时成为攻击的目标,这样做需要勇气。领导者常遭误解,其动机被扭曲,其行动被批评。这,也可以是一种考验——只要用勇气撑住,就能让我们经受更强大的考验。

        采取重大冒险取得成功者从来不等待众人。他自己奋力去干。这需要胆量,也需要勇气。人人都会失败,但公众欣赏足够自信敢碰运气的人。

        ——狭路相逢勇者胜,增加7个百分点

        STEP 14
        时间表:第十五周
        指令:吃三亏


        获得法则里最正确的一条是,吃亏。

        吃亏是投资你的未来,锻炼你的胸襟,积累你的高度。无论聪明人和笨人,往往是吃了亏才变得智慧的。在职场上,你需要吃三种亏:一为长远:如为保持自己的品牌、名望,长远利益就得毫不犹豫地做出一些牺牲。二为管理:对员工,对客户,对朋友,对他人,有时为了企业的生存和发展就得吃点亏,这是个管理方法和手段。三为义理:遇到十分紧急的情况又难于处理时,就要敢于吃亏,如遇到生命或健康,企业生死存亡,大事关联道德法律,就得先吃了亏,再来计议。

        ——吃亏是福,增加8个百分点

        STEP 15
        时间表:第二十周
        指令:我是传奇


        你已经积累了“90分”的战斗力,相信我,你马上就可以升职加薪了。如果没有,你也许要耐心等一下,有时候火热的情人也会错过约会的口信。但我们无法控制公司犯错误,如果那是你公司的错,你不应该放弃。对,你做得很好,相当正确,即使命运不公也保持住它,即使遭受委屈也保持住它,这是你的财产,比任何人能给你的更多。

        我们每个人都是CEO,任职的公司叫做“me”,职业生涯中最大的任务,是把公司唯一的品牌“you”,打造成职场的领先品牌。当你已经建立了一个真正的个人品牌后,就像一个经营产品或是经营某个企业一样。可以书写自我的传奇。

        ——战斗力总值:85点;级别:从士兵到中校。

Open Toolbar