vba - 微软访问。VBA。如何仅在不存在的情况下创建具有 1 条记录的临时表
问题描述
我正在寻找一种在打开表格时创建表格的方法。表应该只创建一次。因此,如果它存在,则不应创建新的。以相同的形式,我想从创建的表中的组合框中保存一些数据。为此,我尝试使用代码:
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
推荐阅读
- python - 如何运行仅在用户输入期间显示命令提示符的 python 脚本?
- javascript - 如何将一个单词添加到字符串中的另一个单词到Javascript中的数组?
- java - Visual Studio Code:通过 SSH 启动时,Java 扩展包找不到 java sdk
- c# - 如何传递表达式
> 创建具有其他值的表达式树以在实体框架中使用 - vue.js - vue-chat-scroll not scrolling to the last message in the list
- python - Python Web Scraping:urllib.request.urlopen 挂起
- react-native - react-native-phone-input white content on iphone
- java - Oracle JDBC 在 RedHat 7.7 上不再需要从套接字读取数据
- linux - 使用套接字传输时间
- android - Android Studio 代码复制粘贴问题