首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

局域网怎么同时使用EXCEL共享的数据

2013-08-04 
局域网如何同时使用EXCEL共享的数据我现在编了一个小程序,用来登记和查询数据(登记好的数据和查询数据是直

局域网如何同时使用EXCEL共享的数据
我现在编了一个小程序,用来登记和查询数据(登记好的数据和查询数据是直接录入和调用EXCEL里)。现在有一个问题就是如果有一台电脑在使用查询模块,其它机打开查询模块时,说EXCEL数据在使用,就出错了,现在请各位老师帮助一下,局域网如何同时使用EXCEL共享的数据?谢谢!
我的代码下,请老师帮助修改一下:

Dim cnn As Object, rs As Object

Private Sub Command2_Click()
  Dim SQL$, f$
    If Text1.Text = "" Then Exit Sub
      On Error Resume Next
    Set rs = cnn.Execute("[Sheet1$]")
    SQL = "Select * from [Sheet1$] where " & rs.Fields(0).Name & "='" & Text1.Text & "'"
    Set rs = CreateObject("ADODB.recordset")
    rs.Open SQL, cnn, 1, 3
    With ListView1
        .ListItems.Clear
        For i = 1 To rs.RecordCount
            .ListItems.Add , , rs.Fields(0).Value
            For j = 1 To rs.Fields.Count - 1
                .ListItems(i).SubItems(j) = rs.Fields(j).Value
            Next j
            rs.MoveNext
        Next i
    End With
   End Sub

Private Sub Form_Initialize()
 Dim SQL$, i&, ii&, j&, a
     f = "D:\数据.xls"
    If Dir(f) = "" Then
        MsgBox "连接错误!", vbCritical
        Exit Sub
    End If
    Set cnn = CreateObject("ADODB.Connection")
    cnn.Open "Provider = Microsoft.Jet.Oledb.4.0;Extended Properties =Excel 8.0;Data Source =" & f
    Set rs = CreateObject("ADODB.recordset")
    SQL = "Select * from [Sheet1$]"
    rs.Open SQL, cnn, 1, 3
    With ListView1
        
       .ColumnHeaders.Clear


        .View = lvwReport        
        .FullRowSelect = True    
        .GridLines = True            
          For i = 0 To rs.Fields.Count - 1
            If i > 0 Then
            
                .ColumnHeaders.Add , , rs.Fields(i).Name, 800, lvwColumnCenter 
            Else
                .ColumnHeaders.Add , , rs.Fields(i).Name, 800
            End If
        Next i
    End With
   
End Sub
Private Sub Form_Terminate()
    rs.Close
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing
End Sub

Excel 数据库 共享
[解决办法]
你如果不懂如何使用 SQL Server,要了解如何使用也是很简单的呀。
要做的基本事情就是去安装一个 SQL Server,然后在SQL Server 里建立数据库和数据表,
如果这些都不会你就网上搜或是看 SQL Server 的帮助吧。
之后就是用 VB 的外接程序通过向导生成相关程序,你可以点击 VB 的“外接程序”菜单,然后选择“外接程序管理器”,然后把“数据窗体向导”设置为启动/加载,确定后再点击“外接程序”菜单,就可以看到“数据窗体向导”的菜单项了,然后你可以通过向导去连接你的数据库,向导完成后会生成相关的窗口代码,你可以观察代码去了解如何访问数据库的。
我只是告诉你个学习方法,当然,SQL Server 数据库实际用起来可以很简单,如:


Private Sub Command1_Click()
    Dim conn As Object       ' 数据库连接对象
    Dim rs As Object         ' 数据集对象


    ' 先创建连接对象
    Set conn = CreateObject("ADODB.Connection")
    ' 先连接 SQL Server 数据库
    ' 数据库连接语句很简单,格式如下:
    ' PROVIDER=MSDASQL;DRIVER={SQL SERVER};SERVER=服务器名或IP地址;UID=用户帐号;PWD=用户密码;DATABASE=数据库名称;
    conn.open "PROVIDER=MSDASQL;DRIVER={SQL SERVER};SERVER=localhost;UID=sa;PWD=123456;DATABASE=yourdb;"
    ' 当然你也可以做一下校验判断连接是否成功,这里我就不做了,直接进入下一步
    ' 创建数据集对象
    Set rs = CreateObject("ADODB.Recordset")
    ' 现在可以正式查询数据库了,要说明的是这里用的 3,1 是只读方式进行操作,要读写可以改为 3,3,当然还有别的方式
    ' 具体的你就参考 MSDN 中 ADO 对象的说明吧,不过这两种是比较常用的方式
    rs.open "Select * From 表名", conn, 3, 1
    ' 完成查询过程后可以通过循环语句把数据读出来
    Do While Not rs.EOF     ' 如果不是最后一条就一直循环
        Print rs!字段名1 & vbTab & rs!字段名2
        rs.MoveNext         ' 将当前操作记录移动到下一条
    Loop
    rs.Close                ' 操作完关闭
    
    Set rs = Nothing        ' 释放数据集对象
    conn.Close              ' 关闭连接对象
    Set conn = Nothing      ' 释放连接对象
End Sub


当然,在实际运用中,没必要这样查询一次就连接一次数据库,你可以把
数据连接对象定义到模块里,然后申明全局变量,如

' Module1.bas 文件内容
Public conn As Object

然后在程序初始化是或用户登录时去连接数据库,在程序退出时关闭数据连接和释放对象
然后在查询过程中只需要定义数据集对象便可以了,如:

Private Sub Command1_Click()
    Dim rs As Object        ' 数据集对象
    ' 创建数据集对象
    Set rs = CreateObject("ADODB.Recordset")
    rs.open "Select * From 表名", conn, 3, 1
    Do While Not rs.EOF     ' 如果不是最后一条就一直循环
        Print rs!字段名1 & vbTab & rs!字段名2
        rs.MoveNext         ' 将当前操作记录移动到下一条


    Loop
    rs.Close                ' 操作完关闭
    
    Set rs = Nothing        ' 释放数据集对象
End Sub


当然数据库还可以执行数据插入、修改、删除等操作,用起来也很简单,如:
热点排行