使用DoCmd.SetParameter的问题

问题描述 投票:1回答:1

我在链接表上有一个查询,我正在尝试打开结果。我正在使用DoCmd.SetParameter来设置过滤OpenQuery的结果。我之前在另一张桌子上使用过它,它运行良好。但是出于某些原因,我无法得到这个结果。

我的代码如下:

Dim ReportDate As Date
Dim strReportDate As String

ReportDate = DateValue(Me.FromDate.Value)

strReportDate = Format(ReportDate, "mm-dd-yyyy")

DoCmd.SetParameter "Enter ShipDate", strReportDate
DoCmd.OpenQuery "TrackingDataQuery", acViewNormal, acReadOnly

(格式是因为最初,我正在查询我的查询中的日期字段,并认为可能存在问题,所以我在查询中创建了一个计算字段,该字段采用该字段并在其上执行相同的格式。)

令我困惑的是,如果我只是运行查询,它会问我应该的标准,如果我输入日期(如上所述的“mm-dd-yyyy”格式),它会给出我是正确的结果集。

用于查询的sql(现在)是(我也只使用实际的ShipDate字段尝试了这一点,只使用了DateValue转换(并调整了上面的内容)。在链接的SQL表中,ShipDate是一个日期时间类型:

SELECT dbo_TrackingData.PackageID, dbo_TrackingData.TrackingNo,
dbo_TrackingData.ShipDate, dbo_TrackingData.weight, dbo_TrackingData.Ref1,
dbo_TrackingData.Ref2, dbo_TrackingData.Ref5,
Format(DateValue([ShipDate]),"mm-dd-yyyy") AS strShipDate
FROM dbo_TrackingData
WHERE (((Format(DateValue([ShipDate]),"mm-dd-yyyy"))=[Enter ShipDate]));
access-vba ms-access-2010
1个回答
1
投票

这应该工作:

Dim strReportDate As String

strReportDate = "#" & Format(Me!FromDate.Value, "yyyy\/mm\/dd") & "#"

DoCmd.SetParameter "Enter ShipDate", strReportDate
DoCmd.OpenQuery "TrackingDataQuery", acViewNormal, acReadOnly

用这个SQL:

SELECT 
    dbo_TrackingData.PackageID, dbo_TrackingData.TrackingNo,
    dbo_TrackingData.ShipDate, dbo_TrackingData.weight, dbo_TrackingData.Ref1,
    dbo_TrackingData.Ref2, dbo_TrackingData.Ref5
FROM 
    dbo_TrackingData
WHERE
    [ShipDate] = [Enter ShipDate];
© www.soinside.com 2019 - 2024. All rights reserved.