[attach]39026[/attach]作者: Henry D. Sy 时间: 2009-7-26 12:30
可以
不过您要传例子作者: benhh 时间: 2009-7-27 06:48
多谢版主,例子已经上传,内有一个表和两个查询,请帮忙实现这种效果:
项目A 60000 资金1/资金2/资金3
项目B 50000 资金1/资金2
如果是您的自定义函数,请在注释里说明,谢谢!作者: Henry D. Sy 时间: 2009-7-27 11:30
自定义函数
Public Function gStr(strGrp As String) As String
Dim strTemp As String '?????????
Dim rs As New ADODB.Recordset '??ado???
Dim strSQL As String '????????????sql??
strSQL = "select ?? from ?1 where ??='" & strGrp & "'" '?strSQL????
With rs
.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockReadOnly '?????
Do While Not .EOF '??
strTemp = strTemp & .Fields(0) & "/" '??
.MoveNext
Loop
.Close '?????
End With
If Len(strTemp) <> 0 Then '???????
strTemp = Left(strTemp, Len(strTemp) - 1)
End If
gStr = strTemp '????????????
Set rs = Nothing '????
End Function
查询A
SELECT 表1.项目, gStr([项目]) AS 新资金
FROM 表1;
查询B
SELECT 项目, Sum(金额) AS 总计
FROM 表1
GROUP BY 项目;
结果
SELECT DISTINCT A.项目, A.新资金, B.总计
FROM A INNER JOIN B ON A.项目 = B.项目;作者: Henry D. Sy 时间: 2009-7-27 11:30
Public Function gStr(strGrp As String) As String
Dim strTemp As String '定义一个临时字符串
Dim rs As New ADODB.Recordset '定义ado记录集
Dim strSQL As String '定义一个字符串变量来保存sql语句
strSQL = "select 资金 from 表1 where 项目='" & strGrp & "'" '给strSQL变量赋值
作者: aslxt 时间: 2009-7-27 12:10
模块:
Function hBTXT(TX As String, TB As String, FD As String, TJFD As String)
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
Dim RecA As ADODB.Recordset
Set RecA = New ADODB.Recordset
Dim Str
Str = "select DISTINCT " & FD & " from " & TB & " where " & TJFD & "='" & TX & "'"
RecA.Open Str, conn, adOpenStatic, adLockReadOnly
Select Case RecA.RecordCount
Case 0
hBTXT = ""
Case 1
hBTXT = RecA.Fields(0)
Case Is > 1
hBTXT = RecA.Fields(0)
For i = 2 To RecA.RecordCount
RecA.MoveNext
hBTXT = hBTXT & "\" & RecA.Fields(0)
Next i
End Select
End Function
查询:
SELECT 表1.项目, Sum(表1.金额) AS 金额之总计, hBTXT([项目],"表1","资金","项目") AS 表达式1
FROM 表1
GROUP BY 表1.项目;作者: 风啸啸 时间: 2009-7-27 13:21
学习了。作者: benhh 时间: 2009-8-2 06:46
多谢版主,多谢aslxt同学,我回单位以后也弄出一个函数,不过时间太忙,直到周末才有时间上网和大家分享。
我的函数如下
Public Function CatList(ByVal qryname, refname, catname, productName As String) As String
On Error GoTo err_catlist
Dim temp2 As String
Dim dbs As Database
Dim rs As Recordset
Dim strSql As String
Set rs = dbs.OpenRecordset(strSql, dbOpenSnapshot)
rs.MoveFirst
temp2 = rs.Fields(1)
Do While Not rs.EOF
If InStr(temp2, rs.Fields(1)) = 0 Then
temp2 = temp2 & " " & rs.Fields(1)
End If
rs.MoveNext
Loop
rs.Close
dbs.Close
CatList = temp2