手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

利用Vb保存一幅图到Access数据库

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


    Height = 255

    Left = 480

    TabIndex = 4

    Top = 4800

    Width = 495

   End

    Begin VB.Label Label2

    Caption = "内容"

    Height = 255

    Left = 480

    TabIndex = 1

    Top = 960

    Width = 495

   End

    Begin VB.Label Label1

    Caption = "标题"

    Height = 255

    Left = 480

    TabIndex = 0

     Top = 503

    Width = 495

   End

   End

    Attribute VB_Name = "finput"

    Attribute VB_GlobalNameSpace = False

    Attribute VB_Creatable = False

    Attribute VB_PredeclaredId = True

    Attribute VB_Exposed = False

    Option Explicit



    Private Sub Command1_Click()

    CommonDialog1.DefaultExt = App.Path

    CommonDialog1.Filter = "Pictures (*.bmp;*.jpg;*.gif) *.bmp;*.jpg;*.gif" '注意要加引号

    CommonDialog1.ShowOpen

    Text2.Text = CommonDialog1.FileName

   End Sub



    '保存文档的标题,和文档的内容,以及相应的图片

    Private Sub Command2_Click()

    '判断是否所写的文档是否已经存在数据库了,如果没有,则保存,否则

    '不能保存(利用一个"临时rs"查询标题)

    Dim subject, sql As String

    Dim temp_photo As Stream

    Dim rs As New ADODB.Recordset

    Dim rs1 As New ADODB.Recordset '定义rs1得到类别的id

    Dim class_id As Integer '定义得到类别的ID号

    subject = Trim(Text1.Text) '获得标题

    sql = "select * from paper where subject='" subject "'"

    '开始查询

    rs.Open sql, cn, adOpenDynamic, adLockPessimistic

    '判断标题是否存在



    If rs.EOF Then '文档不存在,开始保存

    Dim tempdate As Date '临时时间变量

    tempdate = Date





    rs.AddNew



    '得到类别的ID

    sql = "select cl_number,class from class where class='" Combo1.Text "'"

    rs1.Open sql, cn, adOpenDynamic, adLockPessimistic

    rs("class") = rs1("cl_number")

    rs1.Close '关闭rs1



    rs("subject") = subject

    rs("content") = RichTextBox1.Text

    If Trim(Text2.Text) <> "" Then '假如有图片,开始得到图片文件

    Dim image_data() As Byte '定义图片保存的变量



    Open Trim(Text2.Text) For Binary As #1

    ReDim image_data(LOF(1) - 1)

    Get #1, , image_data()

    rs("photo").AppendChunk image_data()

    End If



    rs("inputtime") = tempdate

    rs("modifytime") = tempdate

    rs.Update '可能出现保存不成功的现象,所以要考虑可能会出现错误

    MsgBox ("保存成功!") '保存成功

    Text1.Text = ""

    RichTextBox1.Text = ""

    Text2.Text = "" '此处清空选择图片的框



    Else '存在,不能保存,显示错误信息

    MsgBox ("文档已经存在,不能保存,请修改!")

   End If



    rs.Close '关闭结果集

   End Sub



    Private Sub Command3_Click()

    Unload Me

    End Sub



    Private Sub Form_Load()

    Me.Left = 0

    Me.Top = 0

    fmain.Width = Me.Width 340

    fmain.Height = Me.Height 1550

    '显示文档的类别

    Dim rs As New ADODB.Recordset

    Dim sql As String

    sql = "select * from class"

    rs.Open sql, cn, 1, 1

    Do While Not rs.EOF '类别不空,则添加进去,对应类别的number为索引

    Combo1.AddItem rs("class")

    rs.MoveNext

   Loop

    If rs.RecordCount <> 0 Then '只有查询结果集不为空时,才能设定显示第一项,利用纪录总数不为0判定

    Combo1.ListIndex = 0 '不能用not rs.eof判定,因为现在cursor已经到了最后

   End If

    rs.Close

   End Sub

   当然,在上面这段代码中,还用到了另一个表(表名为class),字段如下:







   字段名 类型 意义

   class 文本 文档类别的名称

   cl_number 数字 类别的编号



   上面的代码可以较好的保存我们的文档和图片,我们还需要显示我们的图片和文档,现在我们还要显示我们的图片,我做了一个显示窗口(fshow),现在我假设数据库中有 一条记录,subject为"ipx协议简介",里面有一个图片(ipx体系结构),窗口代码如下:

   VERSION 5.00

    Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!