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

这是一个相当奇怪的要求。将值从窗体上的第一条记录保存到另一个表的目的是什么?