你是用ADO还DAO还是其它呢?如用ADO:
具体调用的方法为:
recordset.Open Source, ActiveConnection, CursorType, LockType, Options例子如下:
Public Sub OpenX()   Dim cnn1 As ADODB.Connection
   Dim rstEmployees As ADODB.Recordset
   Dim strCnn As String
   Dim varDate As Variant   ' 打开连接。
      strCnn = "Provider=sqloledb;" & _
      "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
   Set cnn1 = New ADODB.Connection
   cnn1.Open strCnn
   
   ' 打开雇员表。
   Set rstEmployees = New ADODB.Recordset
   rstEmployees.CursorType = adOpenKeyset
   rstEmployees.LockType = adLockOptimistic
   rstEmployees.Open "employee", cnn1, , , adCmdTable   ' 将第一个雇员记录的受雇日期赋值给变量,然后更改受雇日期。
   varDate = rstEmployees!hire_date
   Debug.Print "Original data"
   Debug.Print "  Name - Hire Date"
   Debug.Print "  " & rstEmployees!fName & " " & _
      rstEmployees!lName & " - " & rstEmployees!hire_date
   rstEmployees!hire_date = #1/1/1900#
   rstEmployees.Update
   Debug.Print "Changed data"
   Debug.Print "  Name - Hire Date"
   Debug.Print "  " & rstEmployees!fName & " " & _
      rstEmployees!lName & " - " & rstEmployees!hire_date   ' 再查询 Recordset 并重置受雇日期。
   rstEmployees.Requery
   rstEmployees!hire_date = varDate
   rstEmployees.Update
   Debug.Print "Data after reset"
   Debug.Print "  Name - Hire Date"
   Debug.Print "  " & rstEmployees!fName & " " & _
      rstEmployees!lName & " - " & rstEmployees!hire_date   rstEmployees.Close
   cnn1.CloseEnd Sub参数说明:
Source:可以为一个表名或者是SQL语句,你肯定要采用表名。
ActiveConnection:为ADO连接
CursorType:是游标类型
    adOpenForwardOnly (默认值)打开仅向前类型游标。 
    adOpenKeyset 打开键集类型游标。 
    adOpenDynamic 打开动态类型游标。 
    adOpenStatic 打开静态类型游标。 LockType:锁定类型
adLockReadOnly (默认值)只读 — 不能改变数据。 
adLockPessimistic 保守式锁定(逐个) — 提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录来完成。 
adLockOptimistic 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用 Update 方法时才锁定记录。 
adLockBatchOptimistic 开放式批更新 — 用于批更新模式(与立即更新模式相对)。 
Options:可选,长整型值
常量 说明 
adCmdText 指示提供者应该将 Source 作为命令的文本定义来计算。 
adCmdTable 指示 ADO 生成 SQL 查询以便从 Source 命名的表返回所有行。 
adCmdTableDirect 指示提供者更改从 Source 命名的表返回的所有行。 
adCmdStoredProc 指示提供者应该将 Source 视为存储的过程。 
adCmdUnknown 指示 Source 参数中的命令类型为未知。 
adCommandFile 指示应从 Source 命名的文件中恢复持久(保存的)Recordset。 
adExecuteAsync 指示应异步执行 Source。 
adFetchAsync 指示在提取 CacheSize 属性中指定的初始数量后,应该异步提取所有剩余的行。 
你肯定要选择adCmdTable即可。

解决方案 »

  1.   

    你是用ADO还DAO还是其它呢?如用ADO:
    具体调用的方法为:
    recordset.Open Source, ActiveConnection, CursorType, LockType, Options例子如下:
    Public Sub OpenX()   Dim cnn1 As ADODB.Connection
       Dim rstEmployees As ADODB.Recordset
       Dim strCnn As String
       Dim varDate As Variant   ' 打开连接。
          strCnn = "Provider=sqloledb;" & _
          "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
       Set cnn1 = New ADODB.Connection
       cnn1.Open strCnn
       
       ' 打开雇员表。
       Set rstEmployees = New ADODB.Recordset
       rstEmployees.CursorType = adOpenKeyset
       rstEmployees.LockType = adLockOptimistic
       rstEmployees.Open "employee", cnn1, , , adCmdTable   ' 将第一个雇员记录的受雇日期赋值给变量,然后更改受雇日期。
       varDate = rstEmployees!hire_date
       Debug.Print "Original data"
       Debug.Print "  Name - Hire Date"
       Debug.Print "  " & rstEmployees!fName & " " & _
          rstEmployees!lName & " - " & rstEmployees!hire_date
       rstEmployees!hire_date = #1/1/1900#
       rstEmployees.Update
       Debug.Print "Changed data"
       Debug.Print "  Name - Hire Date"
       Debug.Print "  " & rstEmployees!fName & " " & _
          rstEmployees!lName & " - " & rstEmployees!hire_date   ' 再查询 Recordset 并重置受雇日期。
       rstEmployees.Requery
       rstEmployees!hire_date = varDate
       rstEmployees.Update
       Debug.Print "Data after reset"
       Debug.Print "  Name - Hire Date"
       Debug.Print "  " & rstEmployees!fName & " " & _
          rstEmployees!lName & " - " & rstEmployees!hire_date   rstEmployees.Close
       cnn1.CloseEnd Sub参数说明:
    Source:可以为一个表名或者是SQL语句,你肯定要采用表名。
    ActiveConnection:为ADO连接
    CursorType:是游标类型
        adOpenForwardOnly (默认值)打开仅向前类型游标。 
        adOpenKeyset 打开键集类型游标。 
        adOpenDynamic 打开动态类型游标。 
        adOpenStatic 打开静态类型游标。 LockType:锁定类型
    adLockReadOnly (默认值)只读 — 不能改变数据。 
    adLockPessimistic 保守式锁定(逐个) — 提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录来完成。 
    adLockOptimistic 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用 Update 方法时才锁定记录。 
    adLockBatchOptimistic 开放式批更新 — 用于批更新模式(与立即更新模式相对)。 
    Options:可选,长整型值
    常量 说明 
    adCmdText 指示提供者应该将 Source 作为命令的文本定义来计算。 
    adCmdTable 指示 ADO 生成 SQL 查询以便从 Source 命名的表返回所有行。 
    adCmdTableDirect 指示提供者更改从 Source 命名的表返回的所有行。 
    adCmdStoredProc 指示提供者应该将 Source 视为存储的过程。 
    adCmdUnknown 指示 Source 参数中的命令类型为未知。 
    adCommandFile 指示应从 Source 命名的文件中恢复持久(保存的)Recordset。 
    adExecuteAsync 指示应异步执行 Source。 
    adFetchAsync 指示在提取 CacheSize 属性中指定的初始数量后,应该异步提取所有剩余的行。 
    你肯定要选择adCmdTable即可。
      

  2.   

    你是用ADO还DAO还是其它呢?如用ADO:
    具体调用的方法为:
    recordset.Open Source, ActiveConnection, CursorType, LockType, Options例子如下:
    Public Sub OpenX()   Dim cnn1 As ADODB.Connection
       Dim rstEmployees As ADODB.Recordset
       Dim strCnn As String
       Dim varDate As Variant   ' 打开连接。
          strCnn = "Provider=sqloledb;" & _
          "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
       Set cnn1 = New ADODB.Connection
       cnn1.Open strCnn
       
       ' 打开雇员表。
       Set rstEmployees = New ADODB.Recordset
       rstEmployees.CursorType = adOpenKeyset
       rstEmployees.LockType = adLockOptimistic
       rstEmployees.Open "employee", cnn1, , , adCmdTable   ' 将第一个雇员记录的受雇日期赋值给变量,然后更改受雇日期。
       varDate = rstEmployees!hire_date
       Debug.Print "Original data"
       Debug.Print "  Name - Hire Date"
       Debug.Print "  " & rstEmployees!fName & " " & _
          rstEmployees!lName & " - " & rstEmployees!hire_date
       rstEmployees!hire_date = #1/1/1900#
       rstEmployees.Update
       Debug.Print "Changed data"
       Debug.Print "  Name - Hire Date"
       Debug.Print "  " & rstEmployees!fName & " " & _
          rstEmployees!lName & " - " & rstEmployees!hire_date   ' 再查询 Recordset 并重置受雇日期。
       rstEmployees.Requery
       rstEmployees!hire_date = varDate
       rstEmployees.Update
       Debug.Print "Data after reset"
       Debug.Print "  Name - Hire Date"
       Debug.Print "  " & rstEmployees!fName & " " & _
          rstEmployees!lName & " - " & rstEmployees!hire_date   rstEmployees.Close
       cnn1.CloseEnd Sub参数说明:
    Source:可以为一个表名或者是SQL语句,你肯定要采用表名。
    ActiveConnection:为ADO连接
    CursorType:是游标类型
        adOpenForwardOnly (默认值)打开仅向前类型游标。 
        adOpenKeyset 打开键集类型游标。 
        adOpenDynamic 打开动态类型游标。 
        adOpenStatic 打开静态类型游标。 LockType:锁定类型
    adLockReadOnly (默认值)只读 — 不能改变数据。 
    adLockPessimistic 保守式锁定(逐个) — 提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录来完成。 
    adLockOptimistic 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用 Update 方法时才锁定记录。 
    adLockBatchOptimistic 开放式批更新 — 用于批更新模式(与立即更新模式相对)。 
    Options:可选,长整型值
    常量 说明 
    adCmdText 指示提供者应该将 Source 作为命令的文本定义来计算。 
    adCmdTable 指示 ADO 生成 SQL 查询以便从 Source 命名的表返回所有行。 
    adCmdTableDirect 指示提供者更改从 Source 命名的表返回的所有行。 
    adCmdStoredProc 指示提供者应该将 Source 视为存储的过程。 
    adCmdUnknown 指示 Source 参数中的命令类型为未知。 
    adCommandFile 指示应从 Source 命名的文件中恢复持久(保存的)Recordset。 
    adExecuteAsync 指示应异步执行 Source。 
    adFetchAsync 指示在提取 CacheSize 属性中指定的初始数量后,应该异步提取所有剩余的行。 
    你肯定要选择adCmdTable即可。
      

  3.   

    to  mwming(胡同浪子)谢谢,我说的是大锁定该表,连读取都不行!以独占的方式打开表
      

  4.   

    在事务中,select * from table with (tablockx)