再点模块--新建--新建一个模块,写上如下代码:Public Function f_getstr(bh$, fd$) As String 'bh为货品编号,fd为要组合的字段名 Dim iRe As String, Re As DAO.Recordset
Set Re = CurrentDb.OpenRecordset("select " & fd & " from 合并字符串 where 货品编号='" + bh + "'") While Re.EOF = False iRe = iRe & "," & Re(0) Re.MoveNext Wend Re.Close
f_getstr = Mid(iRe, 2) End Function
然后新建一个查询,注意其中的f_getstr(...),就是调用了我上面写的模块 SELECT 货品编号, 货品名称, 季节, f_getstr(货品编号,"尺寸") AS 尺寸, f_getstr(货品编号,"颜色") AS 颜色 FROM 合并字符串 GROUP BY 货品编号, 货品名称, 季节;
那些在存储过程实现的业务只能放到前端了
新建一个查询 procdure1
很简单的一个存储过程:
Select * from 表 where 字段=@varok,现在这个procdure1就是一个存储过程
但是access的功能必定有限,若你写的存储过程很复杂,别如说游标等一类似循环的语句
就很可能执行结果不对
" AS DELETE FROM Products WHERE ProductsID = inProductsID;" 3、"CREATE PROC procProductsAddItem(inProductName VARCHAR(40), " & _
" inSupplierID LONG, inCategoryID LONG) " & _
" AS INSERT INTO Products (ProductName, SupplierID, CategoryID) " & _
" Values (inProductName, inSupplierID, inCategoryID);" 4、"CREATE PROC procProductsUpdateItem(inProductID LONG, " & _
" inProductName VARCHAR(40)) " & _
" AS UPDATE Products SET ProductName = inProductName " & _
" WHERE ProductID = inProductID;限制:
不能使用输出参数。
不要使用@字符。 @字符通常用于Transaction SQL( SQL SERVER),代表一个本地变量 。 Access不总是会转换这个字符, 有时会将它省略。
Access无法存取临时表。
照这样看好像ACESS无法声明局部变量
内容如下:ID 货品编号 货品名称 季节 尺寸 颜色
1 1004B 开裆裤 春秋 52 红色
2 1004B 开裆裤 春秋 59 红色
3 1004B 开裆裤 春秋 66 红色
4 1004B 开裆裤 春秋 73 红色
5 1007 素色双面 春(A) 52 红色
6 1007 素色双面 春(A) 59 红色
7 1007 素色双面 春(A) 52 兰色
8 1007 素色双面 春(A) 59 兰色
9 1009 素色双面2 春秋 59 红色
10 1009 素色双面2 春秋 66 红色
11 1009 素色双面2 春秋 59 兰色
Dim iRe As String, Re As DAO.Recordset
Set Re = CurrentDb.OpenRecordset("select " & fd & " from 合并字符串 where 货品编号='" + bh + "'")
While Re.EOF = False
iRe = iRe & "," & Re(0)
Re.MoveNext
Wend
Re.Close
f_getstr = Mid(iRe, 2)
End Function
SELECT 货品编号, 货品名称, 季节, f_getstr(货品编号,"尺寸") AS 尺寸, f_getstr(货品编号,"颜色") AS 颜色
FROM 合并字符串
GROUP BY 货品编号, 货品名称, 季节;