Option Explicit'工程->引用->Microsoft ActiveX Data Object 2.6 Library (后面为版本号) Dim cn As New ADODB.Connection, rs As New ADODB.Recordset'保存 Private Sub Command1_Click() Dim stmCon As New Stream
If rs.State = adStateOpen Then rs.Close cn.Execute "DELETE FROM TABLENAME" rs.Open "SELECT * FROM TABLENAME", cn, adOpenDynamic, adLockOptimistic rs.AddNew rs!ID = "12" rs!Name = "bb" rs.Fields("PHOTO") = stmCon.Read rs.Update
stmCon.Close Set stmCon = Nothing End Sub'打开 Private Sub Command2_Click() Dim stmCon As New Stream
If rs.State = adStateOpen Then rs.Close rs.Open "SELECT * FROM TABLENAME", cn, adOpenForwardOnly, adLockReadOnly If Not rs.EOF Then stmCon.Type = adTypeBinary stmCon.Open stmCon.Write (rs.Fields("PHOTO").Value) stmCon.SaveToFile "C:\aa.bmp", adSaveCreateOverWrite End If Image1.Picture = LoadPicture("C:\aa.bmp") End SubPrivate Sub Command3_Click() rs.Open "SELECT * FROM TEST", cn, 3, 3 End SubPrivate Sub Form_Load() 'On Error GoTo Errhandle cn.ConnectionString = "Driver={SQL Server};SERVER=DataServer;DATABASE=zxzx;UID=information;PWD=information*&#" 'cn.ConnectionString = "DBQ=D:\My Documents\db2.mdb;DefaultDir=" & _ App.Path & ";Driver={Microsoft Access Driver (*.mdb)};" & _ "DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;" & _ "MaxBufferSize=512;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;" & _ "Threads=3;UID=ADMIN;UserCommitSync=Yes;PWD=;" 'cn.ConnectionString = "Driver={MySQL};Option=262144;port=1024;stmt=;Server=192.168.2.126;DataBase=mysql;User=root;Password="
cn.Open
Exit Sub Errhandle: MsgBox Err.Description, vbExclamation End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) On Error Resume Next rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub这是保存图片的,你把文件改成文本的就可以了!!
'http://support.microsoft.com/default.aspx?scid=kb;EN-US;258038'************************************************************************* '** '** 使用 ADODB.Stream 保存/读取文件到数据库 '** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本 '** '** ----- 数据库连接字符串模板 --------------------------------------- '** ACCESS数据库 '** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _ '** ";Data Source=数据库名" '** '** SQL数据库 '** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _ '** "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名" '**'保存文件到数据库中 Sub s_SaveFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset Dim iConcStr As String
'数据库连接字符串 iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _ ";Data Source=F:\csdn_vb\database\保存图片\img.mdb" Dim iConc As ADODB.Connection Set iConc = New ADODB.Connection
iConc.Open iConcStr '读取文件到内容 Set iStm = New ADODB.Stream With iStm .Type = adTypeBinary '二进制模式 .Open .LoadFromFile App.Path + "\com.doc" End With
'打开保存文件的表 Set iRe = New ADODB.Recordset With iRe .Open "select * from img", iConc, 1, 3 .AddNew '新增一条记录 .Fields("photo") = iStm.Read .Update End With
'完成后关闭对象 iRe.Close iStm.Close End SubSub s_ReadFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset Dim iConc As String
'打开表 Set iRe = New ADODB.Recordset iRe.Open "img", iConc, adOpenKeyset, adLockReadOnly iRe.Filter = "id=3" '比如单击datagrid后找到id=3的纪录
'保存到文件 Set iStm = New ADODB.Stream With iStm .Mode = adModeReadWrite .Type = adTypeBinary .Open .Write iRe("photo") .SaveToFile "c:\com.doc" End With
OLE1.SourceDoc = "c:\\com.doc" OLE1.Action = 1 'use the old action method OLE1.SizeMode = vbOLESizeAuttoSize '调节对象大小使其正好充满OLE容器控件 'Picture1.Picture = LoadPicture("c:\tesd.bmp")
'关闭对象 iRe.Close iStm.Close End SubPrivate Sub Command1_Click() Call s_ReadFile End SubPrivate Sub Command2_Click() Call s_SaveFile End Sub
Dim rss As New ADODB.Recordset Dim stm As New Stream rss.Open "sql.str", objCnn, adOpenKeyset, adLockOptimistic Set stm = New ADODB.Stream With stm .Mode = adModeReadWrite .Type = adTypeBinary .Open .Write rss.Fields("文本") End With此ole对象是word,怎么打开这个stm, 在access中,可以打开此ole对象
这里保存,看我的代码 .SaveToFile "c:\com.doc" End With 使用ole打开这个文件,经过测试 OLE1.SourceDoc = "c:\\com.doc" OLE1.Action = 1 'use the old action method OLE1.SizeMode = vbOLESizeAuttoSize '调节对象大小使其正好充满OLE容器控件
to 龙卷风: 但是当word版本与,ole对象的word版本不同时,要求转换格式,无法打开 "双击包含一个 OLE 对象的控件将会启动创建该对象的应用程序,并允许它被编辑。"--------msdn 双击类型为ole对象的字段,可以打开它。如何在VB中实现这各操作。
直接打开行不行 Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub Command1_Click() ShellExecute Me.hwnd, "open", "c:\com.doc", vbNullString, vbNullString, 3 End Sub
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset'保存
Private Sub Command1_Click()
Dim stmCon As New Stream
stmCon.Type = adTypeBinary
stmCon.Open
stmCon.LoadFromFile "C:\bb.bmp"
If rs.State = adStateOpen Then rs.Close
cn.Execute "DELETE FROM TABLENAME"
rs.Open "SELECT * FROM TABLENAME", cn, adOpenDynamic, adLockOptimistic rs.AddNew
rs!ID = "12"
rs!Name = "bb"
rs.Fields("PHOTO") = stmCon.Read
rs.Update
stmCon.Close
Set stmCon = Nothing
End Sub'打开
Private Sub Command2_Click()
Dim stmCon As New Stream
If rs.State = adStateOpen Then rs.Close
rs.Open "SELECT * FROM TABLENAME", cn, adOpenForwardOnly, adLockReadOnly
If Not rs.EOF Then
stmCon.Type = adTypeBinary
stmCon.Open
stmCon.Write (rs.Fields("PHOTO").Value)
stmCon.SaveToFile "C:\aa.bmp", adSaveCreateOverWrite
End If Image1.Picture = LoadPicture("C:\aa.bmp")
End SubPrivate Sub Command3_Click()
rs.Open "SELECT * FROM TEST", cn, 3, 3
End SubPrivate Sub Form_Load()
'On Error GoTo Errhandle
cn.ConnectionString = "Driver={SQL Server};SERVER=DataServer;DATABASE=zxzx;UID=information;PWD=information*&#"
'cn.ConnectionString = "DBQ=D:\My Documents\db2.mdb;DefaultDir=" & _
App.Path & ";Driver={Microsoft Access Driver (*.mdb)};" & _
"DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;" & _
"MaxBufferSize=512;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;" & _
"Threads=3;UID=ADMIN;UserCommitSync=Yes;PWD=;"
'cn.ConnectionString = "Driver={MySQL};Option=262144;port=1024;stmt=;Server=192.168.2.126;DataBase=mysql;User=root;Password="
cn.Open
Exit Sub
Errhandle:
MsgBox Err.Description, vbExclamation
End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
On Error Resume Next
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub这是保存图片的,你把文件改成文本的就可以了!!
'**
'** 使用 ADODB.Stream 保存/读取文件到数据库
'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
'**
'** ----- 数据库连接字符串模板 ---------------------------------------
'** ACCESS数据库
'** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
'** ";Data Source=数据库名"
'**
'** SQL数据库
'** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
'** "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
'**'保存文件到数据库中
Sub s_SaveFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcStr As String
'数据库连接字符串
iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=F:\csdn_vb\database\保存图片\img.mdb"
Dim iConc As ADODB.Connection
Set iConc = New ADODB.Connection
iConc.Open iConcStr
'读取文件到内容
Set iStm = New ADODB.Stream
With iStm
.Type = adTypeBinary '二进制模式
.Open
.LoadFromFile App.Path + "\com.doc"
End With
'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "select * from img", iConc, 1, 3
.AddNew '新增一条记录
.Fields("photo") = iStm.Read
.Update
End With
'完成后关闭对象
iRe.Close
iStm.Close
End SubSub s_ReadFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConc As String
'数据库连接字符串
iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=F:\csdn_vb\database\保存图片\img.mdb"
'打开表
Set iRe = New ADODB.Recordset
iRe.Open "img", iConc, adOpenKeyset, adLockReadOnly
iRe.Filter = "id=3" '比如单击datagrid后找到id=3的纪录
'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe("photo")
.SaveToFile "c:\com.doc"
End With
OLE1.SourceDoc = "c:\\com.doc"
OLE1.Action = 1 'use the old action method
OLE1.SizeMode = vbOLESizeAuttoSize '调节对象大小使其正好充满OLE容器控件 'Picture1.Picture = LoadPicture("c:\tesd.bmp")
'关闭对象
iRe.Close
iStm.Close
End SubPrivate Sub Command1_Click()
Call s_ReadFile
End SubPrivate Sub Command2_Click()
Call s_SaveFile
End Sub
Dim stm As New Stream
rss.Open "sql.str", objCnn, adOpenKeyset, adLockOptimistic
Set stm = New ADODB.Stream
With stm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write rss.Fields("文本")
End With此ole对象是word,怎么打开这个stm,
在access中,可以打开此ole对象
.SaveToFile "c:\com.doc"
End With
使用ole打开这个文件,经过测试
OLE1.SourceDoc = "c:\\com.doc"
OLE1.Action = 1 'use the old action method
OLE1.SizeMode = vbOLESizeAuttoSize '调节对象大小使其正好充满OLE容器控件
但是当word版本与,ole对象的word版本不同时,要求转换格式,无法打开
"双击包含一个 OLE 对象的控件将会启动创建该对象的应用程序,并允许它被编辑。"--------msdn
双击类型为ole对象的字段,可以打开它。如何在VB中实现这各操作。
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub Command1_Click()
ShellExecute Me.hwnd, "open", "c:\com.doc", vbNullString, vbNullString, 3
End Sub
我的示例中也是这样
上回的问题解决了,应该在最后加上OLE1.ReadFromFile,
爽了我半天,可是今天问题又来了,
仍然避不开上回遇到的乱码问题,求各位解决以下...
重新UPDATE吧,