MS Access。VBA。如何创建只有一条记录的临时表(如果不存在)
我正在寻找一种在窗体打开时创建表的方法。 表应该只创建一次。因此,如果它存在,则不应创建新的。 在相同的形式中,我希望保存来自已创建表中组合框的一些数据。 为此,我尝试使用一个代码:MS Access。VBA。如何创建只有一条记录的临时表(如果不存在),vba,ms-access,Vba,Ms Access,我正在寻找一种在窗体打开时创建表的方法。 表应该只创建一次。因此,如果它存在,则不应创建新的。 在相同的形式中,我希望保存来自已创建表中组合框的一些数据。 为此,我尝试使用一个代码: Sub ViaVBA() Const strSQLCreateFoo_c As String = _ "CREATE TABLE Foo" & _ "(" & _ "MyField1 INTEGER," & _
Sub ViaVBA()
Const strSQLCreateFoo_c As String = _
"CREATE TABLE Foo" & _
"(" & _
"MyField1 INTEGER," & _
"MyField2 Text(10)" & _
");"
Const strSQLAppendBs_c As String = _
"INSERT INTO Foo (MyField1, MyField2) " & _
"SELECT Bar.MyField1, Bar.MyField2 " & _
"FROM Bar " & _
"WHERE Bar.MyField2 Like 'B*';"
If Not TableExists("foo") Then
CurrentDb.Execute strSQLCreateFoo_c
End If
CurrentDb.Execute strSQLAppendBs_c
End Sub
Private Function TableExists(ByVal name As String) As Boolean
On Error Resume Next
TableExists = LenB(CurrentDb.TableDefs(name).name)
End Function
不幸的是,它没有保存组合框中的选定值。
表似乎没有记录,并且不想保存值。
当我添加至少一条记录时,组合框正在存储正确的值
如何使用上面发布的代码创建一个包含一条记录和一些伪信息的表?连接变量输入。用撇号分隔文本字段的参数。使用VALUES子句而不是SELECT。使用
If-Then
代替WHERE子句来测试表单控件的值。不要将保留字名称用作变量
考虑:
Sub ViaVBA()
If Not TableExists("foo") Then
CurrentDb.Execute "CREATE TABLE Foo(MyField1 INTEGER, MyField2 Text(10));"
End If
If Forms!Bar.MyField2 LIKE "B*" Then
CurrentDb.Execute "INSERT INTO Foo (MyField1, MyField2) " & _
"VALUES(" & Forms!Bar.MyField1 & ", '" & Forms!Bar.MyField2 & "')"
End If
End Sub
Private Function TableExists(ByVal strName As String) As Boolean
On Error Resume Next
TableExists = LenB(CurrentDb.TableDefs(strName).Name)
End Function
这是一个相当奇怪的要求。将值从窗体上的第一条记录保存到另一个表的目的是什么?