标签: access-vba

如何在共享和独占模式之间切换Access数据库?

我正在开发一个需要编辑Access数据库中某些对象的程序.它还运行一个子程序(长篇故事),试图访问底层的JET数据库,而Access仍然通过ODBC 打开它.

问题是,一旦我开始使用VBA编辑Form对象 - 例如,使用Application.LoadFromText - Access将数据库更改为独占模式.独家模式本身很好,我知道它为什么需要它.但我之后需要能够切换回"共享"模式,以便我可以运行我的子程序.

我观察到,如果您使用UI在设计模式下打开表单,Access会将数据库切换到Exclusive.(您可以通过尝试从另一台计算机打开它来确认这一点.)但是当您关闭表单设计器时,Access会立即将其切换回共享模式,这是我希望的.

有没有办法使用VBA/COM调用自己来回切换?

我知道我可以调用Application.CloseCurrentDatabase(),然后调用OpenCurrentDatabase(),但这会关闭所有窗口并扰乱UI,因此它并不理想.

ms-access vba dao access-vba

1
推荐指数
1
解决办法
5779
查看次数

VBA中是否有NotIn("A","B")功能?

我正在编写一个需要输入的函数,我的数据验证看起来很尴尬.如果InputFld不是"A","B"或"C",则表示错误:

If InputFld <>"A" and InputFld<>"B" and InputFld<>"C" then goto ErrorHandler

这对我来说太丑了.有更优雅的解决方案吗?我想写一些类似的东西:

If InputFld not in ("A","B","C") then goto ErrorHandler

看到?这种方式更容易阅读和维护.但我不知道该怎么做.

ms-access vba access-vba

1
推荐指数
1
解决办法
480
查看次数

如何在ms access 2007中按日期排序?

只想知道如何对显示日期格式为mm/dd/yyyy的数据的文本列进行排序.

sorting ms-access ms-access-2007 access-vba

1
推荐指数
1
解决办法
3866
查看次数

访问Recordset中的字段值 - 访问VBA

这就是我想要做的事情,如果我朝错误的方向前进,我会道歉.我正在尝试遍历存储在表t_Directory中的文件路径,如果文件扩展名为"xlsx",则打开Excel文件并使用Excel工作表的FileID和工作表计数以及工作表名称更新另一个名为t_SheetInfo的表.如果有更有效的方法,有人会花点时间检查我到目前为止所得到的东西,或者引导我朝着正确的方向前进吗?我不是百分百肯定我知道自己在做什么.一如既往,提前感谢您的帮助!!

Dim db As DAO.Database
Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim xlWS As Excel.Worksheet

Private Sub CycleThroughWorkSheets()
Dim rs As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim sSQL1 As String
Dim sSQL2 As String
Dim sSQL3 As String
Dim rsFilePath As String
Dim rsWSName As String

Set db = CurrentDB

sSQL1 = "SELECT t_Directory.FileID, t_Directory.FilePath FROM t_Directory " & _
        "WHERE (((t_Directory.FileExtension)=""'xlsx'""))"
Set rs = db.OpenRecordset("sSQL1", dbOpenDynaset)
    With rs
        rs.MoveFirst
            Do While Not rs.EOF
                rsFilePath = rs.Fields("[FilePath]")
                OpenWorkBook …
Run Code Online (Sandbox Code Playgroud)

automation vba access-vba

1
推荐指数
1
解决办法
5万
查看次数

从行Access 2010动态创建列

我是比较新的访问,我有里有桌子AuthorName,BookTitleCoAuthor. AuthorName并且BookTitle是一个复合键.

目前查询提取的信息如下:

AuthorName---------BookTitle------CoAuthor

Steven King--------Dark Half------Peter Straub

Steven King--------Dark Half------John Doe

James Patterson----Another Time

Jeff Hanson--------Tales of Time---Joe Smith
Run Code Online (Sandbox Code Playgroud)

如果可能,我希望它(动态)读取

AuthorName---------BookTitle---------CoAuthor1--------CoAuthor2

Steven King----------Dark Half--------Peter Straub-----Joe Doe

James Patterson----Another Time

Jeff Hanson----------Tales of Time----Joe Smith
Run Code Online (Sandbox Code Playgroud)

因此,如果稍后添加了另一位作者,则会出现CoAuthor的第三列.

这可能与VBA或SQL有关吗?

sql ms-access vba access-vba

1
推荐指数
1
解决办法
109
查看次数

计算Microsoft Access中的年龄和月份(2010年)

我有两个领域(体检日期和出生日期).我计算了年龄((体检日期 - 出生日期)/365.25).我想要做的是在单独的领域中计算年龄和月份的年龄.我不确定是否可以使用代码生成器或某种方式完成.

database ms-access access-vba ms-access-2010

1
推荐指数
1
解决办法
7201
查看次数

如何在MS Access中动态引用控件名称

我在MS Access窗体对象中有以下代码.

Private Sub UpdatePMText(sLang As String)
'Used to pass both Mandate and Language Info to called Sub that will execute the queries
Dim iMandate As Integer

'Check if there is text in the box.
If Me.Controls("txtInput_PM_" & sLang & "_DRAFT") = Null Or Me.Controls("txtInput_PM_" & sLang & "_DRAFT") = "" Then
    MsgBox ("There is no text in the " & sLang & " DRAFT Field." & vbNewLine & "The operation will not be executed.")
    Exit Sub
End If

iMandate …
Run Code Online (Sandbox Code Playgroud)

vba access-vba ms-access-2010

1
推荐指数
1
解决办法
6643
查看次数

如果月份不同,则比较日期不起作用

我正在尝试比较访问数据库中的4个日期字段,并将最新值和adatum之间的日期差异设置为parkdauer.它适用于同一月份日期的任何行.

strSQL = "UPDATE Steuerungsboard 
          SET parkdauer = DateDiff('d', [kspausgang], [adatum]) 
          WHERE FORMAT(kspausgang, 'dd/MM/yyyy') >= FORMAT( iausgang, 'dd/MM/yyyy') 
             And FORMAT( kspausgang, 'dd/MM/yyyy') >= FORMAT( aausgang, 'dd/MM/yyyy') 
             And FORMAT( kspausgang, 'dd/MM/yyyy') >= FORMAT( gausgang, 'dd/MM/yyyy');"
CurrentDb.Execute strSQL, FailonError
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

sql access-vba

1
推荐指数
1
解决办法
48
查看次数

MS Access-在SQL Server上存储VBA逻辑

这可能有点麻烦。我有一个MS Access前端,它位于我们的SQL Server后端,并使用VBA和SQL存储过程的组合来处理数据。

我的一些VBA过程通过将字符串缝合在一起然后将它们发送到要执行的服务器来动态地制作SQL查询。我的问题是,这个过程是否可以反向进行?例如,我在VBA中设置了一个方法,该方法从服务器中的表中提取字符串,然后执行它。

为了澄清,我知道如何使用存储过程来处理后端的逻辑。我的目标是找到一种从SQL表/存储过程中提取原始VBA,然后在Access中运行它的方法。

sql-server ms-access access-vba

1
推荐指数
1
解决办法
36
查看次数

删除名称中包含<String>的所有表

我正在寻找一个函数或子函数(在模块中),我可以调用它来删除名称中包含"tbl"的所有表.我发现几段代码无法正常工作.


澄清我的问题:

我在Access工作.在我的项目中,我使用VBA生成一些表.我事先不知道这些表的名称是什么.我知道我想要删除的表("DROP")在其名称中有"tbl".

我正在寻找的代码是这样的:

DoCmd.runSQL (DROP ALL TABLE LIKE '%tbl%')
Run Code Online (Sandbox Code Playgroud)

我知道这段代码不起作用,但它应该对我想要实现的内容有所了解

ms-access vba ms-access-2007 access-vba

0
推荐指数
1
解决办法
3625
查看次数