如果高手没有时间细看,请直接看最后一行的提问.'创建表的代码
Dim DefDatabase As Database
Dim DefTable As TableDef, DefField As Field
Dim a
dim b
b=Format(Time, "h")
Set DefDatabase = Workspaces(0).OpenDatabase(App.Path & "\data.mdb", 0, False)
Set DefTable = DefDatabase.CreateTableDef("b")
Set DefField = DefTable.CreateField("姓名, dbText, 18)
DefTable.Fields.Append DefField
Set DefField = DefTable.CreateField("年龄", dbText, 8)
DefTable.Fields.Append DefField
Set DefField = DefTable.CreateField("班级", dbText, 8)
DefTable.Fields.Append DefField
'表追加
DefDatabase.TableDefs.Append DefTable我想每小时建一个表.把每个小时段输入的数据记录到相应的小时的表中.考虑到在某一个小时中,可能软件会启动或退出.
如果在软件启动时检测本小时时段的表是否存在,如果存在则提示表已存在;如果隔了好几个小时后启动软件,那么表不存在,就新建一个表.问题如下:
如何检测一个数据库中的表是否已存在?
Dim DefDatabase As Database
Dim DefTable As TableDef, DefField As Field
Dim a
dim b
b=Format(Time, "h")
Set DefDatabase = Workspaces(0).OpenDatabase(App.Path & "\data.mdb", 0, False)
Set DefTable = DefDatabase.CreateTableDef("b")
Set DefField = DefTable.CreateField("姓名, dbText, 18)
DefTable.Fields.Append DefField
Set DefField = DefTable.CreateField("年龄", dbText, 8)
DefTable.Fields.Append DefField
Set DefField = DefTable.CreateField("班级", dbText, 8)
DefTable.Fields.Append DefField
'表追加
DefDatabase.TableDefs.Append DefTable我想每小时建一个表.把每个小时段输入的数据记录到相应的小时的表中.考虑到在某一个小时中,可能软件会启动或退出.
如果在软件启动时检测本小时时段的表是否存在,如果存在则提示表已存在;如果隔了好几个小时后启动软件,那么表不存在,就新建一个表.问题如下:
如何检测一个数据库中的表是否已存在?
On Error Resume Next
Dim DB As Database
Dim i As Long Set DB = DBEngine.Workspaces(0).Databases(0) DB.TableDefs.Refresh
For i = 0 To DB.TableDefs.Count - 1
If strTableName = DB.TableDefs(i).Name Then
' 表存在
ifExistTable = True
Exit For
End If
Next i
Set DB = Nothing
End Function
Private Sub Form_Click()
On Error Resume Next
appdisk = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\")
Set Conn = CreateObject("ADODB.Connection")
Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & appdisk & "bwscale.mdb"
Set rs = Conn.execute("bwcust")
MsgBox IIf(Err.Number <> 0, "表不存在", "表存在")
End Sub
这样可以用吗?
Private Sub Form_Click()
On Error Resume Next
appdisk = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\")
SJKnm = appdisk & "bwscale.mdb"
Tablenm = "cbm666"
Set Conn = CreateObject("ADODB.Connection")
Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & SJKnm
Set rs = Conn.execute(Tablenm)
TabYN = IIf(Err.Number <> 0, False, True)
If TabYN Then
MsgBox "表已存在"
Else
Call CreateTable(SJKnm, Tablenm)
End If
End SubPublic Sub CreateTable(MDBnm$, Tabnm$)
On Error GoTo Errhandler
Dim DefDatabase As Database
Dim DefTable As TableDef, DefField As Field
Set DefDatabase = Workspaces(0).OpenDatabase(MDBnm, 0, False)
Set DefTable = DefDatabase.CreateTableDef(Tabnm)
'****************** 定义表与字段 ****************
Set DefField = DefTable.CreateField("姓名", dbText, 8) '建立姓名字段为8个字符型
DefTable.Fields.Append DefField
Set DefField = DefTable.CreateField("性别", dbText, 2) '建立性别字段为2个字符型
DefTable.Fields.Append DefField
DefField.AllowZeroLength = True '该字段允许为空
Set DefField = DefTable.CreateField("年龄", dbInteger, 3) '建立年龄字段为3个的常整型
DefTable.Fields.Append DefField '字段追加
DefDatabase.TableDefs.Append DefTable '表追加
'***********************************************
MsgBox "新表已建立完成"
Exit Sub
Errhandler:
MsgBox "数据库不存在或其它错误", vbCritical
End Sub
印象中ACCESS也能提供类似于SQL的系统表,可以查询表名是否存在