MS Access VBA从字符串中删除特定字符

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

我有一份报告,从名为“志愿者”的表中选择。整个WHERE子句在运行时基于在表单上选择的以下参数在VBA中构造

志愿者类型:2个复选框之一

地区:1下拉菜单 - 但是,在VBA中,每个地区可以是任意数量的办公室

位置:4选项多选

县:70选项多选

我的报告必须在运行时编译所有这些动态变量。

我认为这是我的最后一个问题 - 关于县 - 实际上是行不通的,那就是我现在所处的位置。

在“志愿者”表中,70个县中的每一个都是自己的布尔字段。

ReportFrom将县称为字符串。为了在OR语句中循环最多70个选择,以针对True / False评估String,提供了以下解决方案:

Dim s As Variant
Dim ctl As Control
Dim t As TCondition
Set ctl = Me.Counties
If ctl.ItemsSelected.Count <> 0 Then
    For Each s In ctl.ItemsSelected
        t.WhereCondition = t.whereCondition & ctl.ItemData(s) & " = -1 OR"
    Next s
    ' trim trailing " OR"
    t.WhereCondition = Left(t.WhereCondition, Len(t.WhereCondition)-3)
End If

除非使用WHERE子句的其他参数编译这些选择,否则这会产生很大的效果。这个选择没有足够的parens,它没有正确过滤记录。

我尝试了几种解决方案 - 最接近的是:

If ctl.ItemsSelected.Count <> 0 Then
    For Each s In ctl.ItemsSelected
        t.WhereCondition = t.WhereCondition & "((" & ctl.ItemData(s) & ") = -1) OR )"
    Next s
    t.WhereCondition = Left(t.WhereCondition, Len(t.WhereCondition) - 4)
End If

问题是修剪4个字符会删除我需要的RParen,以便此语句正确过滤报告。仅修剪3会留下尾随的“O”。

我需要以某种方式删除尾随OR,保持尾随括号。

有没有办法做到这一点?

(我讨厌发布下午(美国东部时间)的问题,因为直到明天我才能跟进,但是,我一整天都在绞尽脑汁)

access-vba
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.