【问题标题】:Temporary data type casting for a single Query单个查询的临时数据类型转换
【发布时间】:2014-04-03 14:56:34
【问题描述】:

好吧,我意识到我要问的可能是不可能的,我可以接受。但如果可能的话,它会让我的生活更轻松。

在我的 MS Access 数据库中,我尝试查询 2 个表。这些表都链接到我的 Access DB,一个链接到 Excel 文件 (MSSB Reps DTP),其中包含来自单独 DB2 数据库的转储。 我的查询中的另一个表 (SalesPage DNK Rep Query) 链接到另一个 Access DB,后者又链接到 SQL 数据库。这是查询设计屏幕的图像:

表的链接位置并不重要,因为它们是链接表,并且由于这是 MS Access,因此我无法编辑表。因此,我不能简单地进入任一表的设计模式并更改给定列的数据类型。

每个表都有一个名为CRD Number 的列。我想基于此列在这两个表之间创建一个内部连接。只是一个简单的日常内部连接。但是我不能,因为CRD Number 列存储为MSSB Reps DTP 表的数字,以及SalesPage DNK Rep Query 表中的文本。

我想知道是否有某种方法可以临时使用函数将CRD Number 列从MSSB Reps DTP 表中“转换”为文本,以便我可以运行此查询。但是,任何解决方案都将受到赞赏。只是不要告诉我编辑 Excel 文档。由于各种原因,我正在努力避免这种情况。

【问题讨论】:

    标签: ms-access ms-access-2007


    【解决方案1】:

    您可以使用CStr 将数字转换为文本。

    SELECT *
    FROM
        [MSSB Reps DTP] AS m
        INNER JOIN [SalesPage DNK Rep Query] AS s
        ON CStr(m.[CRD Number]) = s.[CRD Number];
    

    Access 查询设计器可能拒绝在设计视图中显示该连接,但您可以切换到 SQL 视图并编辑语句文本。

    【讨论】:

    • 太棒了。我会试一试并报告。
    • 好吧,我搞定了。第一次尝试使用该函数时遇到了问题,因为每个表的CRD Number column 都可以包含空值。我只是将is not null 标准添加到我的Where 子句中,这样就防止了每个表中出现空值的可能性。 `
    • 这是我最终使用的代码:FROM [SalesPage DNK Rep Query] INNER JOIN [MSSB Reps DTP] ON [SalesPage DNK Rep Query].CRD_NUMBER = CStr([MSSB Reps DTP].[Crd Number]) WHERE ((([SalesPage DNK Rep Query].CRD_NUMBER) Is Not Null) AND (([MSSB Reps DTP].[Crd Number]) Is Not Null));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多