【已解决】数据库创建出错,看了半天不知道为什么,郁闷啊!
本帖最后由 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)就行了 回复 1# xms77
把有問題的那段在 跟下面不一樣 欄位名稱的地方 用 []把欄位名稱 框起來
例如: char, char 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")
????? 查看帮助:
#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 ____________________________________ 回复 2# kk_lee69
谢谢kk_Lee69,不过按你说的做了还是报错,后来改为MacAddress text(255),UpdateDateTime text(255),尽然就行了,太意外了。 回复 4# chzj589
谢谢你的帮助,尝试了用text(255)代替char尽然成功了!
页:
[1]