access的sql语法中没有自定义函数,也不能象sql server中一样用变量、游标、子查询等方法来灵活处理查询语句。
但是,在access环境中,透过模块中的过程,可利用功能强大的vb语言,生成复杂需求的查询语句。
下面是本人今天在access版块中的一个回复,以此例子,简单说明access依托vb所蕴含的强大功能。
网友提问:
--------------------------------------------------------------------------------
我在access里面的表如下:
comname name sex
1公司 小王 男
1公司 小李 女
2公司 小张 男
我想将同公司的内容合在一起如:
comname name sex
1公司 小王,小李 男,女
2公司 小张 男
请问我在access里面该如可操作?请问有什么好的方法去处理??
--------------------------------------------------------------------------------
解答:
----------------------------------------------------------------------------------
在 access的模块中建立一个自定义函数:
public function combstr(tablename as string, fieldname as string, groupfield as string, groupvalue as string) as string
dim resultstr as string
dim rs as recordset
set rs = currentdb.openrecordset(" select " & fieldname & " from " & tablename & " where " & groupfield & "='" & groupvalue & "'")
if rs.recordcount > 0 then
do while not rs.eof
resultstr = resultstr & "," & rs.fields(0).value
rs.movenext
loop
end if
if resultstr <> "" then resultstr = mid(resultstr, 2)
combstr = resultstr
end function
建立查询:
select t.comname, combstr("t","name","comname",t.comname) as combname, combstr("t","ses","comname",t.comname) as combsex
from t
group by t.comname
----------------------------------------------------------------------------------------------------