我们公司服务器的计算机名称为XWG,登陆进入的win2000操作系统的用户名为
 administrator,密码为hlsxwg.我把要访问的hodata.mdb数据库放入服务器D盘的share文件夹,并将该share文件夹设为
 共享,它的网络路径就是\\XWG\share\hodata.mdb.另外hodata.mdb的数据库密码是123456.我们的工作组名称为 workshop.
 
我写了以下示例代码来访问XWG这台服务器上的access数据库,hodata.mdb,大家一看就会明白:Dim strCnn,temppassword As String     '定义一个字符串变量
 Dim cnn As ADODB.Connection   '声明数据连接变量
 Dim rs1 As ADODB.Recordset    '声明一个数据集对象变量 
Private Sub Form_Load()
 strCnn=\\XWG\share\hodata.mdb
 temppassword=123456
         '请问此处应如何填写连接字符串?
 cnn.ConnectionString = "??????????????????????????????????"
 Set cnn = New ADODB.Connection
 cnn.Open  Set rs1 = New ADODB.Recordset
 
 rs1.Open "select * from 客户",cnn, adOpenKeyset, adLockOptimistic
 
if rs1.recordcount>0 then 
 msgbox "成功返回数据!"
 
 End Sub
 
现在我想用Microsoft.Jet.OLEDB.4.0访问access数据库,请问此处的连接字符串strcnn的内容应如何填写?
我曾经试过将其设为
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strCnn;Jet OLEDB:database password=" + temppassword
我运行不成功,老是报错,我都不知到该怎么办了.
但是当我在网上邻居中,访问服务器的share文件夹时,输入用户名 administrator,密码hlsxwg后,程序可以运行。各位哥哥,帮帮我吧

解决方案 »

  1.   

    Option Explicit'工程->引用->Microsoft ActiveX Data Objects 2.0 Library (后面为版本号)
    Dim rs As New ADODB.Recordset'在MSHFLEXGRID表格控件中显示查询到的内容
    Private Sub Command1_Click()
        If rs.State = adStateOpen Then rs.Close
        rs.Open "SELECT * FROM USERPASSWORD", cn, adOpenDynamic, adLockOptimistic
        Set MSHFlexGrid1.DataSource = rs
    End Sub'向数据库中添加数据
    Private Sub Command2_Click()
        If rs.State = adStateOpen Then rs.Close
        rs.Open "SELECT * FROM USERPASSWORD", cn, adOpenDynamic, adLockOptimistic
        rs.AddNew
        rs!UID = txtUid.Text
        rs!PWD = txtPwd.Text
        rs!TRUENAME = txtName.Text
        rs!CREATEDATE = Format(Now, "YYYY/MM/DD")
        rs.Update
        
        Command1.Value = True
    End Sub'从数据库中删除数据
    Private Sub Command3_Click()
        cn.Execute "DELETE FROM USERPASSWORD WHERE UID = '" & txtUid.Text & "'"
        Command1.Value = True
    End SubPrivate Sub Form_Load()
        cn.ConnectionString = "DBQ=\\XWG\share\hodata.mdb;DefaultDir=" & _
            App.Path & ";Driver={Microsoft Access Driver (*.mdb)};" & _
            "DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;" & _
            "MaxBufferSize=512;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;" & _
            "Threads=3;UID=ADMIN;UserCommitSync=Yes;PWD=admind1234;"
        cn.Open
        '查询字符串可以上这里查
        'http://www.connectionstrings.com/
    End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    On Error Resume Next
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    End Sub不过不建议在局域网内访问共享的ACCESS数据库,如果多人同时访问的话容易损坏数据库文件!!
    建议改用网络数据库!!
      

  2.   

    建议用SQL server
    同意楼上
      

  3.   

    将该share文件夹设为完全共享
    试试下面的
    DbFileName="\\XWG\share\hodata.mdb"
    ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                    DbFileName & ";Persist Security Info=False;"
    With conn
        .Open ConnectString, uid, pwd
    End With
      

  4.   

    如果不想用sqlserver
    可以做成三层结构或者分布式
    参考
    http://blog.csdn.net/online/archive/2004/07/07/35994.aspx
      

  5.   

    先用如下登陆(相当于网上邻居中登)
    Shell "net use \\XWG\share\ hlsxwg /user:administrator"
    再运行连接........
      

  6.   

    首先要爱客户机是什么系统,如果是98的话要访问2000这比较困难。如果是2000的话,那就将服务器上的guest用户启用。这样才能使别访问机子访问2000的时候不用输入用户名跟密码。
    程序方面跟你做的一样
    Private Sub Form_Load()
     strCnn=\\XWG\share\hodata.mdb
     temppassword=123456
      cnn.ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                    strCnn & ";Persist Security Info=False;"
     Set cnn = New ADODB.Connection
     cnn.Open  Set rs1 = New ADODB.Recordset
     
     rs1.Open "select * from 客户",cnn, adOpenKeyset, adLockOptimistic
     
    if rs1.recordcount>0 then 
     msgbox "成功返回数据!"
     
     End Sub
      

  7.   

    guest用户可以在2000的用户管理中启用
      

  8.   

    需将目录设置成完全共享,且启用guest用户
    建议将数据库换成sql
      

  9.   

    你首先要在VB菜单中:
    “工程”-->“引用”-->“Microsoft AxtiveX Data Objects 2.X Library”
    注:2.X为版本号,如果你机子上有高版本的就用高版本的,如:2.5或2.6的Private Sub ComOK_Click()
       Dim SQLstr As String,cnstr AS String
      Dim cn AS New ADODB.Connection'连接对象
       Dim rs As New ADODB.Recordset'记录集对象
       cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
               "Data Source=\\myServer\c:\inetpub\wwwroot\yourdb.mdb" '连接字符串
       cn.open cnstr' 打开数据库连接
       rs.CursorLocation =adUseClient
       sqlstr="slect * from XXX表"
       rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
       set datagrid1.datasource=rs
       datagrid1.refresh
       rs.close'关闭记录集对象
       set rs=nothing
    End Sub
    本示例是将数据库中的一张表的记录显示在datagrid的控件中。
    注:myserver为服务器名可以为IP地址。
      

  10.   

    也可以这样,在服务器上建立一个用户,并且有相应的密码,然后,在服务器器上共享的文件夹权限中加入这个用户,然后,在客户机上,用程序建立驱动器映射,把它映射成一个盘符,然后,就如同本地一样使用,这样就避免在服务器上开启 guest 用户带来的安全问题
    '网络连接Private Type NETRESOURCE
        dwScope As Long
        dwType As Long
        dwDisplayType As Long
        dwUsage As Long
        lpLocalName As String
        lpRemoteName As String
        lpComment As String
        lpProvider As String
    End TypeGlobal Const NO_ERROR = 0
    Global Const CONNECT_UPDATE_PROFILE = &H1
    Global Const RESOURCETYPE_DISK = &H1
    Global Const RESOURCETYPE_PRINT = &H2
    Global Const RESOURCETYPE_ANY = &H0
    Global Const RESOURCE_CONNECTED = &H1
    Global Const RESOURCE_REMEMBERED = &H3
    Global Const RESOURCE_GLOBALNET = &H2
    Global Const RESOURCEDISPLAYTYPE_DOMAIN = &H1
    Global Const RESOURCEDISPLAYTYPE_GENERIC = &H0
    Global Const RESOURCEDISPLAYTYPE_SERVER = &H2
    Global Const RESOURCEDISPLAYTYPE_SHARE = &H3
    Global Const RESOURCEUSAGE_CONNECTABLE = &H1
    Global Const RESOURCEUSAGE_CONTAINER = &H2Public Declare Function WNetAddConnection2 Lib "mpr.dll" Alias _
    "WNetAddConnection2A" _
    (lpNetResource As NETRESOURCE, _
    ByVal lpPassword As String, _
    ByVal lpUserName As String, _
    ByVal dwFlags As Long) As LongPublic Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias _
    "WNetCancelConnection2A" _
    (ByVal lpName As String, _
    ByVal dwFlags As Long, _
    ByVal fForce As Long) As Long
      

  11.   

    Public Function my_net_conn(l_host As String, r_host As String, u_name As String, u_pass As String) As Integer
    '返回 0 成功连接 ,1 连接失败
    Dim NetR As NETRESOURCE
    Dim ErrInfo As LongNetR.dwScope = RESOURCE_GLOBALNET
    NetR.dwType = RESOURCETYPE_DISK
    NetR.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
    NetR.dwUsage = RESOURCEUSAGE_CONNECTABLE
    NetR.lpLocalName = Trim(r_host)
    NetR.lpRemoteName = Trim(l_host)'先去掉映射
    ErrInfo = WNetCancelConnection2(Trim(r_host), CONNECT_UPDATE_PROFILE, False)'重新映射
    ErrInfo = WNetAddConnection2(NetR, Trim(u_pass), Trim(u_name), CONNECT_UPDATE_PROFILE)If ErrInfo = NO_ERROR Then
        'MsgBox "Net connection successful!", vbInformation
        my_net_conn = 0
    Else
        'MsgBox "ERROR: " & Str(ErrInfo) & " - Net connection unsuccessful!", _
        'vbExclamation
        my_net_conn = 1
    End If
    End Function
    Public Function my_net_diconn(l_host As String) As Integer'返回 0 成功断开连接 ,1 断开连接失败Dim ErrInfo As Long
    Dim strLocalName As StringstrLocalName = Trim(l_host)
    ErrInfo = WNetCancelConnection2(Trim(l_host), CONNECT_UPDATE_PROFILE, False)If ErrInfo = NO_ERROR Then
        'MsgBox "Net disconnection successful!", vbInformation
        my_net_diconn = 0
    Else
        'MsgBox "ERROR: " & Str(ErrInfo) & " - Net disconnection unsuccessful!", _
        'vbExclamation
        my_net_diconn = 1
    End IfEnd Function
      

  12.   

    Garye (格芮)  解决没??我现在在单位也要做类式的东西,不过听说Access做网络的不好。
    共享时对数据库的操作会不会发生矛盾呀,估计也要来个操作系统中的P-V操作限制类式的东西
      

  13.   

    我如果硬要用ACCESS来做网络版的, 我会做B/S结构的