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)
参数 s 是 sql语句 n 是bool类型的,意思是是否把结果转换成数字,
如果n=true, sql 执行的结果如果是字符串就转换为数字,如果是空串或者转换失败就返回0
例子:s=GetOneVL_("select top 1 id from mytable",true)
2. GetCN_()
功能:获得一个ADODB数据库连接对象
函数原型等价于VB的:
- function GetCN_()
- set GetCN_=createobject("adodb.connection")
- end function
3.GetRS_()
功能:获得一个ADODB的recordset对象
函数原型等价于VB的:
- function GetRS_()
- set GetRS_=createobject("adodb.recordset")
- end Function
功能:关闭并销毁对象o
函数原型等价于VB的:
- function Close_(o)
- on error resume next
- o.close()
- set o=nothing
- end Function
5.ExecSQL_(s)
功能:在当前数据库执行sql语句s
返回执行是否有错误的错误信息的XML格式的字符串
函数原型等价于VB的:
功能:在当前数据库执行sql语句s
返回执行是否有错误的错误信息的XML格式的字符串
函数原型等价于VB的:
- function ExecSQL_(s)
- dim cn
- on error resume next
- set cn=GetCN_()
- cn.open CNStr_
- cn.Execute s '核心功能
- ExecSQL_=ErrXML_(Err)
- Close_ cn
- end Function
6.ErrXML_(o)
功能:以XML格式字符串方式返回错误对象o的信息
参数o为Err对象
函数原型等价于VB的:
功能:以XML格式字符串方式返回错误对象o的信息
参数o为Err对象
函数原型等价于VB的:
- function ErrXML_(o)
-
ErrXML_="
" & o.Number & " & o.Description & "]]>" - end Function
7.XML_(x)
功能:把字符串x添加 父节点和XML文档定义头,输出为完整的XML格式化文档字符串。
参数x为字符串,要求符合XML格式
函数原型等价于VB的:
参数x为字符串,要求符合XML格式
函数原型等价于VB的:
- Function XML_(x)
-
XML_=""1.0"" encoding=""" & E_ & """ ?>
" & x & "" - End Function
8.GetSettingS_(s)
功能:取得mysetting表里面VName字段等于s的对应记录的shortSetting字段的值
参数s为字符串
函数原型等价于VB的:
- Function GetSettingS_(s)
- GetSettingS_=GetOneVL_("select ShortSetting from mysetting where VName='" & s & "'",0)
- End Function
9.GetSettingL_(s)
功能:取得mysetting表里面VName字段等于s的对应记录的LongSetting字段的值
参数s为字符串
函数原型等价于VB的:
- Function GetSettingS_(s)
- GetSettingS_=GetOneVL_("select LongSetting from mysetting where VName='" & s & "'",0)
- End Function
10.GetAC_(s)
功能:根据科目代码s获得一个科目的全部属性信息
参数s为字符串,科目代码
函数返回的格式如下:
- <root>
- <title>科目完整名称如 银行存款?建设银行</title>
- <acstru>42222222(科目级别长度的结构)</acstru>
- <ac>
- <acid>科目代码</acid>
- <actitle>科目名称</actitle>
- <其他的字段名(小写)>其他的属性值</其他的字段名>
- </ac>
- <Error><N>errorno</N><D>err_description</D></Error>
- </root>
11.GetRX_(x)
功能:按指定的条件返回XML格式的记录
通过一个例子来说明这个函数:
- 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数据格式如下
- <root>
- <tablename1>
- <fileld1>fieldvalue</fileld1>
- <fileld2>fieldvalue</fileld2>
- <fileld3>fieldvalue</fileld3>
- ….
- </tablename1>
- <tablename2>
- <fileld1>fieldvalue</fileld1>
- <fileld2>fieldvalue</fileld2>
- <fileld3>fieldvalue</fileld3>
- ….
- </tablename2>
- <Error><N>errorno</N><D>err_description</D></Error>
- </root>
12.R2X_(rs,t)
功能:把ADO的记录集rs转换为XML结构的字符串输出,t是记录集或者表的名称tablename
参数rs为 adodb的recordset对象
返回的数据的XML格式
- <tablename>
- <r2x>
- <fileld1>fieldvalue</fileld1>
- <fileld2>fieldvalue</fileld2>
- <fileld3>fieldvalue</fileld3>
- ….
- </r2x>
- </tablename>
13.MyErr_(s)
功能:返回一个自定义代码s的错误的XML格式字符串
等价于VB代码的:
- function MyErr_(s)
-
MyErr_="
" & s & " Unknown Error" - end function
14.D4SQL_(date)
把date转换成SQL可以接受的方式,Access类型会自动加入#包含符号,SQLServer会自动添加单引号
例如: 假设date为2009-01-01
如果当前数据库为ACCESS 则 D4SQL_ 结果为 #2009-01-01#
如果当前数据库为SQLSERVER 则 D4SQL_ 结果为 '2009-01-01'
例如: 假设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)调用之前
例如
获得格式化后的日期字符串,在 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)调用之前
例如
- Function test()
- DoSomthingButHaveError
- call myfun
- Test=XML_(ErrXML_(err))
- End function
- Function myfun
- On error resume next
- Dosomthing
- End function
- '上述的代码你将得不到错误信息返回.你必须改成这样的顺序:
- Function test()
- DoSomthingButHaveError
- Test=XML_(ErrXML_(err))
- call myfun
- End function
- '原因是on error resum next过程会把前面的错误信息清零.
- '你也可以在你的函数里面添加这样的代码
- Function myfun
- if err.number<>0 then
- err.Raise err.number ,err.Source,err.Description
- end if
- On error resume next
- Dosomthing
- End function
编程人员应该着重掌握 ADO的Connection对象和Recordset对象的用法(常用属性和方法),还应该了解XML的基本结构和语法规范
文档中心