VB/VBA中实现数据库与文件的存取

编程完成数据库与文件的数据相互存取
'VB/VBA中实现数据库中的文件存取
 
'示例数据库为ACCESS数据库,用SQL数据库的话,只需要改连接字符串
'
'*************************************************************************
'**
'** 使用 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
    
    'ACCESS数据库的连接字符串
    iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
        ";Data Source=F:My Documents客户资料1.mdb"
    
    'SQL数据库的连接字符串
    iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
        "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
    '读取文件到内容
    Set iStm = New ADODB.Stream
    With iStm
        .Type = adTypeBinary    '二进制模式,如果是用text/ntext字段保存纯文本数据,则改用 adTypeText
        .Open
        .LoadFromFile "c: est.doc"
    End With
    
    '打开保存文件的表
    Set iRe = New ADODB.Recordset
    With iRe
        .Open "表", iConc, adOpenKeyset, adLockOptimistic
        .AddNew         '新增一条记录
        .Fields("保存文件内容的字段") = iStm.Read
        .Update
    End With
    
    '完成后关闭对象
    iRe.Close
    iStm.Close
End Sub
'-------------------------------------------------------------------------------------
 
'从数据库中读取数据,保存成文件
Sub 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=\xzc$Inetpubzjzjzj.mdb"
    
    '打开表
    Set iRe = New ADODB.Recordset
    iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly
    iRe.Filter = "id=64"
 
    if iRe("img").ActualSize>0 Then
 
        '保存到文件
        Set iStm = New ADODB.Stream
        With iStm
            .Mode = adModeReadWrite
            .Type = adTypeBinary '二进制模式,如果是用text/ntext字段保存纯文本数据,则改用 adTypeText
            .Open
            .Write iRe("img")
            .SaveToFile "c: est.doc"
        End With
    
        '关闭对象
        iStm.Close
    End If
 
    iRe.Close
End Sub
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/huangchonghai/archive/2007/01/31/1499194.aspx

关于ADO在ACCESS VBA中的使用可参见 《VBA环境下的ADO编程方法全程解析》

1-1 利用DAO创建数据库数据表 7 1-2 利用ADOX创建数据库数据表: 8 1-3 利用SQL语句创建数据库数据表 9 1-4 在已有的数据库创建数据表(DAO) 10 1-5 在已有的数据库创建数据表(ADOX) 12 1-6 在已有的数据库创建数据表(SQL,Command对象) 13 1-7 在已有的数据库创建数据表(SQL,Recordset对象) 13 1-8 利用Access对象创建数据库数据表 14 1-8-1 不引用Access对象库而使用Access的有关对象、属性和方法 16 1-9 利用Access对象在已有的数据库创建数据表 17 1-10 利用工作表数据创建数据表(ADOX) 18 1-11 利用工作表数据创建数据表(ADO+SQL) 21 1-12 利用工作表数据创建数据表(DAO) 23 1-13 利用已有的数据表创建新数据表(ADO) 25 1-14 利用已有的数据表创建新数据表(DAO) 27 1-15 利用已有的数据表创建新数据表(Access)(前绑定方法引用Access对象库) 28 2-1 检查数据表是否存在(ADO) 28 •实例2-2 检查数据表是否存在(ADOX) 32 •实例2-3 检查数据表是否存在(DAO) 33 •实例2-4 检查数据表是否存在(Access) 33 •实例2-5 获取数据库所有表的名称和类型(ADO) 34 •实例2-6 获取数据库所有表的名称和类型(ADOX) 35 •实例2-8 获取数据库所有数据表名称(ADO) 36 •实例2-9 获取数据库所有数据表名称(ADOX) 37 •实例2-10 获取数据库所有数据表名称(DAO) 37 •实例2-11 获取数据库所有数据表名称(Access) 38 •实例2-12 检查某字段是否存在(ADO) 39 •实例2-13 检查某字段是否存在(ADOX) 40 •实例2-14 检查某字段是否存在(DAO) 41 •实例2-15 检查某字段是否存在(Access) 41 •实例2-16 获取数据库数据表的所有字段信息(ADO) 42 •实例2-17 获取数据库数据表的所有字段信息(ADOX) 44 •实例2-18 获取数据库数据表的所有字段信息(DAO) 45 •实例2-19 获取数据库数据表的所有字段信息(Access) 47 •实例2-20 获取数据库的所有查询信息(ADOX) 48 •实例2-21 获取数据库的所有查询信息(DAO) 49 •实例2-22 获取数据库的模式信息(openschema) 50 •实例2-23 获取表的创建日期和最后更新日期(ADOX) 51 •实例2-24 获取表的创建日期和最后更新日期(DAO) 52 •实例3-1 将数据库记录数据全部导入到excel工作表(ADO,之一) 53 •实例3-2 将数据库记录数据全部导入到excel工作表(ADO,之二) 54 •实例3-3 将数据库记录数据全部导入到Excel工作表(ADO,之三) 55 •实例3-4 将数据库记录数据全部导入到Excel工作表(DAO,之一) 56 •实例3-5 将数据库记录数据全部导入到Excel工作表(DAO,之二) 57 •实例3-6 将数据库记录数据全部导入到Excel工作表(QueryTable集合) 58 •实例3-7 将数据库的某些字段的记录数据导入到Excel工作表(ADO) 59 •实例3-8 将数据库的某些字段记录数据导入到Excel工作表(DAO) 60 •实例3-9 查询前面的若干条记录(全部字段)(TOP) 61 •实例3-10 查询前面的若干条记录(部分字段)(TOP) 62 •实例3-11 查询不重复的字段记录(DISTINCT) 63 •实例3-12 利用Like运算符进行模糊查询 64 •实例3-13 查询某一区间内的记录(BETWEEN) 65 •实例3-14 查询存在于某个集合里面的记录(IN) 67 •实例3-15 将查询结果进行排序(ORDER BY) 68 •实例3-16 进行复杂条件的查询(WHERE) 69 •实例3-17 利用合计函数进行查询(查询最大值和最小值) 70 •实例3-18 利用合计函数进行查询(查询合计值和平均值) 71 •实例3-19 将一个查询结果作为查询条件进行查询 72 •实例3-20 将查询结果进行分组(GROUP BY) 73 •实例3-21 查询结果进行分组(HAVING) 74 •实例3-22 通过计算列进行查询 76 •实例3-23 使用IS NULL运算符进行查询 77 •实例3-24 使用COUNT函数进行查询 78 •实例3-25 使用FIRST函数与LAST函数查询第一条记录和最后一条记录的字段 78 •实例3-26 使用Parameters参数动态查询记录(DAO)指定单个参数 79 •实例3-27 使用parameters参数动态查询记录(DAO):指定多个参数 80 •实例3-28 使用parameters参数动态查询记录(ADO):指定单个参数 81 •实例3-29 使用Parameters参数动态查询记录(ADO):指定多个参数 83 •实例3-30 使用别名查询数据库 84 •实例3-31 将查询结果作为窗体控件的源数据 85 •实例3-32 通过窗体控件查询浏览数据库记录 88 •实例3-33 多表查询(WHERE连接) 98 •实例3-34 多表查询(内连接INNER JOINT) 99 •实例3-35 多表查询(左外连接LEFT OUTER JOINT) 101 •实例3-36 多表查询(右外连接 RIGHT OUTER JOINT) 102 •实例3-37 多表查询(子查询WHERE,ANY,SOME) 103 •实例3-38 多表查询(子查询EXISTS,NOT EXISTS) 105 •实例3-39 从两个数据查询出都存在的记录 106 •实例3-40 从两个数据查询出只存在于某个数据表的记录 108 •实例3-41 将查询结果生成一个数据表 108 •实例3-42 将查询结果保存为一个XML文件 109 •实例3-43 利用工作表实现记录的分页显示 110 •实例3-44 利用窗体实现记录的分页显示 113 •实例4-1 添加新记录(ADO+addnew) 116 •实例4-2 添加新记录(ADO+SQL) 117 •实例4-3 添加新记录(DAO+addnew) 118 •实例4-4 添加新记录(DAO+SQL) 118 •实例4-5 添加新记录(Access+SQL) 119 •实例4-6 修改更新特定记录(ADO+SQL) 120 •实例4-7 修改更新特定记录(DAO+SQL) 120 •实例4-8 修改更新特定记录(Access+SQL) 121 •实例4-9 修改更新全部记录(ADO+SQL) 121 •实例4-10 修改更新全部记录(DAO+SQL) 122 •实例4-11 修改更新全部记录(Access+SQL) 122 •实例4-12 删除特定记录(ADO+SQL) 123 •实例4-13 删除特定记录(DAO+SQL) 124 •实例4-14 删除特定记录(Acess+SQL) 124 •实例4-15 删除全部记录(ADO+SQL) 124 •实例4-16 删除全部记录(DAO+SQL) 125 •实例4-17 删除全部记录(Access+SQL) 125 •实例4-18 通过窗体编辑记录 126 •实例5-1 将整个工作表数据保存为新的Access数据库Access) 128 •实例5-2 将工作表的某些区域数据保存为新Access数据库Access) 129 •实例5-3 将工作簿的所有工作表数据分别保存为不同的数据表(Access) 130 •实例5-4 将多个工作簿的某个工作表数据汇总为新Access数据库Access) 131 •实例5-5将多个工作簿的某个工作表数据保存为不同的数据表(Access) 132 •实例5-6 将工作表数据保存到已有的Access数据库(循环方式)(ADO) 134 •实例5-7 将工作表数据保存到已有的Access数据库(循环方式)(DAO) 136 •实例5-8 将工作表数据保存到已有的Access数据库(数组方式)(ADO) 138 •实例5-9 将工作表数据保存到已有的Access数据库(数组方式)(DAO) 139 •实例5-10 将工作簿的所有工作表数据分别保存为不同的数据表(ADO) 141 •实例5-11 将工作簿的所有工作表数据分别保存为不同的数据表(DAO) 142 •实例6-1 打开数据库数据表(Getobject函数) 144 •实例6-2 打开数据库数据表(createobject函数) 145 •实例6-3 删除数据表(ADO) 145 •实例6-4 删除数据表(ADOX) 146 •实例6-5 删除数据表(DAO+DELETE) 147 •实例6-6 删除数据表(DAO+SQL) 147 •实例6-7 删除数据表(Access) 148 •实例6-8 为数据表增加字段(ADO) 148 •实例6-9 为数据表增加字段(ADOX) 149 •实例6-10 为数据表增加字段(DAO) 150 •实例6-11 为数据表增加字段(Access) 151 •实例6-12 删除字段(ADO) 152 •实例6-13 删除字段(ADOX) 153 •实例6-14 删除字段(DAO) 154 •实例6-15 删除字段(Access) 155 •实例6-16 改变字段的类型(ADO) 157 •实例6-17 改变字段的类型(DAO) 157 •实例6-18 改变字段的类型(Access) 158 •实例6-19 改变字段的长度(ADO) 158 •实例6-20 改变字段的长度(DAO) 159 •实例6-21 改变字段的长度(Access) 159 •实例6-22 重命名数据表(Access) 159 •实例6-23 复制数据表(Access) 160 •实例6-24 复制数据表(ADO) 161 •实例6-25 复制数据表(DAO) 162 •实例6-26 通过窗体维护数据库 162 •实例7-1 判断SQL Server数据库是否存在(ADO) 172 •实例7-2 检查数据表是否存在(ADOX) 173 •实例7-3 创建新的SQL Server数据库数据表(ADO) 174 •实例7-4 在已有的SQL Servre数据库创建数据表(ADO) 175 •实例7-5 从SQL Server数据库服务器删除数据库ADO) 176 •实例7-6 从SQL Server数据库删除数据表(ADO) 177 •实例7-7 将SQL Server数据库数据导入到Excel工作表(ADO) 177 •实例7-8 将SQL Server数据库数据导入到Excel工作表(DAO) 178 •实例7-9 查询获取SQL Server数据库数据ADO) 180 •实例7-10 查询获取SQL Server数据库数据(DAO) 181 •实例7-11 将工作表数据导入到SQL Server数据库ADO) 182 •实例7-12 向SQL Server数据库添加记录的一般方法 183 •实例7-13 将SQL Server数据库转换为Access数据库 184 •实例7-14 将access数据库转换为SQL Server数据库 185 •实例8-1 将FoxPro数据库全部数据导入到Excel工作表 187 •实例8-2 查询获取FoxPro数据库数据 188 •实例8-3 将excel工作表数据保存到FoxPro数据库 189 •实例8-4 判断FoxPro数据库的字段是否存在 190 •实例8-5 获取FoxPro数据库的字段信息 190 •实例9-1 从工作簿的某个工作表查询获取数据ADO) 192 •实例9-2 从工作簿的全部工作表查询获取数据ADO) 193 •实例9-3 利用DAO从工作表查询数据 194 •实例9-4 查询其他工作簿的数据ADO) 195 •实例9-6 利用ADO对工作表数据进行多重排序 196 •实例9-7 利用ADO按照字符的长度对数据进行排序 197 •实例9-8 比较两张表,将两个表相同的行数据抓取出来 198 •实例9-9 比较两张表,将只存在于某个表的行数据抓取出来 199 •实例9-10 删除工作表数据区域内的所有空行 200 •实例10-2 利用DAO导入文本文件的全部内容 202 •实例10-3 利用ADO导入文本文件的部分内容 203 •实例10-4 利用DAO导入文本文件的部分内容 204 •实例10-5 利用ADO获取文本文件的行数和列数 205 •实例10-6 利用ADO将超过65536行的文本文件数据导入到Excel工作表 206 •实例10-7 将工作表全部数据保存为文本文件(SaveAs) 208 •实例10-8 将工作表全部数据保存为文本文件(循环) 208 •实例10-9 将数据库数据导出为文本文件 209 •实例10-10 将文本文件保存Access数据库Access) 210 •实例10-11 将文本文件保存Access数据库ADO+ADOX) 211
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值