重开一贴

LWMWORK 2008-11-29 12:45:00
折腾了我一天了,大家给的代码也测试不过,实在愚钝,帮帮忙,给个完整方案!!!答案完整的另给100分


excel文件f1中表sheet1,第一行:姓名 年龄 部门 电话

access文件f2中表user,字段:ID、姓名、性别、年龄、部门、电话、住址 ,数据库有密码“123”

如何把f1中4个字段内容导入(追加)到f2中相应的字段中,由于“住址”为必填字段,所以暂时全部填写为“中山路125号”

...全文
130 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
LWMWORK 2008-12-01
  • 打赏
  • 举报
回复
to 草上飞
[Quote=引用 12 楼 caofusheng 的回复:]
在工程菜单引用中找Micorsoft DAO X.X Object Library. 这就是DAO
[/Quote]
你引用了DAO,却并没有用它呀?
虽然不是最满意的答案,仍要谢谢你,
打开一个access文件,导入excel表时,只要选择了源表、目标表,就可以自动导入到相应字段,vb中怎么就不能实现呢?
两个贴,给你300分,表示感谢。
caofusheng 2008-11-30
  • 打赏
  • 举报
回复
to 草上飞
id不是主键,可以去掉相关代码
倒是4个字段在excel中为'空'时会有问题,
可以通过,但太繁琐,我一直在试insert into...select...,像狼行天下那样的代码,总通不过,你也帮忙试试吧!

狼行天下 直接 insert into 是不行的,除非你的Excel字段完全和数据库一致。




caofusheng 2008-11-30
  • 打赏
  • 举报
回复
你想要简单一点的那就给你一种简单的吧。
记着引用DAO
Private Sub Command1_Click()
Dim conn, conn2 As ADODB.Connection
Dim rs As Recordset
Dim strSQL As String

Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "/f2.mdb;Jet OLEDB:Database Password=123;Persist Security Info=False"

Set conn2 = CreateObject("ADODB.Connection")
conn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Extended properties=Excel 5.0;Data Source=" & App.Path & "/f1.xls"

strSQL = "SELECT * FROM [Sheet1$]"
Set rs = conn2.Execute(strSQL)

While Not rs.EOF
strSQL = ""
strSQL = strSQL & "INSERT INTO [user]([姓名],[年龄],[部门],[电话],[住址]) "
strSQL = strSQL & "VALUES ( '" & rs.Fields(0) & "','" & rs.Fields(1) & "', "
strSQL = strSQL & "'" & rs.Fields(2) & "','" & rs.Fields(3) & "','中山路125号') "
conn.Execute (strSQL)
rs.MoveNext
Wend

conn.Close
Set conn = Nothing
conn2.Close
Set conn2 = Nothing
End Sub

LWMWORK 2008-11-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 caofusheng 的回复:]

记着引用DAO
[/Quote]
ado,没用dao呀
LWMWORK 2008-11-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 caofusheng 的回复:]

狼行天下 直接 insert into 是不行的,除非你的Excel字段完全和数据库一致。
[/Quote]

不应该呀,select就是选择字段的
caofusheng 2008-11-30
  • 打赏
  • 举报
回复
在工程菜单引用中找Micorsoft DAO X.X Object Library. 这就是DAO
LWMWORK 2008-11-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zdl480 的回复:]
?excel 导入access 用得着写程序吗?
[/Quote]
在一个管理系统中,数据库是加密的,你不会想让每个用户自己打开数据库导入excel数据吗?
LWMWORK 2008-11-29
  • 打赏
  • 举报
回复
to 草上飞
id不是主键,可以去掉相关代码
倒是4个字段在excel中为'空'时会有问题,
可以通过,但太繁琐,我一直在试insert into...select...,像狼行天下那样的代码,总通不过,你也帮忙试试吧!
域樹臨風 2008-11-29
  • 打赏
  • 举报
回复
?excel 导入access 用得着写程序吗?
caofusheng 2008-11-29
  • 打赏
  • 举报
回复
你的excel 导入access 的帖子 我也回复了,记着给分哦 O(∩_∩)O哈哈~
caofusheng 2008-11-29
  • 打赏
  • 举报
回复
忘了一点 数据密码是 123 在代码中可以看出来
caofusheng 2008-11-29
  • 打赏
  • 举报
回复
首先在工程菜单点引用,选上 Microsoft Excel x.x Object Library 和 Microsoft ActiveX Data Objects x.x Library
然后在你的From中添加一个按钮,把下面的代码贴进去。一下的Excel文件(F1) 和 MDB文件(f2) 路径是工程的当前路径。

代码写的比较乱,就将就着用吧。

我测试的数据库的user表的表结构如下

ID 数字 KEY
姓名 文本
性别
年龄 数字
部门 文本
电话 文本
住址 文本

Excel文件(F1)文件内容如下

A B C D
姓名 年龄 部门 电话 本行行号 为1
AAAA 21 12 1234444
BBBB 22 13 1234445
CCCC 23 14 1234446
DDDD 24 15 1234447

Private Sub Command1_Click()

Dim lCols As Long
Dim lRows As Long
Dim excelApp As Excel.Application
Dim ExcelBook As New Workbook
Dim ExcelSheet As New Worksheet
Dim i As Long
Dim gstrConnect As String
Dim gadoCon As ADODB.Connection
Dim STRSQL As String
Dim setTemp As ADODB.Recordset
Dim lngID As Long


gstrConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "/f2.mdb;Jet OLEDB:Database Password=123;Persist Security Info=False" 'Access連接
Set gadoCon = New ADODB.Connection
With gadoCon
.ConnectionString = gstrConnect
.ConnectionTimeout = 60
.CommandTimeout = 600
.CursorLocation = adUseClient
.Open
End With

Set excelApp = CreateObject("Excel.Application") '
Set ExcelBook = excelApp.Workbooks.Open(App.Path & "\F1.xls")
Set ExcelSheet = ExcelBook.Worksheets(1)

lCols = ExcelSheet.UsedRange.Cells.Columns.Count
lRows = ExcelSheet.UsedRange.Cells.Rows.Count

STRSQL = " Select max(ID) as ID From [user]"

Set setTemp = New ADODB.Recordset
setTemp.CursorLocation = adUseServer
setTemp.CursorType = adOpenKeyset
setTemp.LockType = adLockOptimistic
setTemp.Open STRSQL, gadoCon, , , adCmdText

lngID = Val(setTemp.Fields("ID") & "")

setTemp.Close
Set setTemp = Nothing


For i = 2 To lRows
lngID = lngID + 1

STRSQL = " Select * From [user]" _
& " Where ID =" & lngID & " "

Set setTemp = New ADODB.Recordset
setTemp.CursorLocation = adUseServer
setTemp.CursorType = adOpenKeyset
setTemp.LockType = adLockOptimistic
setTemp.Open STRSQL, gadoCon, , , adCmdText

If (setTemp.BOF And setTemp.EOF) Then
setTemp.AddNew
setTemp!ID = lngID
End If


setTemp!姓名 = Trim(ExcelSheet.Range("A" & i).Value)
setTemp!年龄 = Trim(ExcelSheet.Range("B" & i).Value)
setTemp!部门 = Trim(ExcelSheet.Range("C" & i).Value)
setTemp!电话 = Trim(ExcelSheet.Range("D" & i).Value)
setTemp!住址 = "中山路125号"

setTemp.Update

setTemp.Close
Set setTemp = Nothing


Next


ExcelBook.Close
excelApp.Quit

Set excelApp = Nothing
Set ExcelBook = Nothing
Set ExcelSheet = Nothing

MsgBox "OK"

End Sub
caofusheng 2008-11-29
  • 打赏
  • 举报
回复
把你的代码贴出来,我给你调调,写起来有点多。
为方便大家安装,这里还把最佳推荐的扩展打包为单独的扩展文件,如不喜欢自行卸载添加!

标签定制 CE版 Tab Mix Lite CE 不用多说了,大家期盼已久,支持FF3.0的版本终于复出了!再次感谢Mozine开发团队!还在等什么,赶快为你的FF装备吧!

继承父标签历史 tab_history 当一个标签链接到另标签时,父标签历史也会被继承到新标签!

进程清单 sessionpage 一国人制作的扩展,填补了该功能的空白,打开FF时仅仅载入一个上次浏览过的标签页清单,可以有选择的恢复,而不用载入所有未关闭的标签页。务必请关闭TMP进程管理,最好也不要启用FF内建的进程恢复。

集中边栏 all-in-one_sidebar 所有的管理面板添加到边栏,既美观,管理也方便

随处工具 TotalToolbar 刚刚推出的扩展,现在边栏/状态栏/标签栏也可以像工具栏一样拖拽管理按钮了,既可把按钮拖放到状态栏,标签栏和边栏目,OrganizeStatusBar 从此可以引退了

下载底栏 downbar 隐藏原来的大面板,用附加状态栏代替,有速度和大小显示,方便不少

下载分类download_sort 指定不同文件类型下载到不同的文件夹,不用每次都选择保存位置了

窗口分割 split_browser 她可以把你的FF分割成多个窗口多页面浏览,我家用22寸的宽屏就用她,爽阿!如果你有一个超大的宽屏显示,绝对推荐!!!

隐藏菜单 compact_menu 用一个图标来隐藏菜单栏,让你的界面更简约

下载增强 flashgot 有了她FF也可以用外部下载工具下载了

浏览兼容 IEtab 没了她还真不行,就拿丁丁地图来说 FF就不能正常显示

刷新重试 tryagain 是不是偶尔会遇到网页忙碌而无法访问,有了她不用你手动去刷新了,她会帮你定时刷新直到正常载入,已正式更新支持到3.0,增加了重试次数选择

随心拖曳 dragDeGo 比起SuperDragAndGo要更强,可自定义拖曳用途,所以觉得 Super更适合dragDeGo,注意这是修改版,拖曳到查找有些问题,最好修改掉

自动复制auto_copy 喜欢这个,比 auto_context 更强,你连单击都可以省了,选择文字即复制

一贴即转pasteandgo 把地址粘贴到地址栏或者搜索栏时不用再按按钮即执行转到

搜查合一 searchwp 可以把搜索栏当查找栏用的好东东,用了它才知道有多棒

文区缓存 textareaCache 是否有在提交文本区域之前页面却意外关闭,辛苦写的东西却没有保存下来,有了她会帮你定时保存,以防意外!

扫描更新 update_scanner 定时扫描指定页面的变化并提醒,用于监视自己发表的帖子随时知道新的回复

输入切换 tabimswitch 让各标签页记住自己的输入状态,转到地址栏是自动切换到英文

鼠标手势 firegestures 刚推出的鼠标手势,很小巧,喜欢鼠标手势的朋友又有新选择了

闪放由我 flashblock 默认阻挡Flash的播放,相应位置由播放按钮替换,自主的选择播放需要的Flash。

广告拦截 Adblock_Plus 比另一同名adblock plus好很多,对想要过滤对象轻轻一点,说声拜拜吧!

拦截增强 element_hiding_helper adblock plus 的增强扩展,可以拦截文字广告,不能单独安装

无界浏览 wjbutton 配合无界浏览(点击下载),代理浏览速度不错

填写助手 informenter 有了这位助手,填写表单的时候方便不少!

7,785

社区成员

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

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