我必须使用许多宏查询来记录MS Access数据库等.我希望使用代码将每个SQL查询提取到与查询命名相同的文件,例如,如果查询名为q_warehouse_issues,那么我希望提取SQL到名为q_warehouse_issues.sql的文件
我不希望导出QUERY结果集,只是SQL!
我知道我可以在Access中手动执行此操作,但我厌倦了所有点击,执行saveas等.
如何测试记录集是否为空?
Dim temp_rst1 As Recordset
Dim temp_rst2 As Recordset
Set temp_rst1 = db.OpenRecordset("SELECT * FROM ORDER_DATA WHERE SKUS_ORDERED = '" & curSKU1 & "' AND [ORDER] = " & curOrder)
Set temp_rst2 = db.OpenRecordset("SELECT * FROM ORDER_DATA WHERE SKUS_ORDERED = '" & curSKU2 & "' AND [ORDER] = " & curOrder)
If IsNull(temp_rst1) Or IsNull(temp_rst2) Then MsgBox "null"
Run Code Online (Sandbox Code Playgroud)
我正在根据select语句打开几个记录集.如果没有记录,IsNull会返回true吗?
我正在尝试编写一个接受数组作为参数的函数.该数组可以包含任意数量的元素.
Function processArr(Arr() As Variant) As String
Dim N As Variant
dim finalStr as string
For N = LBound(Arr) To UBound(Arr)
finalStr = finalStr & Arr(N)
Next N
processArr = finalStr
End Function
Run Code Online (Sandbox Code Playgroud)
以下是我尝试调用该函数的方法:
Sub test()
Dim fString as string
fString = processArr(Array("foo", "bar"))
End Sub
Run Code Online (Sandbox Code Playgroud)
我收到一个错误说:
编译错误:类型不匹配:数组或用户定义的预期类型.
我究竟做错了什么?
我仍然试图围绕VBA中的接口和事件如何协同工作(如果有的话).我即将在Microsoft Access中构建一个大型应用程序,我希望尽可能灵活和可扩展.为此,我想利用MVC,接口(2)(3),自定义集合类,使用自定义集合类引发事件,找到更好的方法来集中和管理由窗体上的控件触发的事件,以及一些额外的VBA设计模式.
我预计这个项目会变得非常毛茸茸,所以我想尝试在VBA中一起使用接口和事件的限制和好处,因为它们是我认为在VBA中真正实现松散耦合的两种主要方式(我认为).
首先,有一个问题是在尝试在VBA中一起使用接口和事件时引发的错误.答案指出"显然不允许事件通过接口类传递到具体类中,就像你想使用'Implements'一样."
然后我在另一个论坛的答案中找到了这个陈述:"在VBA6中,我们只能引发在类的默认接口中声明的事件 - 我们不能引发在Implemented接口中声明的事件."
因为我还在寻找接口和事件(VBA是我真正有机会在现实环境中尝试OOP的第一种语言,我知道不寒而栗),我无法在脑海中彻底解决所有问题这意味着在VBA中一起使用事件和接口.听起来你可以同时使用它们,听起来有点像你不能.(例如,我不确定上面的"一个类的默认接口"与"一个已实现的接口"是什么意思.)
有人能给我一些基本的例子,说明在VBA中一起使用接口和事件的真正好处和局限吗?
所以函数=Now()....有一种方法我可以使用这个,只得到日期,而不是时间?
或者只是这个想法的功能?
我有一个在Microsoft Access 2010中运行的查询,它需要超过30分钟才能正常运行.我想向最终用户呈现查询的一些状态.进度条会很好,但不是必需的.访问似乎线程很差,并且在查询执行期间锁定紧张,否定我尝试的任何更新.虽然我宁愿鞭打VS并编写我自己的应用程序来执行此操作,但我不得不使用Access.
有任何想法吗?
编辑
我曾经从填充数据库的批处理脚本中运行它,但我希望将它全部包含在Access中.具体来说,"查询"实际上是一个ping一系列主机的VBA脚本.所以我不关心优化时间本身,而只是让最终用户知道它没有被锁定.
我的访问数据库中有两个表,我希望能够导出到excel.
我可以通过打开表然后执行File-> Export ...然后选择格式并输入文件名来实现.
但是,通过这种方式,用户实际上必须输入名称,因此存在误导文件或将其保存为错误格式或位置错误的空间.此外,这两个表必须导出到两个单独的工作簿.
我希望能够做的是在表单上创建一个按钮,该表单自动将一个表导出到一个工作表,另一个导出到另一个工作表,两个都在同一个excel工作簿中.
如果将它们放在同一个工作簿中是不可能的,那很好.我只是希望它们自动导出到保存访问数据库的同一目录中.
如果您知道如何操作,则可以添加额外的权限来自定义名称以包含日期.这样,该目录也将具有历史导出.有什么建议?
我的Access表单上有一个文本框和一个按钮.在按钮的单击事件中,我想查看文本框是否为空,如果是,则不会执行任何操作.所以我用
If Me.textbox.Value = Null Then
Exit Sub
End if
Run Code Online (Sandbox Code Playgroud)
但它不起作用...我在执行窗口中检查了textbox.value并且它是Null,但if子句不起作用......为什么?
编辑:@Dimse,我试过"",不起作用.而且textbox.text = Null,它弹出一个错误告诉我文本框没有活动..很奇怪.
我目前正在使用以下代码将数据从工作表导出到MS Access数据库,代码循环遍历每一行并将数据插入MS Access Table.
Public Sub TransData()
Application.ScreenUpdating = False
Application.EnableAnimations = False
Application.EnableEvents = False
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets("Folio_Data_original").Activate
Call MakeConnection("fdMasterTemp")
For i = 1 To rcount - 1
rs.AddNew
rs.Fields("fdName") = Cells(i + 1, 1).Value
rs.Fields("fdDate") = Cells(i + 1, 2).Value
rs.Update
Next i
Call CloseConnection
Application.ScreenUpdating = True
Application.EnableAnimations = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Run Code Online (Sandbox Code Playgroud)
Public Function MakeConnection(TableName As String) As Boolean
'*********Routine to establish connection with database
Dim DBFullName As String
Dim …Run Code Online (Sandbox Code Playgroud) SQL注入攻击似乎有些歇斯底里.最近,在这里
如果我在Excel中创建一个连接到Access数据库的宏,我真的必须关注SQL注入吗?它不在网上,它在我的办公室使用(你们还记得台式机吗?).我并不担心我的同事会破坏我.如果他们足够聪明,可以进行SQL注入,他们是否足够聪明,无法破解我的加载密码并只是更改代码?