求救,菜鸟问题:vb中,ado怎么向access插入图像!!!

wang_jian0_0 2005-10-17 05:16:25
……………………………………。。
...全文
245 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
孙小雄 2005-10-19
  • 打赏
  • 举报
回复
你看这篇文章吧



使用Data控件访问数据库





  很多软件都有保存用户设置的功能,以便用户下一次启动时其程序界面及相关设置都是自己最中意和习惯的,这使得软件具有人性化,用户用起来感到亲切。用VB编写的软件可以通过多种途径实现此功能,这里介绍用数据库方法来保存用户的个性化设置。

  假设我们已经完成了一个用TextBox做编辑栏的字处理程序,该程序提供了让用户对编辑栏背景色和字体的设置菜单,现在我们想让用户所作的设置能保存下来。怎么办呢?


  第一步:给窗体添加一个Data控件。

  第二步:用Access建立一个名为Pad的数据库,在库中建立一个表Myset,给表添加四个字段:backcolor(数据),forecolor(文本),fontname(文本),fontsize(文本)。注意:请将库文件存入程序所在目录。

  如果你的机器没安装有Access,可通过VB建库。

  第三步:编写如下代码:


在Form_Load事件添加:
'定位库文件路径
Data1.DatabaseName = App.Path + "\rtSet.mdb"
Data1.RecordSource = "MySet"

'设置背景色
Private Sub mnuBackColorSetting_Click()
CommonDialog1.Flags = cdlCCFullOpen
CommonDialog1.ShowColor
On Error GoTo err
Data1.Recordset.Edit
err:
If err.Number = 3021 Then
Data1.Recordset.AddNew
End If
Data1.Recordset.Fields("backcolor") = CommonDialog1.Color
Data1.Recordset.Update
Text1.BackColor = CommonDialog1.Color
End Sub

'设置字体
Private Sub mnuFontSetting_Click()
CommonDialog1.Flags = cdlCFEffects Or cdlCFBoth
CommonDialog1.ShowFont
On Error GoTo FontErr
Data1.Recordset.Edit
FontErr:
If err.Number = 3021 Then
Data1.Recordset.AddNew
End If
Data1.Recordset.Fields("fontsize") = CommonDialog1.FontSize
Data1.Recordset.Fields("forecolor") = CommonDialog1.Color
Data1.Recordset.Fields("fontname") = CommonDialog1.FontName
Data1.Recordset.Update

Text1.ForeColor = CommonDialog1.Color
Text1.Font.Name = CommonDialog1.FontName
Text1.Font.Size = CommonDialog1.FontSize

'窗体的Activate事件
Private Sub Form_Activate()
On Error Resume Next
Text1.BackColor = Data1.Recordset.Fields("backcolor")
Text1.Font.Size = Data1.Recordset.Fields("fontsize")
Text1.ForeColor = Data1.Recordset.Fields("forecolor")
Text1.Font.Name = Data1.Recordset.Fields("fontname")
End Sub


孙小雄 2005-10-19
  • 打赏
  • 举报
回复
http://221.8.30.109/vb/data.zip
wang_jian0_0 2005-10-19
  • 打赏
  • 举报
回复
.SaveToFile StrPicTemp, adSaveCreateOverWrite
第二个程序中,这句他说 参数类型不正确

英文我看不懂啊。。
vansoft 2005-10-19
  • 打赏
  • 举报
回复
ADODB.Stream 2.5以上版本支持,
上微軟的官方網站搜索,可以得到微軟提供的示例代碼。
我就是在那學的。
wang_jian0_0 2005-10-19
  • 打赏
  • 举报
回复
faysky2()

第二个程序,能不能和数据窗口绑定?
wang_jian0_0 2005-10-18
  • 打赏
  • 举报
回复
。。。看不懂。。哭啊
孙小雄 2005-10-18
  • 打赏
  • 举报
回复
http://221.8.30.109/vb/data.zip
wang_jian0_0 2005-10-18
  • 打赏
  • 举报
回复
Dim StmPic As ADODB.Stream
他说用户定义类型未定义.
wang_jian0_0 2005-10-18
  • 打赏
  • 举报
回复
我是用adodc绑定数据库的……
faysky2 2005-10-18
  • 打赏
  • 举报
回复
Dim StmPic As ADODB.Stream
他说用户定义类型未定义.
-----------------------
引用Ado2.5以上版本(工程->引用->Microsoft ActiveX Data Objects 2.X Library
wang_jian0_0 2005-10-18
  • 打赏
  • 举报
回复
能不能把怎样插入到access的过程给我讲一下.
faysky2 2005-10-17
  • 打赏
  • 举报
回复
窗体上放:Command1 Command2 Picture1 Picture2 CommonDialog1,表里的字段pic设置为ole类型
------------------------
Dim StrPicTemp As String
Dim rs As New ADODB.Recordset
Dim conn As New ADODB.Connection
Private Sub Command1_Click()
On Error GoTo err
Dim StmPic As ADODB.Stream
'保存你所选择的图像
Set StmPic = New ADODB.Stream
StmPic.Type = adTypeBinary '指定流是二进制类型
CommonDialog1.ShowOpen
Picture1.Picture = LoadPicture(CommonDialog1.FileName)
StmPic.Open '将数据获取到Stream对象中
StmPic.LoadFromFile (CommonDialog1.FileName) '将选择的图像加载到打开的StmPic中
rs.AddNew
rs.Fields("pic").Value = StmPic.Read '从StmPic对象中读取数据
rs.Update
StmPic.Close
Exit Sub
err:
MsgBox err.Description
End Sub

Private Sub Command2_Click()
Dim StmPic As ADODB.Stream
On Error GoTo err
'读取显示数据库中的图像
Set StmPic = New ADODB.Stream
With StmPic
.Type = adTypeBinary
.Open
.Write rs.Fields("pic") '写入数据库中的数据至Stream中
.SaveToFile StrPicTemp, adSaveCreateOverWrite '将Stream中数据写入临时文件中
.Close
End With
Picture2.Picture = LoadPicture(StrPicTemp) '用Picture控件显示图像
Exit Sub
err:
MsgBox err.Description
End Sub

Private Sub Form_Load()
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.path & "\Test.mdb;Jet OLEDB:DataBase password=12345;"
conn.CursorLocation = adUseClient
rs.Open "Table1", conn, 3, adLockOptimistic
End Sub
winehero 2005-10-17
  • 打赏
  • 举报
回复
'使用该字段和图片文件作参数,执行如下过程
'前提是连接数据库,取出该字段对象blobColumn

Public Function AppendBlobFromFile(blobColumn As ADODB.Field, ByVal FileName As String) As Boolean
Dim FileNumber As Integer
Dim DataLen As Long
Dim Chunks As Long
Dim ChunkAry() As Byte
Dim ChunkSize As Long
Dim Fragment As Long
Dim lngI As Long

On Error GoTo ErrorHandle
AppendBlobFromFile = False
ChunkSize = 2048

FileNumber = FreeFile
Open FileName For Binary Access Read As FileNumber
DataLen = LOF(FileNumber)
If blobColumn Is Nothing Then Exit Function

If DataLen = 0 Then
Close FileNumber
AppendBlobFromFile = True
Exit Function
End If

Chunks = DataLen \ ChunkSize
Fragment = DataLen Mod ChunkSize

If Fragment > 0 Then
ReDim ChunkAry(Fragment - 1)
Get FileNumber, , ChunkAry()
blobColumn.AppendChunk ChunkAry
End If

ReDim ChunkAry(ChunkSize - 1)
For lngI = 1 To Chunks
Get FileNumber, , ChunkAry()
blobColumn.AppendChunk ChunkAry
Next lngI

Close FileNumber
AppendBlobFromFile = True

Exit Function
ErrorHandle:
AppendBlobFromFile = False
End Function
wang_jian0_0 2005-10-17
  • 打赏
  • 举报
回复
打错字了。。……是图片——不是图像.

7,764

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧