Public Function ConnectString() As String
   'returns a DB ConnectString
   ConnectString = "FileDSN=studentinfo.dsn;UID=sa;PWD="
End FunctionPublic Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
   'executes SQL and returns Recordset
   Dim cnn As ADODB.Connection
   Dim rst As ADODB.Recordset
   Dim sTokens() As String
   
On Error GoTo ExecuteSQL_Error
   
   sTokens = Split(SQL)
   Set cnn = New ADODB.Connection
   cnn.Open ConnectString
   If InStr("INSERT,DELETE,UPDATE",UCase$(sTokens(0))) Then
      cnn.Execute SQL
      MsgString = sTokens(0) & " query successful"
   Else
      Set rst = New ADODB.Recordset
      rst.Open Trim$(SQL), cnn,adOpenKeyset,adLockOptimistic
      'rst.MoveLast     'get RecordCount
      Set ExecuteSQL = rst
      MsgString = "查询到" & rst.RecordCount & " 条记录 "
   End If
ExecuteSQL_Exit:
   Set rst = Nothing
   Set cnn = Nothing
   Exit Function
   
ExecuteSQL_Error:
   MsgString = "查询错误: " & Err.Description
   Resume ExecuteSQL_Exit
End Function
然后在窗体模块中调用它我的material.dsn是这样的:通过sqlserver生成的
   [ODBC]
DRIVER=SQL Server
UID=sa
Regional=Yes
StatsLogFile=D:\materialManage\STATS.LOG
StatsLog_On=Yes
QueryLogFile=D:\materialManage\QUERY.LOG
QueryLog_On=Yes
DATABASE=material_Manage
WSID=WANGJING
APP=Microsoft Open Database Connectivity
SERVER=(local)
Description=material  file data source

解决方案 »

  1.   

    哥们,你的代码书写习惯很不好,最好改改,我先给你示范了一下。
    在说你的问题,你用的是server2000对吧,生成的连接.dsn文件是studentinfo.dsn  ,我不知道你那个material.dsn是什么,我都用操作系统\控制面板\管理工具\数据源 下做数据连接,那里面提示的很清楚,也很方便,去试试吧,祝你好运!
      

  2.   

    老兄,你的代吗是一本书上看的吧。只要将DSN文件的路径写对来就可以了,在ODBC中用‘用户文件’设制生成一个.DSN文件。
      

  3.   

    呵呵
    这位兄弟的代码是来自一本叫做《Visual Basic 6.0 数据库系统开发实例导航>>得吧,而且是人民邮电大学出版社的。我说得对吗?错误关键处在FileName 后面 把这一句改成
    Public Function ConnectString() As String
       ConnectString = "FileName=DNS的路径;(一般默认是C:\Program Files\Common Files\ODBC\Data Sources\material.dsn;)"
    End Function
    这样就OK了。
    Best of luck to you!