编了个程序,将扫描硬盘全文件有30多万条记录放到数据集中,recordset.用copyfromRecordset方法相当好,可是sheet只能有65355条记录.现在的解决方法是将数据集的数据存到mdb中,再经过sql处理。
问:CopyFromRecordSet可以将数据集发到excel
数据集可以发送到mdb中,如何操作。
问:CopyFromRecordSet可以将数据集发到excel
数据集可以发送到mdb中,如何操作。
解决方案 »
- 搜索不包含指定字符串的目录,或用批处理.请高手指教
- ListView如何在填充时提升效率?现在是逐行填充
- 我要怎么调用已经做好的报表呀?
- 我的附件为何改不了名字?
- 征求意见,提的爽的大大有分(求求你们进来吧~)
- 高分求救,vb安装程序,不能直接拷贝文件夹
- 如何根据数据库表中的记录数确定MSFlexGrid控件的行数.
- 谁知道合并exe文件的原理,一定给分~~!!!!
- 字符串合并-帮忙呀
- ##???asc()函数出错???##
- 为什么我动态加载的WEBBROWSER控件只要窗口最小化后再恢复就就不可见了?
- 小弟是个绝对的新手!!!!跪求!!!!跪求!!!!跪求!!!!跪求!!!!跪求!!!!跪求!!一个对大虾们来说绝对简单的问题
用纪录集打开该表,这样用扫描结果往纪录集插入纪录(当然也要调用Update进行保存),就直接追加到数据库中了。
该范例使用 AddNew 方法创建具有指定名称的新记录。Public Sub AddNewX() Dim cnn1 As ADODB.Connection
Dim rstEmployees As ADODB.Recordset
Dim strCnn As String
Dim strID As String
Dim strFirstName As String
Dim strLastName As String
Dim booRecordAdded As Boolean' 打开连接。
Set cnn1 = New ADODB.Connection
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=;"
cnn1.Open strCnn
' 打开 Employee 表。
Set rstEmployees = New ADODB.Recordset
rstEmployees.CursorType = adOpenKeyset
rstEmployees.LockType = adLockOptimistic
rstEmployees.Open "employee", cnn1, , , adCmdTable ' 从用户获取数据,雇员 ID 的格式应为:
' 名、中间名和姓的三个首字母,
' 五位数字,以及性别标识 M 或 F。
' 例如,Bill Sornsin 的雇员 ID 为:B-S55555M。
strID = Trim(InputBox("Enter employee ID:"))
strFirstName = Trim(InputBox("Enter first name:"))
strLastName = Trim(InputBox("Enter last name:")) ' 只在用户输入姓和名之后进行。
If (strID <> "") And (strFirstName <> "") _
And (strLastName <> "") Then rstEmployees.AddNew
rstEmployees!emp_id = strID
rstEmployees!fname = strFirstName
rstEmployees!lname = strLastName
rstEmployees.Update
booRecordAdded = True ' 显示新添加的数据。
MsgBox "New record: " & rstEmployees!emp_id & " " & _
rstEmployees!fname & " " & rstEmployees!lname Else
MsgBox "Please enter an employee ID, " & _
"first name, and last name."
End If
' 删除新记录,因为这只是演示。
cnn1.Execute "DELETE FROM employee WHERE emp_id = '" & strID & "'"
rstEmployees.Close
cnn1.CloseEnd Sub
CopyFromRecordset、Sheet 对象是 Excel;mdb 文件是 Access。你的问题中看不到两者有什么联系。
我有现成的数据集,如何加到access中。
如果允许在 mdb 上进行用户操作,那么可以从已有的 Excel 中导入数据。
在AutoCAD遍历图形文件的所有实体数据到excel,用CopyFromRecordset效率要比用ExcelAndMdbData.xlSheet.Cells(ii, 1) = .Backward方法快数据倍.遍历图形实体数据后,用CopyFromRecordset到excel用时为 遍历图形实体数据到数据集,用时:21:35:03-21:36:35
数据集:用CopyFromRecordset到excel用时为 21:36:35 -- 21:36:35 而用逐行逐列循环,将ExcelAndMdbData.xlSheet.Cells(ii, 1) = .Backward输到excel,用时约3分钟.
11:21:40
300000
11:37:55
Private Function CreateConnection(AccessDbName As String) As ADODB.Connection
Dim ConStr As String, Cnn As ADODB.Connection
Set Cnn = New ADODB.Connection
With Cnn
.CursorLocation = adUseClient
.Provider = "Microsoft.Jet.OLEDB.4.0"
ConStr = "Data Source =" & ThisWorkbook.Path & AccessDbName
Cnn.Open ConStr
End With
'Debug.Print "Have been Connection " & ThisWorkbook.Path & AccessDbName
Set CreateConnection = Cnn
End Function
Private Function CreateAccessDataTable(AccessDbName As String)
Dim Cnn As ADODB.Connection, Cmd As ADODB.Command
Set Cnn = CreateConnection(AccessDbName)
Set Cmd = New ADODB.Command
Set Cmd.ActiveConnection = Cnn
Cmd.CommandText = "Create table aa(aa char(10))"
Cmd.Execute
End Function
Private Function AddDataToAccessDataTable(AccessDbName As String)
Dim Cnn As ADODB.Connection, Cmd As ADODB.Command
Dim rsDataTable As ADODB.Recordset
Set Cnn = CreateConnection(AccessDbName)
Set rsDataTable = New ADODB.Recordset
With rsDataTable
.CursorType = adOpenKeyset
.LockType = adLockPessimistic
.Open "aa", Cnn, , , adCmdTable
End With
With rsDataTable
For ii = 1 To 300000
.AddNew
!bb = ii
Next ii
.UpdateBatch
End With
Debug.Print rsDataTable!bb
End Function
Sub mm()
'CreateAccessDB ("\Test.Mdb")
'CreateAccessDataTable ("\Test.Mdb")
Debug.Print Time()
AddDataToAccessDataTable ("\Test.Mdb")
Debug.Print Time()
End Sub