Access 2003 - VBA - 加入两种类型(字符串 = 日期)
Posted
技术标签:
【中文标题】Access 2003 - VBA - 加入两种类型(字符串 = 日期)【英文标题】:Access 2003 - VBA - Joining on two types (string = date) 【发布时间】:2013-06-08 11:59:47 【问题描述】:背景:我正忙于一项研究,我在其中接收存储在 oracle 数据库中的数据。我自己使用 Access 数据库来存储来自 oracle 数据库的数据(以及来自其他来源的数据,与此问题无关)
oracle 数据库中的数据以访问格式提供给我。然后我运行以下查询以检索“oracle 数据”并将(或更新,如果该行已经存在)插入到我自己的访问数据库中。
oracle 数据库导出以文本格式保存它的日期,我自己的数据库中有日期格式,所以我使用 VBA 函数将文本转换为日期。
我的问题:如果字符串转换为日期,我可以加入字符串和日期吗?我应该如何进行?
UPDATE [TABLE1] INNER JOIN [URI_to_oracle_export.mdb].[TABLE2]
ON ([TABLE1].PT=[TABLE2].PT)
AND ([TABLE1].DCMDATE=toDateFunction([TABLE2].DCMDATE))
AND ([TABLE1].CPEVENT=[TABLE2].CPEVENT) SET ...the rest of the SQL..
我的 toDateFunction:
Function toDateFunction(input As String)
toDateFunction= CDate(Right(input , 2) & "/" & Mid(input , 5, 2) & "/" & Left(input , 4))
End Function
【问题讨论】:
【参考方案1】:因此,根据您的转换函数,您收到的 Oracle 文本格式似乎是 YYYYMMDD,对于在这种情况下使用类型转换进行连接,我更愿意反过来工作将我的访问值转换为文本,例如:
WHERE OracleTable.Date = Format(AccessTable.Date, "YYYYMMDD")
或者
INNER JOIN OracleTable ON OracleTable.Date = Format(AccessTable.Date, "YYYYMMDD")
如果您愿意,您仍然可以反向执行并将您的 Oracle 值转换为日期,这更像:
WHERE DateSerial(Left(OT.Date,4),Mid(OT.Date,5,2),Right(OT.Date,2)) = AT.Date
从字面上构建您的日期值时,我更喜欢使用 DateSerial 而不是 CDate
【讨论】:
以上是关于Access 2003 - VBA - 加入两种类型(字符串 = 日期)的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 2003 - 创建 MDE 文件失败:错误 VBA 已损坏?
有没有办法在 VBA(MS Access 2002 或 2003)中调用任何控件的更新前事件过程?
Access 2003 FORMS:当我在运行时使用 VBA 设置时,即使我关闭然后打开,ListBox 的“RowSource”仍然存在