• 締切済み

アクセスを教えて下さい

アクセスを教えて下さい。 Microsoft Visual Basic に以下入力したのですがうまくいきません。 ある数字0~999999までの数字を登録数字より、数字以上、数字未満で抽出したいのですがうまくいきません。 If IsNull(Me!数字以上) Or IsNull(Me!数字未満) Then key(1) = "" Else Dim MyStr1, MyStr2 As String MyStr1 = (Me!数字以上) MyStr2 = (Me!数字未満) key(1) = "登録数字 between #" & MyStr1 & "# " _ & "and #" & MyStr2 & "#" End If 初心者で時間が経つばかりで前に進みません。 宜しくお願い致します。

みんなの回答

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

Accだよね? 「数値」ではなくて「数字」(文字列)だからでは、ない? 型が違うものを範囲取得しようとして、おかしくしてると・・・ > If IsNull(Me!数字以上) Or IsNull(Me!数字未満) Then > key(1) = "" > Else Dim MyStr1, MyStr2 As Long > MyStr1 = (Me!数字以上) > MyStr2 = (Me!数字未満) key(1) = "Val(登録数字) between " & MyStr1 & " and " & MyStr2 > End If で、大体、以上かな? この後Filterか何かに入れて、処理するのかな? まぁ、とりあえずでね 後、"#"で囲むのは、日付時刻型の場合ね、数値の場合は違うよ

20228
質問者

補足

ありがとうございます。 すぐの返信ありがとうございます。 自分なりに本を見ながらしたのですが、困っています。 1以上20000未満で入力して[登録数字]より抽出を行ったのですが 実行時エラー '2001':となり直前の操作がキャンセルされました。 デバックになり、Me!sub検索.Form.Filter = criteriaが黄色く表示されました。原因は下記の事だと思うのですが、どうすれば良いのかわかりません、教えて下さい。宜しくお願い致します。 'フィルタ実行 'DoCmd.OpenForm "f_検索結果", acFormDS 'Forms!f_検索結果.Form.Filter = criteria 'Forms!f_検索結果.Form.FilterOn = True Me!sub検索.Form.Filter = criteria Me!sub検索.Form.FilterOn = True 'DoCmd.OpenReport "r_資料", acViewPreview, , criteria 'DoCmd.MoveSize 0, 0, 14567, 2567 End Sub

全文を見る
すると、全ての回答が全文表示されます。
noname#192382
noname#192382
回答No.1

質問の趣旨がよくわからないのでお聞きします。こういうことでしょうか。0から999999までの数からなるデータがあって、そのなかからある決められた数より大きい(または小さい)数だけを抽出したい。 そこでお聞きしたいのは データはどの範囲にありますか。 抽出の条件(あなたの言われる登録数字)はどのセルにありますか、またはvisual basicのプログラムの中に書き込むのですか。

20228
質問者

お礼

すぐのご返答ありがとうございます。 visual basicのプログラムの中に書き込みます。 初心者なもので、まだわかりません、まだ解決できていないのですが また補足質問を揚げさせて頂きましたので 良ければまた教えて下さい。宜しくお願い致します。

20228
質問者

補足

わかりにくい文章ですいません 再度説明するとmaintableに各データを登録数字として例)A 800 、B 1200、C 1500・・・をフィールドに入れています 数字以上、未満で500~1300と入力すると該当するA,Bデータを抽出したいのです。検索でクエリより、maintableから登録数字を選択しています。検索フォームでさらにsub検索にもフィールドに登録数字を入れています、それを検索フォームにて登録データの抽出を行いたいのです 。宜しくお願い致します

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access VBA

    Access2003を使用しています。 単純な質問かもしれませんがよろしくお願いします。 ログイン画面を作成しておりログイン自体はできたのですが、ログインしたときに ログイン画面を自動的に閉じたいのですが、うまくいきません。 現在の仕様では、ログイン画面(frm_ログイン)とメイン画面(frm_main)があり ログインに成功するとメイン画面が開くようになっています。 ーー以下VBAコードーー Private Sub rogin_Click() Dim a If IsNull(Me.[UserName]) Then MsgBox "IDが未入力です" Me.[UserName].SetFocus ElseIf IsNull(Me.[password]) Then MsgBox "パスワードが未入力です" Me.[password].SetFocus Else a = DLookup("パスワード", "tbl_ユーザー", "ユーザー名='" & Me.[UserName] & "'") If IsNull(a) Then MsgBox "該当する ユーザー名 は存在しません" Me.[UserName].SetFocus ElseIf StrComp(a, Me.[password], vbBinaryCompare) = 0 Then On Error GoTo Err_rogin_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "frm_main" DoCmd.OpenForm stDocName, , , stLinkCriteria Else MsgBox "パスワードが違います" Me.[password].SetFocus End If End If Exit_rogin_Click: Exit Sub Err_rogin_Click: MsgBox Err.Description Resume Exit_rogin_Click End Sub ーー以上ーー 長くなって申し訳ないのですが、どのようにすればログイン後にログイン画面(frm_ログイン)を閉じるようにできるのでしょうか? よろしくお願いします。

  • Access2000のVBAについて

    下記のプログラムだと挿入が可能になります。 Private Sub 削除_コマンド_Click() If IsNull(Me.社員コード) Then MsgBox ("社員コードが入力されていません") Else Dim strSQL As String strSQL = "INSERT INTO 社員情報テーブル(社員コード,作成日) " _ & " VALUES ('" & Me.社員コード & "', now());" DoCmd.RunSQL strSQL End If End Sub しかし、下記のプログラムだとinsert文の『Me.社員コード』で エラーが発生します。 エラーメッセージは 『メソッドまたはデータメンバが見つかりません』 と表示されます。 上と下とどう違うのでしょうか。 Private Sub 削除_コマンド_Click() If IsNull(Me.社員コード) Then MsgBox ("社員コードが入力されていません") Else Dim strSQL As String strSQL = "INSERT INTO 社員情報テーブル(社員コード,氏名(氏),作成日) " _ & " VALUES ('" & Me.社員コード & "','" & Me.氏名(氏) & "', now());" DoCmd.RunSQL strSQL End If End Sub

  • Accessフォームでの複数条件検索

    検索用テキストが4つとコンボボックスが1つあり、検索ボタンというコマンドボタンを押すと 該当するレコードを表示させるフォームを作りました。 以下がそのVBAです。 Private sub 検索ボタン_click() Dim strfilter As String, strexp As String, aryope As Variant If Not IsNull (me.一) Then strfilter = "And 出版社 Like '*" & Me.一 & "*'" End If If Not IsNull (me.コンボ62) Then strfilter = "And 種類 Like '*" & Me.コンボ62 & "*'" End If If Not IsNull (me.三) Then strfilter = "And 番号 Like '*" & Me.三 & "*'" End If If Not IsNull (me.四) Then strfilter = "And 発刊日 = # " & Format (me.四. "yyyy-mm-dd") & "#" End If If Not IsNull (me.一) Then strfilter = strfilter & " AND " & BuildCritera ( "タイトル", dbText, "*" Replace ( me.五, "", "*AND*") & "*") End If 改正したいことは   1. 検索用テキストボックスに入力された値全てを満たすレコードを表示したい(現在は例えば     出版社、タイトル、番号の3つを入力するとそれぞれの項目にヒットする物がすべて検出さ     れる)   2. テキストボックス[三]の番号は完全一致で抽出したい(26を抽出したいのに126や2673     等も抽出されてしまう)   3. テキストボックス[四]の発刊日は西暦表示から和暦で入力して検索したい     (テキストボックス[四]をコンボボックスに変え、西暦・和暦両方表示にし、[四A]を追加して     月日という名前にしてこれら年月日をくっつけて完全一致で検索する方法を考えましたが     記述がわかりません)   5.タイトルがWeb検索の様に複数曖昧検索ができない     中途半端な検索で抽出してる状態です。     どなたか手直しいただけますでしょうか? 

  • Access VBAで int型にnullを入れる方法について

     Access で作ったテーブルの数値型のフィールド「金額」にnullを入れたいと思い、四苦八苦しています。  以下のソースを書いたのですが、値には「0」が入ってしまい、nullが挿入されません。 Dim a As Long Dim SQL1 As String If IsNull(Me.摘要_会員番号) = True Then IsNull (a) Else a = Me.摘要_会員番号 End If SQL1 = "UPDATE 個人情報入金 SET 個人情報入金.金額 = " & a & ";" DoCmd.RunSQL SQL1  その他、a=null や、a=''をやってみたのですがこれでは入らず、String型ではないので、スペースも入りません。  nullで無くても、目で見てデータが見えない状態であればいいのですが、そのようにupdateをかける方法をしっている方、是非ご教授をお願いします。

  • うまく処理されません(ACCESSのVBA)

    イベント事業を管理するデータベースを作っています。 メインのテーブルを表示するフォームから、チェック(Yes/No型)された項目だけを抽出したクエリ「記事抽出」があります。 ここから、「行事名」「会場」「月1」「日1」という各フィールドのデータを以下のコードのように変数に代入していきたいのです。 チェックした数が少ないときはうまくいくのですが、20個くらいチェックすると、ループの途中で抜けてしまいます。このとき、エラーメッセージは表示されません。 原因として考えられることがあればお教えください。 説明が不足しているようでしたら、補足のほうで説明したいと思いますのでよろしくお願いします。 Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim i As Integer Dim gyouji(50) As String '行事名 Dim kaijyou(50) As String '会場 Dim tuki1(50) As Integer '月1 Dim nichi1(50) As Integer '日1 Set cnn = CurrentProject.Connection i = 0 With rst    .Open "記事抽出", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect    Do Until .EOF      gyouji(i) = !行事名      kaijyou(i) = !会場      If IsNull(!月1) Then        tuki1(i) = 0      Else        tuki1(i) = !月1      End If      If IsNull(!日1) Then        nichi1(i) = 0      Else        nichi1(i) = !日1      End If      .MoveNext      i = i + 1    Loop    .Close End With cnn.Close

  • Accessログイン権限

    Access2003を使用しています。 ログイン画面を作成しておりログイン自体はできたのですが、 管理者とそうでないユーザーに分けて、ログイン時に管理者であればfrm_mainを、 そうでなければfrm_main2を開くようにしたいのですがうまくいきません。 現在の仕様では、ログイン画面(frm_ログイン)とメイン画面(frm_main、frm_main2)があり テーブル名:tbl_ユーザー フィールド名:ユーザー名、パスワード、アカウント アカウントで"1"が管理者、"2"が一般ユーザー このようになっています。 ーー以下VBAコードーー Private Sub rogin_Click() Dim a If IsNull(Me.[UserName]) Then MsgBox "ユーザー名が未入力です" Me.[UserName].SetFocus ElseIf IsNull(Me.[password]) Then MsgBox "パスワードが未入力です" Me.[password].SetFocus Else a = DLookup("パスワード", "tbl_ユーザー", "ユーザー名='" & Me.[UserName] & "'") If IsNull(a) Then MsgBox "該当する ユーザー名 は存在しません" Me.[UserName].SetFocus ElseIf StrComp(a, Me.[password], vbBinaryCompare) = 0 Then On Error GoTo Err_rogin_Click Dim stDocName As String Dim stLinkCriteria As String If アカウント = "1" Then stDocName = "frm_main" Else stDocName = "frm_main2" End If DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, Me.Name Else MsgBox "パスワードが違います" Me.[password].SetFocus End If End If Exit_rogin_Click: Exit Sub Err_rogin_Click: MsgBox Err.Description Resume Exit_rogin_Click End Sub ーー以上ーー 現在はこのようになっているのですが、これだとなぜかアカウントが"1"でも"2"でも frm_mainが開いてしまいます。 長くなって申し訳ないのですが、アドバイスをお願いします。

  • 日付によるデータ抽出について

    日付によるデータ抽出について 環境: ACCESS2000 状況: メインフォーム(テキスト期間A、テキスト期間B、テキスト品番、検索ボタン)    サブフォーム(データシート)    管理テーブル( 品番  /  レンタル日  /  返却日)    ※管理テーブルは他テーブルのコピー用 やりたい事: 簡潔にいうと期間と品番による抽出。       但し、テキスト期間Bが空白の場合、テキスト期間A以降のデータ抽出。          テキスト期間Aが空白の場合、テキスト期間B以前のデータ抽出。       さらに、テキスト品番が空白の場合、期間のみでの抽出。    コード: Private Sub 検索ボタン_Click()  Dim db As DAO.Database   Set db = CurrentDb   db.Execute "DELETE * FROM 管理テーブル"   db.Execute "INSERT INTO 管理テーブル SELECT * FROM 他テーブル"  Dim 抽出条件 As String   If IsNull(Me!テキスト期間A)=False And IsNull(Me!テキスト期間B)=True And IsNull(Me!テキスト品番)= True Then    抽出条件 = "[レンタル日] <= '" & Me!テキスト期間A & "'"   End If   If IsNull(Me!テキスト期間A)=True And IsNull(Me!テキスト期間B)=False And IsNull(Me!テキスト品番)= True Then    抽出条件 = "[レンタル日] >= '" & Me!テキスト期間B & "'"   End If   If IsNull(Me!テキスト期間A)=False And IsNull(Me!テキスト期間B)=False And IsNull(Me!テキスト品番)= True Then    抽出条件 = "[品番] <= '" & Me!テキスト品番 & "'"   End If   If IsNull(Me!テキスト期間A)=False And IsNull(Me!テキスト期間B)=True And IsNull(Me!テキスト品番)= False Then    抽出条件 = "[レンタル日] >= '" & Me!テキスト期間A & "'" And "[品番]='" & Me!テキスト品番 & "'"   End If   If IsNull(Me!テキスト期間A)=False And IsNull(Me!テキスト期間B)=False And IsNull(Me!テキスト品番)= False Then    抽出条件 = "[レンタル日] Between " $ Me!テキスト期間A & " & Me!テキスト期間B And "[品番] = '" & Me!テキスト品番 & "'"   End If Me!サブフォーム.Form.Filter = 抽出条件 ← 実行時エラー2465 指定した式で参照されている'サブフォーム'フィールドが見つかりません。 Me!サブフォーム.Form.FilterOn = True End Sub 上記エラーが出てしまうのですが、まだまだ未熟で どこが悪いかわからなくて困っております。 間違っていたりと上手くないコードだとは思いますが ご教授の程宜しくお願い致します。   

  • コードの添削お願いします(変数エラー)

    Option Explicit Private Sub CommandButton1_Click() Dim myStr As String If myStr <> "" Then myStr = TextBox.Value Label1.Caption = LTrim(myStr) Label2.Caption = RTrim(myStr) Label3.Caption = Trim(myStr) Else MsgBox "終了" End If End Sub 変数のエラーが出ますが、何処がおかしいですか? 宜しくお願い致します。

  • Access Dlookup関数について

    Dlookupで悩んでいます。 ExcelのVlookと違い、“数字”のコードでなければ引っ張ってこれないのでしょうか? 以下、がその内容です。 「T_得意先マスタ」の得意先コードフィールドに aaa というコードがあり、得意先名フィールドに ○○商事 とあります。 どうやってもできないのです。 なぜか、aaa ではなく、数字(例. 123)にすると出ます。 教えてください。 Private Sub 得意先コード_AfterUpdate() Dim a As Variant, b As String b = "得意先コード = " & Me![得意先コード] a = DLookup("得意先名", "T_得意先マスタ", b) If IsNull(a) = True Then Me.テキスト1.Value = "該当がありません。": Me![得意先コード] = Null Else Me.テキスト1.Value = a End If End Sub

  • Access VBAでのフィルタ処理

    アクセス2003を使用しています。 今VBAを使用して、フォームのテキストボックスに記入された文字列を検索条件に、 クエリからデータ抽出したいのですが、 うまくいきません。 解決したい事は、 「abc*」といったように、前方が一致している文字列データを すべて抽出するといった処理です。 今は下記のようなプログラムを組んでいます。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "クエリ1" DoCmd.OpenQuery stDocName, acNormal, acEdit If IsNull(テキストボックス) Then Else stLinkCriteria = "[クエリデータ]=" & "'" & Me![テキストボックス] & "'" End If DoCmd.ApplyFilter stDocName, stLinkCriteria Exit_コマンド1_Click: Exit Sub Err_コマンド1_Click: MsgBox Err.Description Resume Exit_コマンド1_Click End Sub これだと完全に一致しなければ抽出してくれません。 どの様に変更すればよいでしょうか? よろしくお願いします。

専門家に質問してみよう