这个话题在CSDN社区经常见到,但是之前不太留心,这次自己碰到了,就把解决方法做个记录,以备下次参考。
领导前几天发了个表格给我,是零件和机器型号对应表,里面就两列,一列是机器型号,另一列是零件号,这两者当然是多对多的关系啦。他要我做的事中涉及到一环,就是把每个机器型号对应的所有零件号列出来,或者把每个零件号对应的所有机器型号列出来。
这两列都是字符类型的,SQL 语句提供了SUM 这样的聚合函数把数值汇总,却没有提供sumstring 这样的函数把字符串汇总,只有自己动手写了。
这个问题的实现在Access 2003 和MS SQL 中还是很不一样的。Access 中是用VBA来编写自定义的函数,需要通过Data object 来调用SQL 语句。而在MS SQL Server 中自定义的函数直接就可插入SQL 语句。Access 中用VBA 编写的函数可以用在Access 查询中。
我在Access 中的实现方法如下:
新建一个Module,在里面定义自己的函数。函数定义如下:
Function AddString(partstring As String) As String
' 声明查询语句字符串和字段相加的字符串变量
Dim originalStr, queryStr As String
' 声明ADO的一个记录对象,注意用 New 来声明并生成实例
Dim myRecordset As New ADODB.Recordset
originalStr = ""
' 查询语句字符串是通过连接零件编号生成的,注意SQL语句需要引号
queryStr = "select * from material where part