引用DAO实现,例如:
'text 为从文本文件中读出的内容
sub test(text)
    Dim iDb As DAO.Database
    Dim iQuery As DAO.QueryDef
   
    Set iDb = Workspaces(0).OpenDatabase("f:\My Documents\db1.mdb", True, False, ";pwd=")  '打开数据库
    Set iQuery = iDb.QueryDefs("视图名")  '打开要更改的视图
    debug.print iQuery.sql   '显示以前的SQL
    iQuery.sql=Text  '新的SQL语句
end sub

解决方案 »

  1.   


    在access中可能没办法直接修改,但可以间修改,我在问一问我的朋友,有的话我在告诉你
    Public Sub AlterView(txt As String)
        Dim sql As String
        
        sql = "drop table t_view"我 ‘删除视图表
        cn.Execute (sql)
        
    '建新视图可以用你从文本文件中读取过来的语句替换下面的sql
        sql = "create view t_view as select * from main where age =45" 
        cn.Execute (sql)
        
    End Sub
      

  2.   

    ADO不支持,因为微软已经将数据库结构的操作用ADOX来实现。
    /*--------------------------------------------------------
    ADOX 是对 ADO 对象和编程模型的扩展。ADOX 包括用于模式创建和修改的对象,以及安全性。由于它是基于对象实现模式操作,所以用户可以编写对各种数据源都能有效运行的代码,而与它们原始语法中的差异无关。
    ADOX 是核心 ADO 对象的扩展库。它显露的其他对象可用于创建、修改和删除模式对象,如表格和过程。它还包括安全对象,可用于维护用户和组,以及授予和撤消对象的权限。
    ------------------------------------------------------*/
    只能用楼上的间接修改方法,如果是SQL SERVER数据库,也可以用ADO,用"alter view……"实现。下面给出ADOX的实现例子:
    Public Sub test()
        Dim iConcStr$
        Dim iDb As New ADOX.Catalog
        Dim iCmd As New ADODB.Command
        '数据连接字符串
        iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:\My Documents\db1.mdb;Persist Security Info=False"
        '打开数据源
        iDb.ActiveConnection = iConcStr
        '打开要修改的视图
        Set iCmd = iDb.Views("视图").Command
        '显示视图的原来SQL语句
        Debug.Print iCmd.CommandText
        '设置新的SQL语句
        iCmd.CommandText = "select * from 表"
        '应用修改
        Set iDb.Views("视图") = iCmd
    End Sub