SC兼容函数
(创建时间:2010年11月05日 22:44:00)
Jangogo : 

我们已经在 SC 里面内置了一些常用函数,您可以自己调用
注意:这些常量名称都以“下划线”结尾的

1. GetOneVL_(s,n) 

     功能:在当前数据库里面取一个值.   
     参数 s 是 sql语句 n 是bool类型的,意思是是否把结果转换成数字,   
     如果n=true, sql 执行的结果如果是字符串就转换为数字,如果是空串或者转换失败就返回0

    例子:s=GetOneVL_("select top 1 id from mytable",true)

2. GetCN_()
     功能:获得一个ADODB数据库连接对象
     函数原型等价于VB的:    

 
  1. function GetCN_()   
  2.     set GetCN_=createobject("adodb.connection")   
  3. end function  

3.GetRS_()
    功能:获得一个ADODB的recordset对象
    函数原型等价于VB的:

 
  1. function GetRS_()   
  2.    set GetRS_=createobject("adodb.recordset")   
  3. end Function  
4.Close_(o)
    功能:关闭并销毁对象o
    函数原型等价于VB的:
 
  1. function Close_(o)   
  2.     on error resume next   
  3.     o.close()   
  4.     set o=nothing   
  5. end Function  
5.ExecSQL_(s)
    功能:在当前数据库执行sql语句s
    返回执行是否有错误的错误信息的XML格式的字符串
    函数原型等价于VB的:
   
 
  1. function ExecSQL_(s)   
  2.    dim cn   
  3.    on error resume next   
  4.    set cn=GetCN_()   
  5.    cn.open CNStr_   
  6.    cn.Execute s   '核心功能   
  7.    ExecSQL_=ErrXML_(Err)   
  8.    Close_ cn   
  9. end Function  
6.ErrXML_(o)
   功能:以XML格式字符串方式返回错误对象o的信息
  参数o为Err对象
  函数原型等价于VB的:
 
  1. function ErrXML_(o)   
  2.    ErrXML_="" & o.Number & " & o.Description & "]]>"  
  3. end Function  
7.XML_(x)
   功能:把字符串x添加父节点和XML文档定义头,输出为完整的XML格式化文档字符串。
   参数x为字符串,要求符合XML格式
   函数原型等价于VB的:
 
  1. Function XML_(x)   
  2.   XML_=""1.0"" encoding=""" & E_ & """ ?>" & x & ""  
  3. End Function  

8.GetSettingS_(s)
    功能:取得mysetting表里面VName字段等于s的对应记录的shortSetting字段的值
    参数s为字符串
    函数原型等价于VB的:

 
  1. Function GetSettingS_(s)   
  2.     GetSettingS_=GetOneVL_("select ShortSetting from mysetting where VName='" & s & "'",0)   
  3. End Function  

9.GetSettingL_(s)
    功能:取得mysetting表里面VName字段等于s的对应记录的LongSetting字段的值
    参数s为字符串
    函数原型等价于VB的:
 
  1. Function GetSettingS_(s)   
  2.     GetSettingS_=GetOneVL_("select LongSetting from mysetting where VName='" & s & "'",0)   
  3. End Function  

10.GetAC_(s)
      功能:根据科目代码s获得一个科目的全部属性信息
      参数s为字符串,科目代码
      函数返回的格式如下: 
 
          
 
  1. <root>  
  2.   <title>科目完整名称如 银行存款?建设银行</title>  
  3.   <acstru>42222222(科目级别长度的结构)</acstru>  
  4.   <ac>  
  5.       <acid>科目代码</acid>  
  6.       <actitle>科目名称</actitle>  
  7.       <其他的字段名(小写)>其他的属性值</其他的字段名>  
  8.   </ac>  
  9.   <Error><N>errorno</N><D>err_description</D></Error>  
  10. </root>  

11.GetRX_(x)
      功能:按指定的条件返回XML格式的记录
      通过一个例子来说明这个函数:

 
  1. GetRX_("AC.acid='1001'='1002'='1009',Comment.id=1=2=3")     


    这个例子会返回AC表中acid=’1001’ 或者 acid=’1002’ 或者 acid=’1009’

记录 和 Comment表中id=1 或者id=2 或者 id=3 的记录
返回的数据XML数据格式如下
 
  1. <root>  
  2.   <tablename1>  
  3.       <fileld1>fieldvalue</fileld1>  
  4.       <fileld2>fieldvalue</fileld2>  
  5. <fileld3>fieldvalue</fileld3>  
  6. ….   
  7.   </tablename1>  
  8.   <tablename2>  
  9.       <fileld1>fieldvalue</fileld1>  
  10.       <fileld2>fieldvalue</fileld2>  
  11. <fileld3>fieldvalue</fileld3>  
  12. ….   
  13.   </tablename2>  
  14.   <Error><N>errorno</N><D>err_description</D></Error>  
  15. </root>  
 
 

12.R2X_(rs,t)
      功能:把ADO的记录集rs转换为XML结构的字符串输出,t是记录集或者表的名称tablename
      参数rs为 adodb的recordset对象

       返回的数据的XML格式
   
 
  1. <tablename>  
  2.    <r2x>  
  3.         <fileld1>fieldvalue</fileld1>  
  4.         <fileld2>fieldvalue</fileld2>  
  5. <fileld3>fieldvalue</fileld3>  
  6. ….   
  7.    </r2x>  
  8. </tablename>  
 
        其中一个r2x节点表示rs中的一行记录

13.MyErr_(s)
     功能:返回一个自定义代码s的错误的XML格式字符串
     等价于VB代码的:     
 
  1. function MyErr_(s)   
  2.     MyErr_="" & s & "Unknown Error"  
  3. end function  

14.D4SQL_(date)
    把date转换成SQL可以接受的方式,Access类型会自动加入#包含符号,SQLServer会自动添加单引号
    例如: 假设date为2009-01-01 
    如果当前数据库为ACCESS 则 D4SQL_ 结果为 #2009-01-01#
    如果当前数据库为SQLSERVER 则 D4SQL_ 结果为 '2009-01-01'
 
 
 
15.Round45( Number , optional byval Digits =2)
    真正的四舍五入
    特别提醒您注意
   1 .这个函数名是没有下划线结尾的
   2.这个函数的   Digits  和 SC 不一样,是 可选的,默认值为2, 在SC中,是必填的   
 
16. GetCNStrY_(Y)
取其他年份的数据库连接串
 
17.Log_(o, M , i)
        用于记录操作日志和Debug
        注意参数 o是 String 250个字符以内
         M是Memo长字符串,如果需要记录的内容比较多请用这个字段,否则请在这个参数填入空字符串
         I 是数字 一般用0或者1表示成功与否
        
        例子: Log_   “用户登录”, ”” ,1
        
        注意:这些信息会写入mylog表


18.DFF_(mydate)
     获得格式化后的日期字符串,在 SC编程环境中,因为数据类似会隐式转换,例如,我们在数据库中取出某个字段是日期型的:
     select mydate from mytable
     当你在SC使用这个日期类型(数据库或者日期函数)的时候,很多时候会被隐式转换为字符串类型,例如返回结果或者是用来构建SQL语句
     当用户的系统时间格式设置不对时,很容易出现问题。因此,该函数务必要使用于当你在SC取出的数据库字段为日期型时。
     测试方法:
     你可以把系统时间 设置为  yyyy-mm-dd 某些文字 hh:mm:ss
     msgbox "select * from testtable where mydatefieldvalue>'"  & now() & "'"
     这样你看到的SQL语句结果明细不对
     应该做成这样:
     msgbox "select * from testtable where mydatefieldvalue>'"  & DFF_(now()) & "'"



补充说明:
ErrXML_(Err)必须在其他函数(如果该函数包含on error resume next)调用之前
例如
 
  1. Function test()   
  2.      DoSomthingButHaveError   
  3.      call myfun   
  4.     Test=XML_(ErrXML_(err))   
  5. End function    
  6. Function myfun   
  7.   On error resume next   
  8.    Dosomthing   
  9. End function   
  10. '上述的代码你将得不到错误信息返回.你必须改成这样的顺序:   
  11. Function test()   
  12.   DoSomthingButHaveError   
  13.   Test=XML_(ErrXML_(err))   
  14.    call myfun   
  15. End function    
  16. '原因是on error resum next过程会把前面的错误信息清零.   
  17. '你也可以在你的函数里面添加这样的代码   
  18. Function myfun   
  19.   if err.number<>0 then   
  20.      err.Raise err.number ,err.Source,err.Description   
  21.   end if   
  22.   On error resume next   
  23.   Dosomthing   
  24. End function   


编程人员应该着重掌握 ADO的Connection对象和Recordset对象的用法(常用属性和方法),还应该了解XML的基本结构和语法规范

文档中心