设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
打印 上一主题 下一主题

[其它] 求助:access表数据写入另一个access的表

[复制链接]
11#
发表于 2016-3-4 13:57:22 | 只看该作者
access新新新手 发表于 2016-3-4 13:32
再请教版主一个问题,您的代码前面的行号是怎么显示出来的。

这个行号是discuz!论坛自带的,使用了[code][/code]UBB标签就有了。如果需要在VBE界面上加行号,则需要手动处理。
sub test()
1:msgbox "test"
end sub
不过个人觉得没必要吧?
12#
 楼主| 发表于 2016-3-4 17:30:02 | 只看该作者
roych 发表于 2016-3-4 13:57
这个行号是discuz!论坛自带的,使用了[code][/code]UBB标签就有了。如果需要在VBE界面上加行号,则需要手 ...

是没有必要。
谢谢!
我按日期为条件,为什么提取不了数据
sql = "select * from 数据库a表 where 日期>=#" & DTPicker1.Value & "# and 日期<=#" & DTPicker2.Value & "# "
13#
发表于 2016-3-5 08:54:31 | 只看该作者
access新新新手 发表于 2016-3-4 17:30
是没有必要。
谢谢!
我按日期为条件,为什么提取不了数据

1、请把DTPicker1.Value和DTPicker2.Value替换为其它包含记录的日期范围,创建一个查询看看有没有问题,例如:
select * from 数据库a表 where 日期>=#2016/2/1# and 日期<=#2016/2/29#
如果查不出来,那么则可能是日期字段有问题,请修改为正确的日期格式。

2、如果1没问题,请debug.print DTPicker1.Value和DTPicker2.Value出来看看是不是正确的日期范围。如果不是,请自行修改。

3、DateTimePicker我已经多年没用了,因为2007版本后就取消了这个控件。不过,以前用的时候,一般是通过该控件和文本框结合来使用的。通过DateTimePicker的change事件,把日期赋值给文本框,然后读取文本框的值来达到更改查询条件的目的的。例如:
private sub DTPicker1_change()
me.text1.value=DTPicker1
end sub
14#
 楼主| 发表于 2016-3-5 09:19:50 | 只看该作者
本帖最后由 access新新新手 于 2016-3-5 09:46 编辑

按 sql = "select * from 数据库a表  where 操作日期>=#2016/2/1# and 操作日期<=#2016/2/29#"
这种方法可以提取数据

估计跟DTPicker1.Value控件有关系,我发现在我的win7电脑里面时间显示为 年、月、日
但是一样的代码在我的XP电脑显示为 年、月、日、星期,多了一个星期,
不知道是不是这个原因。

点评

是的。跟系统日期格式有关。修改成正确的格式后就好了  发表于 2016-3-5 12:26
15#
 楼主| 发表于 2016-3-5 12:11:36 | 只看该作者
roych 发表于 2016-3-5 08:54
1、请把DTPicker1.Value和DTPicker2.Value替换为其它包含记录的日期范围,创建一个查询看看有没有问题, ...

多谢版主,经过测试下面代码可以实现
sql = "select * from 数据库a表 where 操作日期>=#" & Format(Form1.DTPicker1.Value, "yyyy-mm-dd") & "# and 操作日期<=#" & Format(Form1.DTPicker2.Value, "yyyy-mm-dd") & "# "
16#
发表于 2017-1-17 13:30:11 | 只看该作者
roych 发表于 2016-3-4 11:47
关于方法2,从理论上讲,对于数据库a表,是不需要使用绝对路径的。但手头上没有VB,暂时无法调试。

你好

那么在前台ACCESS,后台SQL SERVER的情况下,把SQL表的数据复制到ACCESS,这代码该怎么写?

Dim Cmd As New ADODB.Command
Dim param As ADODB.Parameter


''fuser是用户名的变量
ftbname = "Tb_查询_temp_" & fuser

Set Cmd = New ADODB.Command
Set param = Cmd.CreateParameter("@ftablename", adChar, adParamInput, 255, ftbname)
Cmd.Parameters.Append param

''''''删除临时表
rs.Open "SELECT name FROM sysobjects WHERE name = '" & ftbname & "'", cnn, 1, 1
If rs.EOF = False Then cnn.Execute = "DROP TABLE " & ftbname
If rs.State = 1 Then rs.Close
Cmd.CommandType = adCmdStoredProc
Cmd.ActiveConnection = cnn
Cmd.CommandText = "Dt_查询_temp"  ''''存储过程
Set rs = Cmd.Execute

''''以上都没问题,下面的代码提示找不到sql server上的表

CurrentProject.Connection.Execute "insert INTO [" & CurrentProject.Path & "\新建 Microsoft Office Access 应用程序.mdb].[Tb_查询_temp] select * FROM " & ftbname & ""


谢谢!
17#
发表于 2017-1-17 14:19:33 | 只看该作者
kent_73 发表于 2017-1-17 13:30
你好

那么在前台ACCESS,后台SQL SERVER的情况下,把SQL表的数据复制到ACCESS,这代码该怎么写?

好像没看到你的数据库链接字符串
18#
发表于 2017-1-17 14:23:49 | 只看该作者
roych 发表于 2017-1-17 14:19
好像没看到你的数据库链接字符串

有的,没复制

Dim rs As New ADODB.Recordset
Set cnn = New ADODB.Connection
Set mydb = CurrentProject.Connection
cnn.Open "rovider=SQLOLEDB;Data Source=192.168.0.1;UID=saWD=******;initial catalog=SHUJUKU"
19#
发表于 2017-1-18 13:42:18 | 只看该作者
kent_73 发表于 2017-1-17 14:23
有的,没复制

Dim rs As New ADODB.Recordset

试试把:
CurrentProject.Connection.Execute "insert INTO [" & CurrentProject.Path & "\新建 Microsoft Office Access 应用程序.mdb].[Tb_查询_temp] select * FROM " & ftbname & ""
改成:
cnn.Execute "insert INTO [" & CurrentProject.Path & "\新建 Microsoft Office Access 应用程序.mdb].[Tb_查询_temp] select * FROM " & ftbname & ""
20#
发表于 2017-1-18 16:09:17 | 只看该作者
roych 发表于 2017-1-18 13:42
试试把:
CurrentProject.Connection.Execute "insert INTO [" & CurrentProject.Path & "\新建 Microso ...

改了就找不到本地表了。

对象名‘盘符:\新建 Microsoft Office Access 应用程序.mdb.tb_查询_temp'无效
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-31 06:03 , Processed in 0.099845 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表