Sql = "select * from 复印_登记信息 " Set ds = New ADODB.Recordset ds.Open Sql, Conn, 3, 3 ds.AddNew Image1.Picture = LoadPicture(App.Path & "\zp2.jpg") stm.Open stm.Type = adTypeBinary stm.LoadFromFile App.Path & "\zp2.jpg" '实际文件装进stream ds.Fields("图片").Value = stm.Read ds.Update stm.Close
时间: 2024-04-01 07:32:55 浏览: 139
这段代码的作用是向名为“复印_登记信息”的表中插入一条新记录,并将图片文件“zp2.jpg”保存到记录集中的字段“图片”中。
首先,通过 SQL 语句从数据库中查询“复印_登记信息”表的全部记录,并将结果存储在名为“ds”的 ADODB.Recordset 对象中。然后,通过 Recordset 对象的 AddNew 方法创建一条新记录。
接下来,使用 LoadPicture 函数加载图片文件“zp2.jpg”到 Image1 控件中,然后创建一个名为“stm”的 ADODB.Stream 对象,并通过 LoadFromFile 方法将实际的图片文件装进这个 Stream 对象中。接着,将 Stream 对象中的二进制数据通过 Recordset 对象的 Fields 属性和 Value 属性保存到名为“图片”的字段中。最后,调用 Update 方法将新记录插入到数据库中,并关闭 Stream 对象。
需要注意的是,如果图片文件过大,保存到数据库中可能会导致数据库过大,影响数据库性能。另外,如果需要从数据库中读取图片数据并显示,可以使用 ADODB.Stream 对象从记录集中读取二进制数据,并将其转换为图片格式进行显示。
相关问题
帮我优化以下代码,不使用ADO,实现将表"导出数据"每次以不同的10000条导出至EXECL文件中,直至数据记录导完,ExportData为临时表,每次“导出数据”不同的10000条记录,导出完成后需要删除。 Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim strFileName As String Dim i As Long Dim batchSize As Long '每批次导出的记录数 Dim batchCount As Long '批次计数器 Dim exportCount As Long '导出计数器 '设置导出文件路径和文件名 strFileName = "C:\Users\icd\Desktop\流水分割" batchSize = 10000 '每批次导出的记录数 Set db = CurrentDb() strSQL = "SELECT 导出数据.* FROM 导出数据" Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot) '循环导出数据 Do While Not rs.EOF If exportCount Mod batchSize = 0 Then '每批次导出到一个新的文件 If exportCount <> 0 Then DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "ExportData", strFileName & Format(batchCount, "000000") & ".xlsx", True End If batchCount = batchCount + 1 End If exportCount = exportCount + 1 rs.MoveNext Loop '导出最后一份文件 If exportCount Mod batchSize <> 0 Then DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "导出数据", strFileName & Format(batchCount, "000000") & ".xlsx", True End If rs.Close Set rs = Nothing Set db = Nothing
您可以使用ADODB.Recordset对象和Microsoft Excel对象来实现此操作。以下是优化后的代码:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String
Dim strFileName As String
Dim i As Long
Dim batchSize As Long '每批次导出的记录数
Dim batchCount As Long '批次计数器
Dim exportCount As Long '导出计数器
'设置导出文件路径和文件名
strFileName = "C:\Users\icd\Desktop\流水分割"
batchSize = 10000 '每批次导出的记录数
'连接到当前数据库
conn.Open CurrentProject.Connection
'执行查询语句
strSQL = "SELECT TOP " & batchSize & " * FROM 导出数据"
rs.Open strSQL, conn, adOpenStatic, adLockReadOnly
'创建Excel对象
Dim ExcelApp As Object
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = False
ExcelApp.DisplayAlerts = False
'循环导出数据
Do While Not rs.EOF
If exportCount Mod batchSize = 0 Then
'每批次导出到一个新的文件
If exportCount <> 0 Then
ExcelApp.ActiveWorkbook.SaveAs strFileName & Format(batchCount, "000000") & ".xlsx", 51
ExcelApp.ActiveWorkbook.Close False
End If
batchCount = batchCount + 1
ExcelApp.Workbooks.Add
End If
'将记录添加到Excel中
For i = 0 To rs.Fields.Count - 1
ExcelApp.Cells(exportCount Mod batchSize + 1, i + 1).Value = rs.Fields(i).Value
Next i
exportCount = exportCount + 1
rs.MoveNext
Loop
'导出最后一份文件
If exportCount Mod batchSize <> 0 Then
ExcelApp.ActiveWorkbook.SaveAs strFileName & Format(batchCount, "000000") & ".xlsx", 51
ExcelApp.ActiveWorkbook.Close False
End If
'关闭Excel对象
ExcelApp.Quit
'删除临时表
CurrentDb.Execute "DROP TABLE ExportData"
'关闭记录集和连接
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
请注意,此代码使用了ADODB连接和记录集对象,而不是DAO对象。还使用了Microsoft Excel对象来导出数据。此外,为了避免在每次循环迭代时打开和关闭Excel文件,我将Excel对象定义为一个变量,并在循环之外创建和关闭它。最后,我添加了代码来删除临时表。
vb6ADODB.Stream保存文件到数据库怎么实现
在 VB6 中,可以使用 ADODB.Stream 对象保存文件到数据库中。下面是一个简单的示例代码:
```
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim stream As New ADODB.Stream
'打开数据库连接
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb"
'打开记录集
rs.Open "mytable", conn, adOpenKeyset, adLockOptimistic
'设置 Stream 对象属性
stream.Type = adTypeBinary
stream.Open
stream.LoadFromFile "C:\myfile.txt"
'将 Stream 对象保存到数据库中
rs.AddNew
rs.Fields("myfield").Value = stream.Read
rs.Update
'关闭对象
rs.Close
conn.Close
```
上述代码中,我们首先创建了一个 ADODB.Stream 对象,然后设置了它的 Type 属性为 adTypeBinary,表示我们要保存二进制数据。然后通过 LoadFromFile 方法将文件加载到 Stream 对象中。接着,我们打开了数据库连接和记录集,并将 Stream 对象保存到数据库中。最后,关闭了所有对象。
需要注意的是,保存到数据库中的文件大小应该控制在合理的范围内,避免数据库过大。同时,如果需要在程序中读取保存的文件,也需要使用 ADODB.Stream 对象从数据库中读取二进制数据并写入到文件中。
阅读全文
相关推荐
















