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
==============================
==============================
利用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
==============================
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货