繁体   English   中英

MS Access VBA问题

[英]MS Access VBA issue

我在MS Access中创建一个报告 - 我在这里尝试做的基本上是对我已经创建的表的APPEND查询 - 我选择第一个值,更改它并更新表。 我遇到的问题是 - 这个报告将由VB6应用程序使用。 因此用户根本不会看到Access。

我追加查询的问题是它需要运行一个USER ID (4位数字)。 通常,当我在Access中运行报表时,我会将参数传递给Access中的表单-然后使用它们来运行查询。 但是,在这种情况下,我需要用户在附加查询时输入一个值,另外,当在VBA中附加查询时,它首先说"You are about to append a query, are you sure" (或者沿着那些行) ,有没有办法自动化,所以当我追加它没有任何反应?

这是我从tempTable添加和选择日期的tempTable

CurrentDb.Execute "DELETE from [tempCompanyMgmt-NOW];"
DoCmd.OpenQuery "qryCompanyMgmt-SUE" - i made this append!
Set rs1 = CurrentDb.OpenRecordset("Select * from [tempCompanyMgmt-NOW]", , dbOpenDynamic)

因此,只要我按OK,当我收到APPEND流程通知并输入USER ID参数时, USER ID一切正常。

第二行应该是您的减价中的错字。

DoCmd.OpenQuery "qryCompanyMgmt-SUE - i made this append!"

你需要删除qryCompanyMgmt-SUE - i made this append!对表单的引用qryCompanyMgmt-SUE - i made this append! 查询,并将其替换为参数名称。 您可以使用Access接口向查询显式添加parameters子句,然后使用VB6中的ADO(或DAO),在打开/执行查询之前设置参数值。

"You are about to append a query, are you sure"消息是一种访问功能(可以禁用),因此,如果您希望VB6应用程序提供这样的警告,则需要您自己创建一个MsgBox

一种选择是将您的追加查询放入代码中,然后以这种方式填写参数。

我不知道您的确切情况,但是类似:

If not isValidUserID(me.UserID) Then
    msgbox "Please enter a a valid user id"
    exit sub
End If



Dim strSQL As String
strSQL = "DELETE * from [tempCompanyMgmt-NOW];"
CurrentDb.Execute strSQL, dbFailOnError


strSQL = "INSERT INTO tempCompanyMgmt-NOW ( FieldName1, FieldName2, FieldName3 ) " & _
        "SELECT FieldName1, FieldName2, FieldName3 FROM tempCompanyMgmt WHERE UseriD=" & Me.UserID

CurrentDb.Execute strSQL, dbFailOnError

要验证用户标识,您可以执行以下操作:

If (Len(me.UserID) = 4 And IsNumeric(me.UserID)) Then

要么

Public Function isValidUserID(varUserID As Variant) As Boolean
Dim blnRet As Boolean

If Len(varUserID) = 4 And IsNumeric(varUserID) Then
    blnRet = True
End If

isValidUserID = blnRet
End Function

为了摆脱MsgBox告诉我,我打算附加一个查询,我在打开我的追加查询之前将其包含在我的模块中。

DoCmd.SetWarnings False

我意识到,一旦我将值传递给表单(userID),当我的查询被追加时,该值将作为参数传递。 一切准备就绪。 谢谢大家的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM