找回密码
 加入
搜索
查看: 6515|回复: 25

[AU3基础] [已解决]MDB创建问题

[复制链接]
发表于 2019-6-20 13:25:16 | 显示全部楼层 |阅读模式
本帖最后由 w60711 于 2019-10-24 15:43 编辑

请问各位先进
我要建立accdb,使用以下代码
        $newMdb = ObjCreate("ADOX.Catalog")
        $newMdb.Create("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $DBName & ";Jet Oledb:Database Password="&$mdb_data_pwd)
        $newmdb.ActiveConnection.Close

都会提示 $newmdb.ActiveConnection.Close 不符合
请问要如何修改呢
感谢各位

已解决
========================
虽然是老问题了终于在刚刚找到了原因...

代碼在 10F,感謝大大的幫忙

1.首先安装 Microsoft Access Database Engine 2010 可转散发套件 x86
2.执行源码,成功。

备注:
安装第一点的x86,源码使用:#AutoIt3Wrapper_UseX64 = n
安装第一点的x64,源码使用:#AutoIt3Wrapper_UseX64 = y

十分感谢您的帮忙



发表于 2019-6-20 13:51:09 | 显示全部楼层

 例子:      示例 2
 描述:      创建一个数据库文件(*. mdb)
 说明:      ADOX是ADODB的对象扩展库,它的对象可用于创建、修改和删除数据库。
            它还包含安全对象,可用于维护用户和组,以及授予和撤销对象的权限。
            这里使用的对象:Catalog 是用于创建包含描述数据源模式目录的集合。
            Create 创建新的目录。“Provider= Microsoft.Jet.OLEDB.4.0”表示数据库的类型,
            “DataSource=" & $mdb_data_path”数据库创建的路径与名称。
            最后是结束创建。(ActiveConnection指示目录所属的 ADO Connection 对象)
#ce _______________脚本开始_________________
#AutoIt3Wrapper_UseX64 = n
$adSource = @ScriptDir & "\DB1.mdb"
$Password = "123456"
If Not FileExists($adSource) Then;如果脚本所在目录没有发现数据库文件,则创建数据库文件,
        $newMdb = ObjCreate("ADOX.Catalog")
        $newMdb.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="  & $adSource  & ";Jet Oledb:Database Password="&$Password);创建新的目录
        $newMdb.ActiveConnection.Close
        MsgBox(64, "提示", "建立数据库成功", 5)
Else
        MsgBox(64, "提示", "你已经建立了一个数据库了", 5)
EndIf

点评

抱歉沒說清楚 我需要的是 *.accdb 也就是access 2007以上的格式~~  发表于 2019-6-20 19:17
发表于 2019-6-20 19:59:16 | 显示全部楼层

access2007以上的格式
        $newMdb.Create("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSource & ";Jet Oledb:Database Password=" & $Password)

#AutoIt3Wrapper_UseX64 = n
$adSource = @ScriptDir & "\DB1.mdb"
$Password = "123456"
$adtables = "admin"
If Not FileExists($adSource) Then;如果脚本所在目录没有发现数据库文件,则创建数据库文件,
        $newMdb = ObjCreate("ADOX.Catalog")
        $newMdb.Create("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSource & ";Jet Oledb:Database Password=" & $Password);创建新的目录
        $newMdb.ActiveConnection.Close
        MsgBox(64, "提示", "建立数据库成功", 5)
Else
        MsgBox(64, "提示", "你已经建立了一个数据库了", 5)
EndIf
 楼主| 发表于 2019-6-23 18:26:38 | 显示全部楼层
本帖最后由 w60711 于 2019-6-23 18:27 编辑
chzj589 发表于 2019-6-20 19:59
access2007以上的格式
        $newMdb.Create("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSourc ...

感謝ˋ您~
但是它顯示以下訊息

The requested action with this object has failed.:
$newMdb.Create("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSource & ";Jet Oledb:Database Password=" & $Password)
$newMdb^ ERROR




发表于 2019-6-23 18:59:41 | 显示全部楼层
w60711 发表于 2019-6-23 18:26
感謝ˋ您~
但是它顯示以下訊息

未成功创建数据库
这一句有写上吗?
#AutoIt3Wrapper_UseX64 = n

点评

是的 沒有創建數據庫 有加上 我是直接複製您的代碼測試...^^  发表于 2019-6-26 13:04
发表于 2019-6-26 13:42:08 | 显示全部楼层
把你创建2007ACCESS数据库的代码贴上来,我看看是什么原因

点评

感謝您~  发表于 2019-6-26 18:38
 楼主| 发表于 2019-6-26 18:31:11 | 显示全部楼层
chzj589 发表于 2019-6-26 13:42
把你创建2007ACCESS数据库的代码贴上来,我看看是什么原因
>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "D:\Admin\Desktop\accdb_create.au3" /UserParams   
+>18:27:37 Starting AutoIt3Wrapper v.16.612.1119.0 SciTE v.3.6.6.0   Keyboard:00000409  OS:WIN_10/  CPU:X64 OS:X64  Environment(Language:0404)  CodePage:950  utf8.auto.check:4
+>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper
>Running AU3Check (3.3.14.5)  from:C:\Program Files (x86)\AutoIt3  input:D:\Admin\Desktop\accdb_create.au3
+>18:27:37 AU3Check ended.rc:0
>Running:(3.3.14.5):C:\Program Files (x86)\AutoIt3\autoit3.exe "D:\Admin\Desktop\accdb_create.au3"   
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
"D:\Admin\Desktop\accdb_create.au3" (7) : ==> The requested action with this object has failed.:
$newMdb.Create("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSource & ";Jet Oledb:Database Password=" & $Password)
$newMdb^ ERROR
->18:27:38 AutoIt3.exe ended.rc:1
+>18:27:38 AutoIt3Wrapper Finished.
>Exit code: 1    Time: 1.551

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

点评

你的附件就可以创建数据库啊,那还有什么问题?  发表于 2019-6-26 20:29
发表于 2019-6-26 20:25:53 | 显示全部楼层

$adSource =数据库名称
$Password =数据库密码
以上你都没有设定,数据库当然无法创建

#cs
        >"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "D:\Admin\Desktop\accdb_create.au3" /UserParams
        +>18:27:37 Starting AutoIt3Wrapper v.16.612.1119.0 SciTE v.3.6.6.0   Keyboard:00000409  OS:WIN_10/  CPU:X64 OS:X64  Environment(Language:0404)  CodePage:950  utf8.auto.check:4
        +>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper
        >Running AU3Check (3.3.14.5)  from:C:\Program Files (x86)\AutoIt3  input:D:\Admin\Desktop\accdb_create.au3
        +>18:27:37 AU3Check ended.rc:0
        >Running:(3.3.14.5):C:\Program Files (x86)\AutoIt3\autoit3.exe "D:\Admin\Desktop\accdb_create.au3"
        --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
        "D:\Admin\Desktop\accdb_create.au3" (7) : ==> The requested action with this object has failed.:
        ->18:27:38 AutoIt3.exe ended.rc:1
        +>18:27:38 AutoIt3Wrapper Finished.
        >Exit code: 1    Time: 1.551
#ce
#AutoIt3Wrapper_UseX64 = n
$adSource = @ScriptDir & "\DB1.mdb"
$Password = "123456"
$adtables = "admin"
If Not FileExists($adSource) Then;如果脚本所在目录没有发现数据库文件,则创建数据库文件,
        $newMdb = ObjCreate("ADOX.Catalog")
        $newMdb.Create("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSource & ";Jet Oledb:Database Password=" & $Password)
        $newMdb.ActiveConnection.Close

        MsgBox(64, "提示", "建立数据库成功", 1)
Else
        MsgBox(64, "提示", "你已经建立了一个数据库了", 1)
EndIf

点评

自己樓層不能點評0.0 有的 我是安裝 Office 2016  发表于 2019-6-27 12:08

评分

参与人数 1金钱 +30 收起 理由
w60711 + 30 很给力!

查看全部评分

 楼主| 发表于 2019-6-26 22:08:41 | 显示全部楼层
chzj589 发表于 2019-6-26 20:25
$adSource =数据库名称
$Password =数据库密码
以上你都没有设定,数据库当然无法创建

感謝您熱心解答~^^
我數據庫變數是有設定的~


代碼沒問題的話
看來可能是電腦環境的問題了...
我再來找找看原因在哪~
PS. 我是Win10 x64 教育版
AU3 3.3.14.2

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

点评

Microsoft Office Access 2007 以上版本有安装吗?  发表于 2019-6-27 09:40
发表于 2019-6-27 12:26:29 | 显示全部楼层
本帖最后由 chzj589 于 2019-6-27 12:28 编辑
w60711 发表于 2019-6-26 22:08
感謝您熱心解答~^^
我數據庫變數是有設定的~

我刚发现是你的数据库的后缀问题:$adSource = @ScriptDir & "\DB1.mdb";DB1.accdb"

#AutoIt3Wrapper_UseX64 = n
$adSource = @ScriptDir & "\DB1.mdb";DB1.accdb"
$Password = "123456"
$adtables = "admin"
If Not FileExists($adSource) Then;如果脚本所在目录没有发现数据库文件,则创建数据库文件,
        $newMdb = ObjCreate("ADOX.Catalog")
        $newMdb.Create("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSource & ";Jet Oledb:Database Password=" & $Password);创建新的目录
        $newMdb.ActiveConnection.Close

        $ADDTBL = ObjCreate("ADODB.Connection")
        $ADDTBL.Open("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSource & ";Jet Oledb:Database Password=" & $Password)
        $ADDTBL.Execute("CREATE TABLE " & $adtables)
        $ADDTBL.Close;建表

        $addfld = ObjCreate("ADODB.Connection")
        $addfld.Open("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSource & ";Jet Oledb:Database Password=" & $Password)
        $addfld.Execute("ALTER TABLE " & $adtables & " ADD id identity(1, 1) primary key,namekey text(255),passkey text(255) ,ipasskey text(255),ipasskeya text(255),ipasskeyb text(255))")
        $addfld.close

        $namekey = "A"
        $passkey = "B"
        $ipasskey = "C"
        $ipasskeya = "D";@YEAR & "年" & @MON & "月" & @MDAY & "日";"zxc-=iop"
        $ipasskeyb = "未注册"
        $addfld = ObjCreate("ADODB.Connection")
        $addfld.Open("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSource & ";Jet Oledb:Database Password=" & $Password)
        $addfld.execute("insert into " & $adtables & " (namekey,passkey,ipasskey,ipasskeya,ipasskeyb) values('" & $namekey & "','" & $passkey & "','" & $ipasskey & "','" & $ipasskeya & "','" & $ipasskeyb & "')")
        $addfld.close
        MsgBox(64, "提示", "建立数据库成功", 1)
Else
        MsgBox(64, "提示", "你已经建立了一个数据库了", 1)
        $addfld = ObjCreate("ADODB.Connection")
        $addfld.Open("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $adSource & ";Jet Oledb:Database Password=" & $Password)
        $RS = ObjCreate("ADODB.recordset")
        $RS.ActiveConnection = $addfld
        $RS.open("SELECT * FROM " & $adtables)
        Local $i = 0
        While Not $RS.eof And Not $RS.bof
                MsgBox(0, "提示", $RS.Fields(1).value & @CRLF & $RS.Fields(2).value & @CRLF & $RS.Fields(3).value & @CRLF & $RS.Fields(4).value & @CRLF & $RS.Fields(5).value, 5)
                ;$i += 1
                $RS.movenext
        WEnd
        $RS.close
        $addfld.Close
EndIf


点评

不是 我兩種後綴都有試過 都不行 還是感謝您 ((最近感冒有點嚴重 好了再來搞這個...  发表于 2019-7-4 09:21
发表于 2019-6-28 07:23:28 | 显示全部楼层
学习了,谢谢
发表于 2019-6-29 20:16:52 | 显示全部楼层
应该是系统原因   我还遇见了   所有论坛兄弟出的数据库实例    都会报这个错
>"D:\Program Files\AutoIt3\SciTE\AccAu3Wrapper\AccAu3Wrapper.exe" /run /prod /ErrorStdOut /in "D:\Desktop\ACCES操作实例.au3" /UserParams   
+>20:16:37 开始 AccAu3Wrapper v.16.306.1237.0 SciTE v.3.6.2.0
    ------------------------------------------------------------------------------------------------------
    键盘布局:00000804  操作系统:WIN_10/  CPU:X64 系统架构:X64    文件编码:UTF8含BOM(128)    字符集:936
    SciTE目录 => D:\Program Files\AutoIt3\SciTE   用户目录 => C:\Users\Administrator\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\Administrator\AppData\Local\AutoIt v3\SciTE
    ------------------------------------------------------------------------------------------------------
>运行 AU3Check (3.3.14.2)  从:D:\Program Files\AutoIt3
+>20:16:37 AU3Check 语法检查结束.rc:0
>运行:(3.3.14.2):D:\Program Files\AutoIt3\autoit3_x64.exe "D:\Desktop\ACCES操作实例.au3"   
--> 按 Ctrl+Alt+Break 重新启动或按 Ctrl+Break 停止
"D:\Desktop\ACCES????.au3" (104) : ==> The requested action with this object has failed.:
$newMdb.Create("Provider=Microsoft.Jet.OLEDB.12.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$newMdb^ ERROR
->20:16:39 AutoIt3.exe 结束.rc:1
+>20:16:39 AccAu3Wrapper 完成.
>Exit code: 1    Time: 2.096
发表于 2019-6-30 23:38:39 | 显示全部楼层
这个很有用
发表于 2019-7-6 00:17:32 | 显示全部楼层
不错支持一下
发表于 2019-7-6 08:52:11 | 显示全部楼层
本帖最后由 chzj589 于 2019-7-6 08:54 编辑
xuanniao110 发表于 2019-6-29 20:16
应该是系统原因   我还遇见了   所有论坛兄弟出的数据库实例    都会报这个错
>"D:\Program Files\AutoIt3 ...

好象这句不对???
$newMdb.Create("Provider=Microsoft.Jet.OLEDB.12.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$newMdb.Create("Provider=Microsoft.Jet.OLEDB.12.0; ???
应该是:
$newMdb.Create("Provider=Microsoft.Jet.OLEDB.4.0;
$newMdb.Create("Provider=Microsoft.ACE.OLEDB.12.0;
$newMdb.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 06:45 , Processed in 0.109827 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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