设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1901|回复: 9
打印 上一主题 下一主题

[ADO/DAO] ado 中 insert 方法出错

[复制链接]
跳转到指定楼层
1#
发表于 2003-9-28 22:19:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1   Dim dbf As Object
2   Set dbf = CreateObject("ADODB.Connection")
3   dbf.open "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDb=e:\IN_PORT"
4   dbf.execute "insert into b1 (code,name) values ('ccc','test')"
5   dbf.execute "insert into b1 (code,name) select code,name from b2"

b1,b2两表结构相同,第4句成功,但第5句出错,WHY?

提示[Microsoft][Odbc visual Foxpro Driver]  syntax error


[此贴子已经被作者于2003-9-28 14:22:22编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2003-9-29 17:45:00 | 只看该作者
诸位关照下呀,我每月都有数百上千个DBF文件要用此法合并,用逐行逐字段的方法效率实在太低。

点击这里给我发消息

3#
发表于 2003-9-29 19:00:00 | 只看该作者
Sub CopyTest()
    Dim dbf As ADODB.Connection
   
    Set dbf = CurrentProject.Connection
    dbf.Execute "INSERT INTO b1 (code, name) " & _
                    "IN '' [dBASE IV; Database=E:\IN_PORT;] " & _
                "SELECT code, name FROM b2 " & _
                    "IN '' [dBASE IV; Database=E:\IN_PORT;]"
End Sub

' Good Lucky!

[em24]

点击这里给我发消息

4#
发表于 2003-9-29 19:03:00 | 只看该作者
因为[Microsoft][Odbc visual Foxpro Driver]不支持"INSERT INTO ... SELECT ..."语句, 因此需要改成JET完成:

Sub CopyTest()
    Dim dbf As ADODB.Connection
   
    Set dbf = CurrentProject.Connection
    dbf.Execute "INSERT INTO b1 (code, name) " & _
                    "IN '' [dBASE IV; Database=E:\IN_PORT;] " & _
                "SELECT code, name FROM b2 " & _
                    "IN '' [dBASE IV; Database=E:\IN_PORT;]"
End Sub
5#
 楼主| 发表于 2003-9-29 22:41:00 | 只看该作者
用于FOXPRO2.5格式时依然出错,ACCESS2K环境,是否要加装什么驱动?

点击这里给我发消息

6#
发表于 2003-9-29 23:01:00 | 只看该作者
把你的DBF文件贴两个上来,看看
7#
 楼主| 发表于 2003-10-1 01:25:00 | 只看该作者

劳驾啦:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

8#
发表于 2003-10-9 19:34:00 | 只看该作者
Sub CopyTest()
    Dim dbf As ADODB.Connection
   
    Call SetDBFTag("E:\IN_PORT\DW1.dbf")
    Call SetDBFTag("E:\IN_PORT\DW2.dbf")
    Set dbf = CurrentProject.Connection
    dbf.Execute "INSERT INTO dw1 (code, name) " & _
                    "IN '' [dBASE IV; Database=E:\IN_PORT;] " & _
                "SELECT code, name FROM dw2 " & _
                    "IN '' [dBASE IV; Database=E:\IN_PORT;]"
End Sub

Sub SetDBFTag(ByVal strFileName As String)
    Dim FileNumber As Integer
    Dim byteTag As Byte
   
    FileNumber = FreeFile
    Open strFileName For Random As #FileNumber Len = 1
    Get #FileNumber, 1, byteTag
    Debug.Print byteTag
    Let byteTag = 3
    Put #FileNumber, 1, byteTag
    Close #FileNumber
End Sub
9#
 楼主| 发表于 2003-10-9 19:51:00 | 只看该作者
测试通过,爽呆啦。

点击这里给我发消息

10#
发表于 2003-10-16 19:49:00 | 只看该作者
即将DBF文件的第一个字节改为03,即转换成DBASEIII的数据库文件格式.

[em24]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-9 12:51 , Processed in 0.114223 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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