问题: dim db as database
        dim rs as recordset
        set db=opendatabse(数据库)
        set rs=db.openrecordset("select 自定义函数(字段A) from 表")
         
private function 自定义函数(tmp as string) as string
字符处理代码
end function如果不用自定义函数,光写select 字段A from 表就没问题,但现在字段A中的数据 需要通过自定义的一个函数来处理,将函数名写入select语句中,就总提示函数为定义。请问如何实现?谢谢。

解决方案 »

  1.   

    为什么不可能?如果在access的MDB数据库中,有模块结构,在模块中写入自定义函数——即通过VBA与VB一样,然后再查询中使用SQL语句,"select  自定义函数(字段A) from 表"就可以实现,但为何通过VB使用DAO执行select来引用VB写的相同函数就不行呢?就说未定义呢?想不通
      

  2.   

    调用的函数返回的字符串写在SQL语句外部,可以用;
    set rs=db.openrecordset("select " & 自定义函数(字段A) & " from 表") 
      

  3.   

    VB是通过数据库引擎jet访问mdb文件,所有的SQL语法遵循的是jet-sql标准,这个语法标准与ACCESS语法是不完全相同的,它甚至不能完全支持ACCESS内置函数,理不用说模块中用户自定义函数...所以如果你用MS的数据库引擎访问mdb文件,你的想法就是不可能实现的....
      

  4.   

    没有,直接用vb重写access中的函数好了。如果在access中可以实现的函数,用vb来实现应该也很容易才对。
      

  5.   

    access中的函数能使用的前提是在office access的平台环境中。目前写的函数实在VB平台,而只是对access的数据库进行引用,我也在想是否能将函数写进数据库中,然后实现引用。毕竟VB与VBA都一样,但没找到合适的方法。期待帮忙。谢谢
      

  6.   

    我也遇到一模一样的问题,希望高手能指导一下。我在一个数据库中能使用自定义函数更新数据,但在另一个数据库同样的函数就不能使用,即使修改函数参数为field也不行。比如原来是Public Function getpy(char As String) As String 修改为Public Function getpy(char As field) As String。