问一:
用DAO建库
Public Function CreatMDB(Optional ByVal catalog As String, Optional ByVal name As String) As Boolean
Dim dbDataBase As Database
Dim sNewDBPathAndName As String
Dim i As Integer
Dim path As String
path = App.path & "\" & catalog
If Not IsFolderExists(path) Then '无目录则建目录
MkDir path
End If
If IsFileExists(path & "\" & name & ".mdb") Then
MsgBox path & "\" & name & ".mdb" & "文件已存在!", vbInformation, "提示" '有同名文件则提示"文件已存在!", 不创建文件
Exit Function
End If
sNewDBPathAndName = path & "\" & name & ".mdb"
Set dbDataBase = CreateDatabase(sNewDBPathAndName, dbLangGeneral, dbEncrypt)
Set dbDataBase = Nothing
CreatMDB = True
End Function
成功在指定目录下建好一个MDB文件了用DAO在此数据库中建表Public Function CreatTable(Optional ByVal dbCatlog As String, Optional ByVal dbName As String, Optional ByVal tName As String) As Boolean'****************************************用DAO创建表***********************************
Dim path As String
Dim dbDataBase As Database
Dim tdExample As TableDef
Dim fld_pDT As Field
Dim fld_pName As Field
Dim fld_pDisc As Field
Dim fld_pAddr As Field
Dim fld_pValue As Field path = App.path & "\" & dbCatlog & "\" On Error Resume Next
Set dbDataBase = DAO.OpenDatabase(path & dbName & ".mdb", True, False)
Set tdExample = dbDataBase.CreateTableDef(tName)
Set fld_pDT = tdExample.CreateField("日期时间", dbTime)
Set fld_pName = tdExample.CreateField("参数名", dbText)
Set fld_pDisc = tdExample.CreateField("参数描述", dbText)
Set fld_pAddr = tdExample.CreateField("参数地址", dbText)
Set fld_pValue = tdExample.CreateField("参数值", dbSingle) tdExample.Fields.Append fld_pName
tdExample.Fields.Append fld_pDisc
tdExample.Fields.Append fld_pAddr
tdExample.Fields.Append fld_pValue dbDataBase.TableDefs.Append tdExample Set fld_pName = Nothing
Set fld_pDisc = Nothing
Set fld_pAddr = Nothing
Set fld_pValue = Nothing
Set tdExample = Nothing
Set dbDataBase = Nothing
End Function建表不成功,不提示任何错误.请问此函数错在什么地方啦?
用SQL语句建表是成功的.代码如下strconn = "provider=microsoft.jet.oledb.4.0;data source=" & path & dbName & ".mdb"
Dim objconn As ADODB.Connection
Set objconn = New ADODB.Connection
objconn.Open strconn
strsql = "create table " & tName & _
"(日期时间 datetime default now(), " & _
"参数名 varchar(50) not null, " & _
"参数描述 varchar(50)not null, " & _
"参数地址 varchar(50)not null," & _
"参数值 float ," & _
"primary key (日期时间))"
objconn.Execute (strsql)
objconn.Close
Set objconn = Nothing问二:
VB用代码操作数据库有好几种方式,ADO,DAO,SQL等,哪种方法最优越?
问三:
因本人初涉这方面,有时候用下DAO,有时候又用下ADO,当代码调试不出来,又会用ADODC控件,有时候觉得SQL语句比较简单时又会去用它.这样感觉没有一种好的习惯或者说是统一性.对于知识结构有感觉有些乱了有没有一种方式能胜任所有数据库操作,而且比较优越或者说当前比较流行的?
(因为在网上又有些人说SQL不可以创建ACCESS这种文件型的数据库的表,只能创建SQL SERVER这种服务型的数据库的表)但我确实找到创建的例子了呀~经验的前辈们给我一个完整的答案吧,我想有一套自己对于数据库操作的统一的习惯,万分感谢:)
用DAO建库
Public Function CreatMDB(Optional ByVal catalog As String, Optional ByVal name As String) As Boolean
Dim dbDataBase As Database
Dim sNewDBPathAndName As String
Dim i As Integer
Dim path As String
path = App.path & "\" & catalog
If Not IsFolderExists(path) Then '无目录则建目录
MkDir path
End If
If IsFileExists(path & "\" & name & ".mdb") Then
MsgBox path & "\" & name & ".mdb" & "文件已存在!", vbInformation, "提示" '有同名文件则提示"文件已存在!", 不创建文件
Exit Function
End If
sNewDBPathAndName = path & "\" & name & ".mdb"
Set dbDataBase = CreateDatabase(sNewDBPathAndName, dbLangGeneral, dbEncrypt)
Set dbDataBase = Nothing
CreatMDB = True
End Function
成功在指定目录下建好一个MDB文件了用DAO在此数据库中建表Public Function CreatTable(Optional ByVal dbCatlog As String, Optional ByVal dbName As String, Optional ByVal tName As String) As Boolean'****************************************用DAO创建表***********************************
Dim path As String
Dim dbDataBase As Database
Dim tdExample As TableDef
Dim fld_pDT As Field
Dim fld_pName As Field
Dim fld_pDisc As Field
Dim fld_pAddr As Field
Dim fld_pValue As Field path = App.path & "\" & dbCatlog & "\" On Error Resume Next
Set dbDataBase = DAO.OpenDatabase(path & dbName & ".mdb", True, False)
Set tdExample = dbDataBase.CreateTableDef(tName)
Set fld_pDT = tdExample.CreateField("日期时间", dbTime)
Set fld_pName = tdExample.CreateField("参数名", dbText)
Set fld_pDisc = tdExample.CreateField("参数描述", dbText)
Set fld_pAddr = tdExample.CreateField("参数地址", dbText)
Set fld_pValue = tdExample.CreateField("参数值", dbSingle) tdExample.Fields.Append fld_pName
tdExample.Fields.Append fld_pDisc
tdExample.Fields.Append fld_pAddr
tdExample.Fields.Append fld_pValue dbDataBase.TableDefs.Append tdExample Set fld_pName = Nothing
Set fld_pDisc = Nothing
Set fld_pAddr = Nothing
Set fld_pValue = Nothing
Set tdExample = Nothing
Set dbDataBase = Nothing
End Function建表不成功,不提示任何错误.请问此函数错在什么地方啦?
用SQL语句建表是成功的.代码如下strconn = "provider=microsoft.jet.oledb.4.0;data source=" & path & dbName & ".mdb"
Dim objconn As ADODB.Connection
Set objconn = New ADODB.Connection
objconn.Open strconn
strsql = "create table " & tName & _
"(日期时间 datetime default now(), " & _
"参数名 varchar(50) not null, " & _
"参数描述 varchar(50)not null, " & _
"参数地址 varchar(50)not null," & _
"参数值 float ," & _
"primary key (日期时间))"
objconn.Execute (strsql)
objconn.Close
Set objconn = Nothing问二:
VB用代码操作数据库有好几种方式,ADO,DAO,SQL等,哪种方法最优越?
问三:
因本人初涉这方面,有时候用下DAO,有时候又用下ADO,当代码调试不出来,又会用ADODC控件,有时候觉得SQL语句比较简单时又会去用它.这样感觉没有一种好的习惯或者说是统一性.对于知识结构有感觉有些乱了有没有一种方式能胜任所有数据库操作,而且比较优越或者说当前比较流行的?
(因为在网上又有些人说SQL不可以创建ACCESS这种文件型的数据库的表,只能创建SQL SERVER这种服务型的数据库的表)但我确实找到创建的例子了呀~经验的前辈们给我一个完整的答案吧,我想有一套自己对于数据库操作的统一的习惯,万分感谢:)
microsoft DAO 3.x object library我都引用了,是不是还有啥没引用上,还是类型表达错了?
期盼指点
改为
Set fld_pDT = tdExample.CreateField("日期时间", dbDate)
2. 问二: VB用代码操作数据库有好几种方式,ADO,DAO,SQL等,哪种方法最优越?
肯定是用ADO方式了,这种比较流行,当然处理问题要视情况而定,并不绝对
这样,出错不会有提示
关于dao所有功能这都能找到.
Dim cat As New ADOX.Catalog
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\new.mdb"'创建表
Dim conn1 As ADODB.Connection
Dim SQLCreate As StringSet conn1 = cat.ActiveConnection
SQLCreate = "create table..."
conn1.Execute(SQLCreate, 1, adCmdText)
conn1.close
http://download.csdn.net/source/1483924
这些受教了,果然出现错误提示是"不识别的数据库^^^^^"
可是我晕,我是用DAO创建的库,为什么在里面建表它就不识别?
不同意楼上某些人的说法。DAO 有独特的功能,建库、压缩都好用。对于本地 Access 数据库来说,是很好的选择。技术只有“适用”,没有“最好”。一般来说,ADO 不适于数据库管理(包括创建、压缩)。这些工作,在 ADO 领域需要借助于 ADOX。我不知道楼上是怎么用“最好选择”建库的。可能是我孤陋寡闻了。
可是我晕,我是用DAO创建的库,为什么在里面建表它就不识别?======================================================把你的引用改为 3.6 版本。
其实对于ADO,或者DAO我都想掌握他们的区别,及两者的应用.我现在用ADO方式实现了功能了
问题就是DAO我建成功,表建表不行^^^^^^有没有人能发一下,ADO应用更为详细的例子代码?比如从建库,建表,操作表,操作字段等~~
DAO的的相应完整点的代码
我想能作一下比较,应该就可以总结了~~~~~如果分不够可以加分:)
可是我晕,我是用DAO创建的库,为什么在里面建表它就不识别? ====================================================== 把你的引用改为 3.6 版本。
*************************************************
其实3.6和3.5我都试过了,都不行.出错提示"类型不匹配"调试到下面代码红色部分就停了'****************************************用DAO创建表***********************************
Dim path As String
Dim dbDataBase As Database
Dim tdExample As TableDef Dim fld_pDT As Field
Dim fld_pName As Field
Dim fld_pDisc As Field
Dim fld_pAddr As Field
Dim fld_pValue As Field path = App.path & "\" & dbCatlog & "\"' On Error Resume Next
Set dbDataBase = OpenDatabase(path & dbName & ".mdb", True, False)
Set tdExample = dbDataBase.CreateTableDef(tName) Set fld_pDT = tdExample.CreateField("日期时间", dbDate)
Set fld_pName = tdExample.CreateField("参数名", dbText)
Set fld_pDisc = tdExample.CreateField("参数描述", dbText)
Set fld_pAddr = tdExample.CreateField("参数地址", dbText)
Set fld_pValue = tdExample.CreateField("参数值", dbSingle) tdExample.Fields.Append fld_pName
tdExample.Fields.Append fld_pDisc
tdExample.Fields.Append fld_pAddr
tdExample.Fields.Append fld_pValue dbDataBase.TableDefs.Append tdExample Set fld_pName = Nothing
Set fld_pDisc = Nothing
Set fld_pAddr = Nothing
Set fld_pValue = Nothing
Set tdExample = Nothing
Set dbDataBase = Nothing奇怪,怎么回事呢.of123能再帮看看不?