VB将外部文件读入到数据库的OLE字段中保存
==============================
  利用VB将外部文件(包括图片文件)读入到数据库的 OLE字段
中保存,主要核心命令是【AppendChunk(Strb)】 ,其中Strb是二进
制变长数组名。具体编程步骤如下:
  ⒈ 对数据库字段的基本要求
  【数据库文件.MDB】中应该有【表01】数据表;
  【表01】中有【行次(N)、文件名称(C)、文件长度(C)、
文件内容(OLE)】四个字段,其中 N 表示整型数据、C 表示字符型
数据、OLE 表示二进制类型的数据。
  ⒉ 创建工程和窗体
  进入Visual Basic_6.0,选择【标准】,修改Form的以下属性:
  2.01 修改工程(名称)
  2.02 修改窗体(名称)
  2.03 修改窗体左上角图标【Icon】
  2.04 修改窗体左上角标识文字【Caption】
  2.05 让窗体首次运行居中【StartUpPosition = 2】
  2.06 窗体的初始宽度【Width = 11600】
  2.07 窗体的初始高度【Height = 6525】
  这就是 Form 级的七大修改。
  ⒊ 添加新的部件
  在这个程序中,要用到【通用对话框、ADO 控件、DataGrid 表
格控件】三个非标准VB部件,必须事先添加好。
  点击菜单栏的【工程】→【部件】→勾选这三个部件→【确定】
  ⒋ 制作操作界面
  为了便于操作,在界面上布局两个文字标签、两个只读文本框
【Text1,Text2】、两个按钮【Command1,Command2】、一个表格
【表格A】、一个ADO控件(Adodc1,运行时隐藏)、一个通用对话
框控件(CommonDialog1,运行时自动不显示),如下图。
  ⒌ 程序文本Option Explicit                       ' 变量要先定义后使用
'  要添加【Ado、DataGrid、CommonDialog】三个控件
' 【数据库文件.MDB】中的【表01】可根据要求自行更改
' 【表01】中要有【行次、文件名称、文件长度、文件内容(OLE)】
' 四个字段Private Sub Command1_Click()            ' 【L.浏览】按钮
   On Error Resume Next
   Dim KZM$, cWJ$, I%, L%
   KZM = "图片文件(*.JPG)|*.JPG"
   KZM = KZM & "|所有文件(*.*)|*.*"
   CommonDialog1.CancelError = True     ' 允许【取消】
   CommonDialog1.InitDir = App.Path     ' 默认路径
   CommonDialog1.Filter = KZM           ' 扩展名过滤器
   CommonDialog1.ShowOpen               ' 『打开』通用对话框
   cWJ = Trim(CommonDialog1.FileName)
   L = Len(cWJ)        ' 将【绝对路径】和【文件名】分离开来
   I = 1
   Do While I < L
      If Mid(Right(cWJ, I), 1, 1) = "\" Then
         Exit Do
      Else
         I = I + 1
      End If
   Loop
   Text1.Text = Mid(cWJ, 1, L - I + 1)  ' 路径
   Text2.Text = Mid(cWJ, L - I + 2)     ' 文件名
End SubPrivate Sub Command2_Click()          ' 【S.存入】按钮
   Dim cF1$, cF2$, cTS$, nFL&, JL&
   Dim Strb() As Byte                 ' 动态(字节型)数组
   cF2 = Trim(Text2.Text)
   cF1 = UCase(Trim(Text1.Text) & cF2)
   If Len(cF1) < 5 Then
      cTS = "没有选择成绩文件!"
   Else
      Open cF1 For Binary As #1       ' 二进制方式打开文件
      nFL = LOF(1)                    ' 文件的长度
      ReDim Strb(nFL)                 ' 重定义字节型数组
      Get #1, , Strb                  ' 文件内容装入字节型数组
      If Adodc1.Recordset.RecordCount < 1 Then
         Adodc1.Recordset.AddNew      ' 新增记录
         JL = Adodc1.Recordset.AbsolutePosition
         Adodc1.Recordset.Fields("行次") = JL
      End If
      Adodc1.Recordset.MoveLast       ' 下移到最后一条记录
      If Adodc1.Recordset.Fields("文件长度") > 10 Then
         Adodc1.Recordset.AddNew      ' 新增记录
         JL = Adodc1.Recordset.AbsolutePosition
         Adodc1.Recordset.Fields("行次") = JL
      End If                          ' 在最后一条记录中装载
      Adodc1.Recordset.Fields("文件内容").AppendChunk Strb
      Adodc1.Recordset.Fields("文件名称") = cF2
      Adodc1.Recordset.Fields("文件长度") = nFL
      Close #1
      Adodc1.Recordset.MoveFirst      ' 上移到第一条记录
      Adodc1.Recordset.MoveLast       ' 下移到最后一条记录
      cTS = cF1 & " 已经存入数据表中的OLE字段中。"
   End If
   MsgBox cTS, 0 + 64, "系统提示"
End SubPrivate Sub Form_Load()
   Dim mPath$, mLink$, cSQL$
   mPath = App.Path                   ' 获取程序所在的路径
   If Right(mPath, 1) <> "\" Then mPath = mPath & "\"
   mLink = "Provider = Microsoft.Jet.OLEDB.4.0;"
   mLink = mLink & "Data Source = " & mPath
   mLink = mLink & "数据库文件.MDB"
   cSQL = "Select * From 表01"        ' SQL_SELECT 语句格式
   Adodc1.ConnectionString = mLink    ' 连接数据源
   Adodc1.CommandType = 8             ' adCmdUknown 命令类型未知
   Adodc1.EOFAction = 2               ' adDoAddNew  允许新增记录
   Adodc1.RecordSource = cSQL         ' 用 SQL 语句建立数据源
   Adodc1.Refresh                     ' 激活 Adodc1 的数据源
   Set 表格A.DataSource = Adodc1      ' 绑定数据到【表格A】
   Adodc1.Visible = False             ' 隐藏【Adodc1】
End SubPrivate Sub Form_Resize()
   On Error Resume Next
   Dim n1&, n2&
   n1 = Me.Width: n2 = Me.Height
   n1 = IIf(n1 < 11600, 11600, n1)
   n2 = IIf(n2 < 6525, 6525, n2)
   Me.Width = n1: Me.Height = n2
   Text1.Width = n1 - 4250        ' 7350
   Text2.Width = n1 - 4250        ' 7350
   Command1.Left = n1 - 2000      ' 9600
   Command2.Left = n1 - 2000      ' 9600
   表格A.Width = n1 - 1250        ' 10350
   表格A.Height = n2 - 2100
End Sub  ⒍ 运行效果  ⒎ 生成EXE文件后要附带的OCX文件
  整个程序编制并调试好以后,可以生成EXE格式的可执行文件。
  可执行文件在没有安装Visual Basic_6.0版本的机子上,可能不
能运行,应该附加三个VB非标准控件的OCX文件。即:
  MSADODC.OCX   【ADO 控件】
  COMDLG32.OCX  【通用对话框控件】
  MSDATGRD.OCX  【数据表格控件】
  这三个文件在安装了Visual Basic_6.0版本的机子上可以找到,
位置是【C:\Windows\System32\】。
  如果将这三个OCX文件拷贝到没有安装 Visual Basic_6.0版本机
子上的【C:\Windows\System32\】文件夹中 ,独立的 EXE 文件也可
以在硬盘的任何文件夹中运行。    四川:罗森【QQ_402431689】
                     2013.6.20
==============================