3

Access 2007 で小さなデータベースを作成しました。このデータベースは、1 つのテーブルと 2 つのフォーム (1 つはデータ入力用、もう 1 つはデータ取得用) で構成されています。

私の問題は次のとおりです。私の入力フォームには、3 つのラジオ ボタンがあるグループ ボックスがあります。質問されているのは、要素はセンサーですか?
ボタンは、[はい]、 [いいえ]、および[不明] を表します

データベースには、ユーザーが選択した値を保持する Sensor という名前の列がありますが、ラジオ ボタンはyesの場合は1noの場合は2、またはdon't knowの場合は3の値を返すため、レポートまたはクエリを生成します。ユーザーにとって非常に難しい意味があります。

この時点で、ネストされた iif を使用して巨大な SQL ステートメントを作成し、見たい方法でデータを返します。

テーブルに 1 の 2 や 3 を入力する代わりに、私が見たい方法でテーブルにデータを入力する方法はありますか (はい、いいえ、わかりません)。ちなみに、これは綴じられた形です。 綴じられていなければよかったのですが、今は元に戻せません。

4

3 に答える 3

2

ラジオ ボタンを使用せず、代わりにコンボ ボックスを選択することをお勧めします。結果の文字列値をコンボ ボックスで直接使用できます。

ラジオボタンの使用に固執している場合は、これを試してください。

テキストを保持する新しいフィールドをテーブルに追加します。これをフォームの非表示のテキスト ボックスにバインドします。次に、BeforeUpdate イベント (または実行内容によっては AfterUpdate) をラジオ グループに追加します。次のようなコードを追加します。

Sub RadioGroup_BeforeUpdate(cancel As Integer)
    Select Case Me.RadioGroup.Value
        case 1
            Me.hiddenTextField.value = "Yes"
        case 2
            Me.hiddenTextField.value = "No"
        case else
            Me.hiddenTextField.value = "Don't Know"
    End Select
End Sub

レコードを保存すると、追加した新しいフィールドで人間が判読できる値を使用できるようになります。

于 2012-09-18T20:44:11.240 に答える
2

"ラジオ ボタンは、はいの場合は 1、いいえの場合は 2、または不明の場合は 3 の値を返すため、ユーザーにとって意味のあるレポートまたはクエリを生成することは非常に困難です。 "

これらの 3 つのペアを行としてSensor_Valuesテーブルに格納します。

sval descriptor
1    yes
2    no
3    don't know

次に、そのテーブルを、格納されたSensor数値を含むテーブルに結合できます。

SELECT yt.Sensor, sv.descriptor
FROM
    YourTable AS yt
    INNER JOIN Sensor_Values AS sv
    ON yt.Sensor = sv.sval;

ルックアップ テーブルを作成して結合することに反対する場合はSwitch()、クエリで式を使用して、数値Sensorをテキスト形式に変換できます。

SELECT
    Switch(
        Sensor = 1, "yes",
        Sensor = 2, "no",
        Sensor = 3, "don't know"
    ) AS sensor_text
FROM YourTable;

このSwitch()アプローチは機能しますが、ルックアップ テーブル アプローチに比べて維持が難しくなる可能性があります。

ここでの私の意図は、オプション グループの値を数値として使用するかなり単純な方法を示すことでした」 2 か 3 の

原則として、アクセス制御は使用するように設計されているため、アクセス制御を使用する方が適切です。やむを得ない理由がある場合はいつでもそのルールを破ります...しかし、ルールを破るには、追加の努力が必要です...より多くのVBAコードが必要です。私が提案したアプローチでは、VBA は必要ありません。

于 2012-09-19T15:53:32.520 に答える
1

をSQL にネストするSelect Case代わりに、選択文字列を作成するときにa を使用できます。iif

Select Case Me.rdoSensor
    Case 1
        sSQL=sSQL & " AND Sensor='Yes'"
    Case 2
        sSQL=sSQL & " AND Sensor='No'"
    Case 3
        sSQL=sSQL & " AND Sensor='Don''t know'"
End Select
于 2012-09-19T15:30:46.883 に答える