xms77 发表于 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)就行了

kk_lee69 发表于 2012-10-20 09:18:34

回复 1# xms77

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

例如: char, char

chzj589 发表于 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")
?????

chzj589 发表于 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 ____________________________________

xms77 发表于 2012-10-20 21:51:13

回复 2# kk_lee69
谢谢kk_Lee69,不过按你说的做了还是报错,后来改为MacAddress text(255),UpdateDateTime text(255),尽然就行了,太意外了。

xms77 发表于 2012-10-20 21:52:35

回复 4# chzj589
谢谢你的帮助,尝试了用text(255)代替char尽然成功了!
页: [1]
查看完整版本: 【已解决】数据库创建出错,看了半天不知道为什么,郁闷啊!