On Error GoTo errh:
这句是不是搞错了,多了个冒号
这句是不是搞错了,多了个冒号
解决方案 »
- 用VB提取數據庫資料,然後用EXCEL作報表輸入,要怎麼搞啊?請各位大俠幫幫小弟!!!
- 服务器端连接问题
- 深圳招聘vb程序员,应届毕业生亦可。版主手下留情
- 怎么样把浮点数转换为字节数组,怎样再把字节数组转换为浮点数?
- 不能初始化数据绑定?是打包时漏了什么文件?
- vb能否用api函数直接结束内存中某一进程!?
- VB可以访问游戏杆吗?如果可以拿怎样访问?
- VB类的问题!!!帮忙看看!!!
- 关于datagrid的问题
- 怎样动态真加控件,并为其单独编事件?谢谢!!
- 请问哪有VB6的补丁
- 泰山兄:你是报表控件高手,请问编译后,凡调用datareport的窗体出错:定义的应用程序或对象错误,是什么原因啊?
Public Sub save_picture()
Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset
Dim bit() As Byte
dim varPath as string '图片的路径 cnn.open "连接数据库的字符串"
sSql = "SELECT * FROM 表 WHERE 关键字='" & 关键值 & "'"
'选出要增加或修改图片记录的记录
rst.Open sSql, cnn, adOpenKeyset, adLockOptimistic
If Not (rst.EOF And rst.BOF) Then
If VarPath = "" Then
' 然后将字节数组的内容写入数据库即可
rst.Fields("INFO_PICT") = ""
rst.UPDATE
Else
Open VarPath For Binary As #1
ReDim bit(LOF(1)) As Byte
Get 1, 1, bit
Close 1
' 然后将字节数组的内容写入数据库即可
rst.Fields("INFO_PICT").AppendChunk bit
rst.UPDATE
End If
End If
end sub 取:
Public Sub show_picture()
Dim REC As Recordset
Dim sSql As String
Dim I As Integer
Set REC = New Recordset
Dim bit1() As Byte
Dim sa As String
sSql = "SELECT * FROM 表 WHERE 关键字 ='" & 关键值 & "'"
REC.Open sSql, Conn, adOpenStatic, adLockOptimistic, adCmdText
If REC.EOF Or REC.BOF Then
Exit Sub
Else
Picture1.Picture = Nothing
If REC("INFO_PICT").ActualSize > 0 Then
bit1 = REC.Fields("图片").GetChunk(REC("图片").ActualSize)
'然后将字节数组的内容拼装成文件即可
Open "c:\1.bmp" For Binary As #1
Put 1, 1, bit1
Close 1
Picture1.Picture = LoadPicture("c:\1.bmp")
kill ("c:\1.bmp") End If
End If
rec.close
Set REC = Nothing
Exit Sub
Err:
MsgBox "读取图片出错!", OKOnly, "系统提示"
End Sub
你的程序我想不行,因为大于64KB字节,UPDATE就不执行。
哎,舍不得呀,还是贴出来了...不一定好用,这是SQL SERVER的....
没有文件大小限制.'***********************************************
Dim Conn As New ADODB.Connection
Dim FileName As String
Const BLOCKSIZE = 4096
Dim ADORst As New ADODB.Recordset 'ADODB Recordset
Dim ADOFld As ADODB.FieldPrivate Sub Command1_Click()Save_Click Dim arsfile As ADODB.Recordset
Dim aa As ADODB.Record
Dim n As Long
Dim arrBytes() As Byte
Set arsfile = New Recordset
arsfile.Open "select * from A_file where id=2", Conn, adOpenStatic, adLockOptimisticn = arsfile.Fields("word").ActualSize
ReDim arrBytes(1 To n) As Byte
arrBytes = arsfile.Fields("word").GetChunk(n) Open App.Path & "\test2.doc" For Binary As #1
Put #1, , arrBytes
Close #1End SubPrivate Sub Form_Load()
Set Conn = New Connection
Conn.CursorLocation = adUseClient
Conn.Provider = "MSDataShape"
Conn.Open "driver={sql server};server=10.0.0.1;uid=sa;pwd=;database=cmstest;"
ADORst.Open "A_File", Conn, adOpenDynamic, adLockOptimistic
'Set ADOFld.Recordset = ADORst '
End Sub Private Sub SaveToDB(ByRef Fld As ADODB.Field, DiskFile As String)
Dim byteData() As Byte
Dim NumBlocks As Long
Dim FileLength As Long
Dim LeftOver As Long
Dim SourceFile As Long
Dim i As Long
SourceFile = FreeFile
Open App.Path & "\test.doc" For Binary Access Read As SourceFile
FileLength = LOF(SourceFile)
If FileLength = 0 Then
Close SourceFile
MsgBox DiskFile
Else
NumBlocks = FileLength \ BLOCKSIZE
LeftOver = FileLength Mod BLOCKSIZE
Fld.Value = Null
ReDim byteData(BLOCKSIZE)
For i = 1 To NumBlocks
Get SourceFile, , byteData()
Fld.AppendChunk byteData()
Next i
ReDim byteData(LeftOver)
Get SourceFile, , byteData()
Fld.AppendChunk byteData()
Close SourceFile
End If
End Sub Private Sub Save_Click()
ADORst.AddNew
ADORst("id").Value = 2
Set ADOFld = ADORst("word")
Call SaveToDB(ADOFld, FileName) ADORst.Update
End Sub
reDim ChunkAry(Fragment - 1)
Get filenumber, , ChunkAry()
blobColumn.AppendChunk ChunkAry
ReDim ChunkAry(ChunkSize - 1)
For i = 1 To Chunks
Get filenumber, , ChunkAry() ’ 从文件中得到2048字节的内容
blobColumn.AppendChunk ChunkAry 把得到的内容给A5 字段
Next
...
这段程序我原来用过,我也说不太清楚为什么不行,原理上是可以,但是实际上图片一大确实存不进去(通过循环来存进数据库)。
后来我就想办法进行一次行存进数据库,我在存进数据库前将图片数据存进数组,然后一次性往数据库中存放,下面的代码和你的有不同之处:
...
Open VarPath For Binary As #1 'varpath图片路径名
ReDim bit(LOF(1)) As Byte
Get 1, 1, bit
Close 1
' 然后将字节数组的内容写入数据库即可
rst.Fields("INFO_PICT").AppendChunk bit
rst.UPDATE
.....
原理上都一样,但实际效果不一样,你可以试一试。你那种方法我原来能存900k左右的图片,超过1M就不行,现在没有大小限制了。
你的程序我试了,还是不行和我的程序出的问题一样
在ADO中 ursorLocation 的属性设置为 adUseClient的目是什么
为什么不能设置为 adUseServer
下面这段内容我实在理解不了,请高手指点!!
adUseClient 使用由本地游标库提供的客户端游标。本地游标引擎通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。adUseClientBatch 与 adUseClient 同义,也支持向后兼容性。 adUseServer 默认值。使用数据提供者或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。