【access小品】姊妹函数--自定义函数编制讲座四
时 间:2011-05-31 13:39:40
作 者:煮江品茶 ID:10802 城市:武汉
摘 要:自定义函数编制
正 文:
域函数很有用处,可以对记录做纵向的分类统计。不过域函数还是不能全部的应付各类纵向的分类处理,比如分类联接字符型数据,再比如分类连乘等等。这种情况下我们可以采用ADO记录集来处理此类问题,而且这种类型的函数你只要会编写一个,就能举一反三的解决若干个同类问题。
前不久,煮茶论道同志问了一个关于分类联接字符串的问题,问题如下:
------------------------------
表中有记录如下:
姓名 科目
张三 语文
张三 数学
“张三”有两条记录,我想转换成 张三 语文 数学 成为一条记录
-------------------------------
对于这个问题,可以写一个自定义函数如下:
Function DDSUM(tbname as string,fldname as string,fldIDname as string,StrID As String) as string
'示例:select 姓名 & " " & DDSUM("课程表","学科","姓名",[姓名]) from 课程表 group by 姓名
Dim rs As New ADODB.Recordset
Dim ssql As String
Dim i As Long
Dim s as string
ssql = "select " & fldname & " from " & tbname & " where Cstr(" & fldIDname & ")='" & strID & "'"
rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
for i=1 to rs.recordcount
DDSUM=DDSUM & rs.Fields(fldname).value & " "
rs.movenext
next
DDSUM=left(DDSUM,len(DDSUM)-1)
rs.close
set rs=nothing
end function
-------------------------------
其后,版友liqianwu同志又问了一个从工序合格率,计算产品合格率的问题,也就是分类连乘的问题。对于这个问题,可以将上面的函数稍作修改,写成如下:
Function Multiply(tbname As String, fldname As String, fldIDname As String, StrID As String) As String
'示例:select 产品,Multiply("生产表","合格率","产品",[产品]) as 产品合格率 from 生产表 group by 产品
Dim rs As New ADODB.Recordset
Dim ssql As String
Dim i As Long
Dim s As String
ssql = "select " & fldname & " from " & tbname & " where Cstr(" & fldIDname & ")='" & StrID & "'"
rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Multiply = 1
For i = 1 To rs.RecordCount
Multiply = Multiply * rs.Fields(fldname).Value
rs.MoveNext
Next
rs.Close
Set rs = Nothing
End Function
-------------------------------
可以看出,两个函数的结构基本一致,只是在循环体中的语句稍做了修改,我们可以把这样一类的函数叫做姊妹函数。在编程过程中,我们经常的会遇到很多类似和相近的问题,解决这些问题的时候,我们不能采取狗熊掰苞米,掰一个丢一个。要善于从以往的经验中获取经验,举一反三得解决问题。只有这样开发的效率才能提高,也才能在不断的积累中,提高自己的能力。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 通过命令按钮让Access列表...(04.24)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)

学习心得
最新文章
- 仓库管理实战课程(15)-月度库存...(04.30)
- Access选择打印机、横纵向、纸...(04.29)
- 仓库管理实战课程(14)-出库功能...(04.26)
- 通过命令按钮让Access列表框指...(04.24)
- 仓库管理实战课程(13)-入库功能...(04.21)
- Access控件美化之--美化按钮...(04.19)
- Access多行文本按指定字符筛选...(04.18)
- Microsoft Access数...(04.18)
- 仓库管理实战课程(12)-月度结存...(04.16)
- 仓库管理实战课程(11)-人性化操...(04.15)