【问题标题】:Access > Case for multiple fields访问 > 多个字段的案例
【发布时间】:2016-11-24 14:49:36
【问题描述】:

我有一个包含一些产品的 Access 数据库。它们按产品参考分组。此外,还有两列用于计算每个参考的颜色变化和大小的数量。

所以我有 [refID]、[colors] 和 [sizes] 字段

现在我想用这些信息来计算一些以后会很方便的案例。这就是我需要帮助的地方。 我仍然是初学者,但我想到了这样的事情:

Public Function variantCase() As Integer

[sizes] = sizes
[colors] = colors

    Select Case Variante
       Case sizes > 0 And colors < 1
          variant = 1
       Case sizes > 0 And colors > 1
          variant = 2
    End Select
End Function

请注意,这两种情况只是示例。会有分钟。还有 7 个。

但这似乎还不起作用。


更新:

已经有一段时间了,但我仍然需要一些帮助。 到目前为止我得到的是:

Public Function containerVariant()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = Application.CurrentDb
    Set rs = db.OpenRecordset("MyTable")

    Dim NumberOfSizes As String
    Dim NumberOfColors As String
    Dim Variant As String

Select Case NumberOfSizes
       Case Is > 0
           Select Case NumberOfColors
               Case Is < 0
                    Variant = 1
               Case Is > 0
                    Variant = 2
           End Select

       Case Else
           Variant = 9
End Select

End Function

至少我没有收到任何错误消息,但这似乎没有任何作用。我将该函数嵌入到 Access SQL 中,但我的新 Variant-Column 的所有字段仍然为空。 那么,我需要添加/更改什么才能在我的访问表中查看结果?

【问题讨论】:

    标签: sql vba ms-access case


    【解决方案1】:

    创建一个视图怎么样?

    create view v_products as
        select p.*,
               iif(sizes > 0 And colors < 1, 1,
                   iif(sizes > 0 And colors > 1, 2, NULL)) as variant
        from products as p;
    

    然后只需访问视图以获取伪列variant

    【讨论】:

    • 嗯,我应该说,这两个案例只是例子。至少还有7个。而且我认为使用案例可能更容易处理。
    • @Manisch 。 . .一种选择是嵌套iif() 表达式。另一种方法是使用 switch 函数 (techonthenet.com/access/functions/advanced/switch.php)。
    【解决方案2】:

    您可能想尝试嵌套 CASE 语句?您展示的方式不是检查单个变量,我相信这就是 CASE 的工作原理。

    Select Case Sizes
           Case > 0
               Select case colors
                   Case is < 0
                        variant = 1
                   Case is > 0
                        variant = 2
               End Select
    
           Case ELSE
               ' etc, etc, etc
    End Select
    

    【讨论】:

    • 我不确定我是否理解您的解决方案。提到的“尺寸”数量在哪里?
    • 我想我必须问一个更简单的事情:我如何在 vba 中实际调用 Access 列?好像我仍然在那里做错了什么。这些列被命名为“NumberofSIZE”和“NumberofCOLOR”。或者换句话说:完整的设置应该是什么样的?
    • 您需要打开表的 RECORDSET 并循环遍历记录以测试每个案例。研究记录集 - 这里应该有大量信息。
    • 谢谢,我查过了,但我不确定我做对了。我更新了OP。你能再看看吗?
    • 使用记录集中的值代替变量。例如。 'rs.variant = 2' 和类似的。请记住,您需要在分配值之前声明 rs.edit,然后再声明 rs.update。查找这些属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多