在ACCESS中,SQL可以直接调用函数和读取窗体的值,那么,窗体的值一变,只要重执行这个SQL就完成了.如果VB的SQL没有这个功能,那么就比较麻烦了,非要写代码来重写SQL语句,再重执行.
VB能象ACCESS那样吗?

解决方案 »

  1.   

    抛砖引玉,比如以窗体frmA上的文本框txtB中的内容作为查询的条件:rs.open "select * from table_name where fieldA='" & frmA.txtB.text & "'"
      

  2.   

    在ACCESS中,有一个方便的地方,就是上面的SQL可以写成:
    select * from table_name where fieldA = frmA.txtB.text
    又可以是:
    select * from table_name where fieldA = 自定义函数()
    也就是可以在SQL中可加入窗体属性、或函数等。我的意思就是这样了,VB6能这么做吗?ACCESS能这样,有时很是方便的。
      

  3.   

    VB的SQL不能使用NZ函数呀,很是麻烦!!
      

  4.   

    VB中完全可以使用自定义的SQL函数
    方法 调用存储过程传递参数,存储过程中调用自定义函数,接收参数并返回值
      

  5.   

    SoHo_Andy(冰) :
    如何做呀,求求你教教我,否则我撞死算了。
      

  6.   

    sqlserver存储过程中也可以调用sqlserver自定义函数
      

  7.   

    创建自定义函数:
    create function getstring(@id int)
    returns varchar(8000)
    as 
    begin
    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+','+rtrim(内容) from t where id=@id
    set @sql=right(@sql,len(@sql)-1)
    return @sql
    end
    go创建存储过程:
    create proc Test(@id int ,@name varchar(20) output)
    as
    begin
      --存储过程中调用自定义函数getstring
      select @name=dbo.getstring(id) from customers where customerid= @id
    End调用:    
        Dim cmd As ADODB.Command
        Dim par1 As ADODB.Parameter
        Dim par2 As ADODB.Parameter
        Set cmd = New ADODB.Command
        cmd.CommandText = "test"
        cmd.CommandType = adCmdStoredProc
        Set par1 = cmd.CreateParameter("a", adInteger, adParamInput, , 3)
        cmd.Parameters.Append par1
        Set par2 = cmd.CreateParameter("b", adVarChar, adParamOutput, 20)
        cmd.Parameters.Append par2
        Set cmd.ActiveConnection = cnDatabase
        cmd.Execute
        Debug.Print par2.Value
        Set cmd = Nothing
      

  8.   

    TO yoki(小马哥):
    太感激你了,我找来找去也找不到存储过程的内容在MSDN中。但问题是我用VB+ADO+ACCESS,没有存储过程编辑和调试器,如果编写和调试存储过程???我决定给题目加分,以报答朋友对我的帮助。
      

  9.   

    access中也有存储过程吗?(本人对access不太熟悉,以上代码针对sqlserver数据库)