プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。Access2000を使用しています。
「抽出条件」フォーム上のテキストボックス
"txt開始コード"と"txt終了コード"の入力条件を
「抽出」選択クエリの抽出条件として
Between [forms]![抽出条件][txt開始コード]
And [forms]![抽出条件][txt終了コード]
記述しました。
抽出条件は「業務データ」テーブルの"業務コード"
に対応しており、「業務コード」はテキスト型長さ4
で定義してありますが、「0000」~「9999」の数値
が格納されています。また、フォーム上のテキストボックスの書式は「0000」としています。
条件を何も入力しない時はデータを抽出しますが、条件
を指定すると何も抽出されなくなってしまいます。条件
の指定を、
Between '[forms]![抽出条件][txt開始コード]'
And '[forms]![抽出条件][txt終了コード]'
のようにシングルクォーテーションで囲んでもうまくいき
ません。文字列なのに数値が入っているのでアクセス側で
自動認識しうまくいかないのか、検討がつきません。
どなたか解決策をお願いいたします。

A 回答 (5件)

No.2で既に回答が出ていますが、補足を。



>フォーム上のテキストボックスの書式は「0000」としています。
この「書式」と言うのは「見た目だけ、この形で表示してね」を意味します。
※※※この「見た目だけ」と言うのが重要※※※

ですので、テキストボックスに「1」を入れると「見た目だけ『0001』だけど、中身は『1』のまま」と言う状態になります。もちろん「4」も見た目だけ「0004」で中身は「4」のままです。

この状態では
業務コード Between [forms]![抽出条件][txt開始コード] And [forms]![抽出条件][txt終了コード]
とやっても、実際に実行される抽出は
業務コード Between 1 And 4
ですので、No2さんが書いたように
>もちろん、

>0001
>0002
>0003
>0004

>を BETWEEN 1 AND 4 では抽出できません。
と言う事になり、抽出が成功しません。

そこで、テキストボックスの「更新後処理」にコードを追加し
>Private Sub txt開始コード_AfterUpdate()
>  Me.txt開始コード = Format(Me.txt開始コード, "0000")
>End Sub

>としないと検索しませんよ!
と言う処理で「見た目と一緒に中身も4桁に」変えてあげる必要があるのです。
    • good
    • 0
この回答へのお礼

chie65536さん、こんにちは。
FormatプロパティとFormat関数の区別を認識できました。
とても参考になりました。
どうもありがとうございました。

お礼日時:2006/02/28 08:26

Between [Forms]![本日の伝票]![伝票開始番号] And [Forms]![本日の伝票]![伝票終了番号]


私が使っているのが上記のものですが、うまく動いています。

Between [forms]![抽出条件][txt開始コード]
And [forms]![抽出条件][txt終了コード]
これを
Between [Forms]![抽出条件]![txt開始コード]
And [Forms]![抽出条件]![txt終了コード]
書き換えてみてください。
    • good
    • 0
この回答へのお礼

hot_dragon1955さん、こんにちは。
試してみたのですがうまくいきませんでした。
hot_dragon1955さんのものとはどこか設定箇所が
異なるかもしれませんね。
どうもありがとうございました。

お礼日時:2006/02/28 08:28

クエリでフィールド欄に


抽出:CLONG([業務コード])
として数値化して、その抽出条件欄に
Between [forms]![抽出条件][txt開始コード] And [forms]![抽出条件][txt終了コード]
では駄目でしょうか?
    • good
    • 0
この回答へのお礼

mshr1962さん、こんにちは。
CLONGという関数初めてみました。
まだまだ知らないことだらけです。
どうもありがとうございました。

お礼日時:2006/02/28 08:20

SELECT 業務データ.ID, 業務データ.業務コード, * FROM 業務データ WHERE (((業務データ.業務コード) Between Forms!抽出条件!txt開始コード And Forms!抽出条件!txt終了コード));



で抽出しますね!

もちろん、

0001
0002
0003
0004

を BETWEEN 1 AND 4 では抽出できません。

書式指定を@@@@に変更し、

Private Sub txt開始コード_AfterUpdate()
  Me.txt開始コード = Format(Me.txt開始コード, "0000")
End Sub

としないと検索しませんよ!
    • good
    • 0
この回答へのお礼

s_huskyさん、こんにちは。
書式指定は所詮「みかけ」だったということに
気付きました!
どうもありがとうございました。

お礼日時:2006/02/28 08:19

Between "'" & [forms]![抽出条件]![txt開始コード] & "' AND '" & [forms]![抽出条件]![txt終了コード] & "'"


ですね。

この回答への補足

bonaronさん、こんにちは。
試してみましたが、
「キーワードAndが指定されていません。」
となりました。因みに、
Between "'" & [forms]![抽出条件]![txt開始コード] & "'" AND "'" & [forms]![抽出条件]![txt終了コード] & "'"
もうまくいきませんでした。
引き続きよろしくお願いいたします。

補足日時:2006/02/27 13:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!