找回密码
 加入
搜索
查看: 4213|回复: 5

[AU3基础] 【已解决】数据库创建出错,看了半天不知道为什么,郁闷啊!

[复制链接]
发表于 2012-10-20 06:26:55 | 显示全部楼层 |阅读模式
本帖最后由 xms77 于 2012-10-20 21:58 编辑

求数据库达人指教了,问题如下图,执行红框的代码就出错,执行绿框的代码就没有问题。运行环境3.3.7.15,win7 32bits

就算运行没有出错,但是创建的数据库用access打开,也会出现如下的报错
$mdb_data_path = "HSA Machine Info.mdb"
$mdb_data_pwd = ""
$T = "*"
$tblname = "MachineInfo"
DBCreate($mdb_data_path, $tblname)

Func DBCreate($mdb_data_path, $tblname)
        If Not FileExists($mdb_data_path) Then
                $newMdb = ObjCreate("ADOX.Catalog")
                $newMdb.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
                $newMdb.ActiveConnection.Close;建数据库
                $addtbl = ObjCreate("ADODB.Connection")
                $addtbl.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
                $addtbl.Execute("CREATE TABLE " & $tblname)
                $addtbl.Close;建表
                $addfld = ObjCreate("ADODB.Connection")
                $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
                $addfld.Execute("ALTER TABLE " & $tblname & " ADD id identity(1, 1) primary key,MachineType char ,MachineName char ,PCName char,IPAddress char,MachineStatus char,SoftwareRev char,ClientRev char,MacAddress char,UpdateDateTime char")
                $addfld.Execute("ALTER TABLE " & $tblname & " ADD id identity(1, 1) primary key,MachineType char ,MachineName char ,PCName char,IPAddress char,MachineStatus char,SoftwareRev char,ClientRev char")
                $addfld.Close;建列表名                
                MsgBox(64, "提示", "建立数据库成功", 5)
        Else
                MsgBox(64, "提示", "你已经建立了一个数据库了", 5)
        EndIf
EndFunc   ;==>data
问题解决了,谢谢大家的帮忙!把出错的那一行语句中的
MacAddress char,UpdateDateTime char
改为
MacAddress text(255),UpdateDateTime text(255)
就行了

本帖子中包含更多资源

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

×
发表于 2012-10-20 09:18:34 | 显示全部楼层
回复 1# xms77

把有問題的那段  在 跟下面不一樣 欄位名稱的地方 用 []  把欄位名稱 框起來

例如: [MacAddress]  char, [UpdateDateTime]  char

评分

参与人数 1金钱 +30 收起 理由
xms77 + 30 谢谢你的帮忙!

查看全部评分

发表于 2012-10-20 10:15:03 | 显示全部楼层
18-19
$addfld.Execute("ALTER TABLE " & $tblname & " ADD id identity(1, 1) primary key,MachineType char ,MachineName char ,PCName char,IPAddress char,MachineStatus char,SoftwareRev char,ClientRev char,MacAddress char,UpdateDateTime char")
                $addfld.Execute("ALTER TABLE " & $tblname & " ADD id identity(1, 1) primary key,MachineType char ,MachineName char ,PCName char,IPAddress char,MachineStatus char,SoftwareRev char,ClientRev char")
?????
发表于 2012-10-20 10:32:45 | 显示全部楼层
查看帮助:
#cs ____________________________________
例子:      示例 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"

If Not FileExists($adSource) Then;如果脚本所在目录没有发现数据库文件,则创建数据库文件,
        $newMdb = ObjCreate("ADOX.Catalog")
        $newMdb.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource);创建新的目录
        $newMdb.ActiveConnection.Close
        MsgBox(64, "提示", "建立数据库成功", 5)
Else
        MsgBox(64, "提示", "你已经建立了一个数据库了", 5)
EndIf
#cs ____________________________________
例子:      示例 2
描述:      在现有的数据库文件中建立表
说明:      用ADODB的连接打开(Connection)对象,连接到指定的数据库并打开,
                         执行CREATE TABLE (创建新表),名称为声明变量中的名称。
            用ADODB打开数据库,执行ALTERTABLE(修改数据库表),
                         “ADDididentity(1,1)primarykey,namechar(255),passchar(255)”表示添加ID、name、pass数据列。
                         “identity(1,1)primarykey”是指此数据列为索引,“char(255)”是数据类型
                         (建议使用text 表示文本类型,使用char容易造成在没有安装Access的客户机上多出“…”的省略号,
                         因为指定的255字节会全部被显示),最后关闭本次连接。
#ce _______________脚本开始_________________
#AutoIt3Wrapper_UseX64 = n
$adSource = @ScriptDir & "\DB1.mdb"
$adTable = "Table2"

If FileExists($adSource) Then
        $addtbl = ObjCreate("ADODB.Connection")
        $addtbl.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource)
        $addtbl.Execute("CREATE TABLE " & $adTable)
        $addtbl.Execute("ALTER TABLE " & $adTable & " ADD id identity(1, 1) primary key,name text(255) ,pass text(255)")
        $addtbl.Close
        MsgBox(64, "提示", "创建表成功", 5)
Else
        MsgBox(64, "错误", "数据库文件不存在", 5)
EndIf
#cs ____________________________________

评分

参与人数 1金钱 +30 收起 理由
xms77 + 30 谢谢你的帮忙!

查看全部评分

 楼主| 发表于 2012-10-20 21:51:13 | 显示全部楼层
回复 2# kk_lee69
谢谢kk_Lee69,不过按你说的做了还是报错,后来改为MacAddress text(255),UpdateDateTime text(255),尽然就行了,太意外了。
 楼主| 发表于 2012-10-20 21:52:35 | 显示全部楼层
回复 4# chzj589
谢谢你的帮助,尝试了用text(255)代替char尽然成功了!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-17 15:38 , Processed in 0.088907 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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