Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


271 / 500 ページ ←次へ | 前へ→

【7815】Re:選択クエリのリレーションを取得したい
お礼  ももも  - 06/5/12(金) 10:22 -

引用なし
パスワード
   小僧さん おはようございます。

早速のご回答とありがとうございます。
ご回答して頂いた内容でSQLステートメントの抽出ができました。

おかげで助かりました。ありがとうございました。
・ツリー全体表示

【7814】Re:クエリの抽出結果の件数を取得したい
発言  小僧  - 06/5/12(金) 9:38 -

引用なし
パスワード
   ▼MIKAさん、まさ7251 さん:
おはようございます。


>> テーブルのレコードをカウントするとうまくいくのですが、
>> クエリだと件数がうまくカウント出来ませんでした。

クエリの内容が公開されてないので断言はできませんが、
通常ならクエリだとできない、という事はないと思いますよ。


>>「Count」を使うと抽出出来るのは

YU-TANG さんも まさ7251 さんも
「Count」でなく、「DCount」と仰っているのには気づいておられますか?

MsgBox DCount("*","入出金")

の1行で結果を出せる(はず)なのに
何故わざわざレコードセットを取得しているのでしょうか?
という話の流れだと思うのですがいかがでしょう。


>> テーブル作成クエリで抽出した後でしたらちゃんと件数を抽出出来ましたので、
>> その方法にしようと思います。

何回もテーブルを作成したり消去したりするとMDBのファイル量が肥大してしまいます。
最適化すると戻る場合もありますが、ゴミが残ってしまう場合もあります。

今後も長く使っていこうと思われているシステムでしたら
できる限り余計なオブジェクトは作成しない方が良いと思われます。
・ツリー全体表示

【7813】Re:選択クエリのリレーションを取得したい
回答  小僧  - 06/5/12(金) 9:23 -

引用なし
パスワード
   ▼ももも さん:
おはようございます。

>クエリを構成しているSQLの抽出もしくはリレーションの抽出が
>できれば幸いです。

QueryDefオブジェクト の SQLプロパティ を使われてみてはいかがでしょうか。

Sub SQL文の抽出()
Dim QName As String

  QName = "クエリ名"
  Debug.Print CurrentDb.QueryDefs(QName).SQL

End Sub
・ツリー全体表示

【7812】選択クエリのリレーションを取得したい
質問  ももも  - 06/5/12(金) 7:58 -

引用なし
パスワード
   ACCESSの選択クエリで作成されたクエリがあります。
このクエリはどのテーブルを参照しているかを調べる
方法をご存じないでしょうか?
クエリを構成しているSQLの抽出もしくはリレーションの抽出が
できれば幸いです。
アドバイスを頂けないでしょうか。よろしくお願いいたします。
・ツリー全体表示

【7811】Re:クエリの抽出結果の件数を取得したい
発言  まさ7251  - 06/5/11(木) 22:31 -

引用なし
パスワード
   >「Count」を使うと抽出出来るのは以前YU-TANGさんにご指導頂き
> お礼と作成した文を公開したのですが、言葉が足りなかったでしょうか?

なぜDCountを使わないのですか?何か理由があるのですか?
という問いに対しての返答がなかったので、
聞いてみたまでです。

気に障ったようでしたら申し訳ありません。
・ツリー全体表示

【7810】Re:クエリの抽出結果の件数を取得したい
お礼  MIKA  - 06/5/11(木) 22:00 -

引用なし
パスワード
   ご指導ありがとうございます。

私の書いたVBAですと、テーブルのレコードをカウントするとうまくいくのですが、クエリだと件数がうまくカウント出来ませんでした。
EXCELのVBAから勉強して、ACCESSのVBAは始めたばかりなのですが、クエリを格納しないと(Set・・・・のように)件数がカウント出来ないのかと思い、テーブルではなくクエリのSet方法を知りたいと思いました。
テーブル作成クエリで抽出した後でしたらちゃんと件数を抽出出来ましたので、その方法にしようと思います。
「Count」を使うと抽出出来るのは以前YU-TANGさんにご指導頂きお礼と作成した文を公開したのですが、言葉が足りなかったでしょうか?


▼まさ7251 さん:
>▼MIKA さん:
>>これではクエリの抽出結果ではなく同じ名前のテーブルの件数を
>>カウントしていることに気が付きました。
>
>テーブルとクエリに同じ名前を付けることは出来ません。
>"入出金"というのは、テーブルまたはクエリなのですか?
>どこかで何かを勘違いしていませんか?
>
>>クエリの結果を表示する前に変数に代入するには、どのように書けば良いのでしょうか?
>
>以下、質問とは直接関係ありませんが。
>前回の質問でYU-TANGさんより、
>> DCount 関数を使ってはいけない、あるいは使えないという制約
>> がある特殊な状況ですか?
>とあった点への返答もないままですか?
>
>DCountなら1行ですむのを、なぜレコードセットを使っているのでしょうか?
・ツリー全体表示

【7809】Re:クエリの抽出結果の件数を取得したい
発言  まさ7251  - 06/5/10(水) 22:23 -

引用なし
パスワード
   ▼MIKA さん:
>これではクエリの抽出結果ではなく同じ名前のテーブルの件数を
>カウントしていることに気が付きました。

テーブルとクエリに同じ名前を付けることは出来ません。
"入出金"というのは、テーブルまたはクエリなのですか?
どこかで何かを勘違いしていませんか?

>クエリの結果を表示する前に変数に代入するには、どのように書けば良いのでしょうか?

以下、質問とは直接関係ありませんが。
前回の質問でYU-TANGさんより、
> DCount 関数を使ってはいけない、あるいは使えないという制約
> がある特殊な状況ですか?
とあった点への返答もないままですか?

DCountなら1行ですむのを、なぜレコードセットを使っているのでしょうか?
・ツリー全体表示

【7808】クエリの抽出結果の件数を取得したい
質問  MIKA  - 06/5/10(水) 21:31 -

引用なし
パスワード
   いつも参考にさせていただいています。以前こちらのサイトに質問をした事があったのですが、クエリの抽出結果の件数をカウントして36656件以上だったら何もしない。36656件以下ならクエリを実行するVBAの書き方を質問し、独自で解ったつもりでいたのですが、これではクエリの抽出結果ではなく同じ名前のテーブルの件数をカウントしていることに気が付きました。
クエリの結果を表示する前に変数に代入するには、どのように書けば良いのでしょうか?
ご指導宜しくお願いします。

Private Sub コマンド0_Click()

  Dim rs     As Recordset
  Dim rsCount   As Double

  Set rs = CurrentDb.OpenRecordset("入出金")
  rs.MoveLast
  rsCount = rs.RecordCount

  If rsCount < 36656 Then
  
  MsgBox "入出金の実行結果" & vbCrLf & _
      rsCount & "件のレコードが抽出されました"
  DoCmd.OpenQuery "入出金"
  Else
 
  MsgBox "入出金の実行結果" & vbCrLf & _
      rsCount & "件のレコードが抽出されました。条件を変えて実行してください"
   
  Exit Sub

  End If

  End Sub
・ツリー全体表示

【7807】Re:特定のファイルを指定して…
お礼  TB1  - 06/5/10(水) 13:15 -

引用なし
パスワード
   ▼たぬき さん:
すみませんでした。大きな勘違いをしていました。
DoCmd.TransferText acImportDelim, , Me.入力ファイルパス, strFileName
で、Me.入力ファイルパス は、指定したcsvファイルのことだとばかり思ってました。実は、strFileName がそれに当たるんですよね。Me.入力ファイルパスとstrFileName を混同して、出力したいテーブルのことだと気づきませんでした。
つまり、従来のコードでは、

指定したcsvファイルの名前でテーブルを作ろうとする→見当たらないので新しくテーブルが出来上がる

ということだったのですね。 現在は、
DoCmd.TransferText acImportDelim, , 集計, strFileName
としたので
集計というテーブルに、strFileName で指定したcsvファイルが追加される
という解釈で良いでしょうか。
誤解等ありましたらご指摘ください。

長々とありがとうございました。
・ツリー全体表示

【7806】Re:あいまい検索 %と*
お礼  ひろのしま  - 06/5/9(火) 17:51 -

引用なし
パスワード
   ▼たん さん:
>>1.where 条件をある列のあいまい検索 "*A*" に設定してあるクエリ
>
>DAOのあいまい検索と
>
>>2.where 条件をある列のあいまい検索 "%A%" に設定してあるクエリ
>
>ADOのあいまい検索
>
>の違いというだけです。

分わかりました。ありがとうございます。
・ツリー全体表示

【7805】Re:特定のファイルを指定して…
発言  たぬき  - 06/5/9(火) 17:15 -

引用なし
パスワード
   ▼TB1 さん:

DoCmd.TransferText acImportDelim, , Me.入力ファイルパス, strFileName
DoCmd.TransferText acImportDelim, , "全部”, strFileName
2回書けばいいのでは・・・

指定したテーブルがじゃんじゃんできるし・・・・
「全部テーブル」にはどんどんデータが貯まるし・・・・
・ツリー全体表示

【7804】Re:特定のファイルを指定して…
質問  TB1  - 06/5/9(火) 16:38 -

引用なし
パスワード
   ▼たぬき さん:
何度もすみません。
当方の作ったフォームでは、
入力ファイルパスの部分を選択できるようにしていて
(例:c:\日計フォルダ\20060505.csv)実行ボタンを押すとテーブルが出来上がります。

>>DoCmd.TransferText acImportDelim, , X, strFileName
>Xの位置はテーブル名を意味しています。
>"ddd"と指定してdddのテーブルがなければdddというテーブルを
>作ります。
>dddというテーブルがすでにあればデータを追加します。

ということですが、ここはフォームで取得したいcsvを選択するため、
  Me.入力ファイルパス
とする必要があります。当然日毎に新しくテーブルが出来ます。

つまり、このフォームでは、csvデータをひとつのテーブルに蓄積することは不可能、と考えて良いでしょうか。

いったん日毎にテーブルをつくり、それを集計するテーブルをクエリなどでつくる、と考えるべきでしょうか。
・ツリー全体表示

【7803】Re:あいまい検索 %と*
回答  たん  - 06/5/9(火) 15:57 -

引用なし
パスワード
   >1.where 条件をある列のあいまい検索 "*A*" に設定してあるクエリ

DAOのあいまい検索と

>2.where 条件をある列のあいまい検索 "%A%" に設定してあるクエリ

ADOのあいまい検索

の違いというだけです。
・ツリー全体表示

【7802】Re:特定のファイルを指定して…
発言  たぬき  - 06/5/9(火) 15:35 -

引用なし
パスワード
   ▼TB1 さん:
>DoCmd.TransferText acImportDelim, , X, strFileName
Xの位置はテーブル名を意味しています。

"ddd"と指定してdddのテーブルがなければdddというテーブルを
作ります。
dddというテーブルがすでにあればデータを追加します。

この位置をMe.入力ファイルパスと指定すると、そこに指定され
た値のテーブル名を作ります。
毎回違えば、テーブルがどんどんできます。
・ツリー全体表示

【7801】あいまい検索 %と*
質問  ひろのしま  - 06/5/9(火) 15:33 -

引用なし
パスワード
   質問します。ただいまAccess2003 を使用して、Access2000のファイルを操作しています。
1.where 条件をある列のあいまい検索 "*A*" に設定してあるクエリ
2.where 条件をある列のあいまい検索 "%A%" に設定してあるクエリ
があります。
クエリを直接クリックして起動表示した場合、
1.10件
2.0件
と表示されるのは通常だと思います(Accessのあいまい検索は*(アスタリスク))
ですが、このクエリをADOレコードセットで開き、件数を確認したのですが、
1.0件
2.10件
という値が帰ってきてしまいます。

こういった経験は初めてなのですが、原因が把握できる方いらっしゃいますでしょうか。
よろしくお願いします。
(もし、直接コードが必要な場合は後で記述いたします)
・ツリー全体表示

【7800】Re:特定のファイルを指定して…
質問  TB1  - 06/5/9(火) 15:06 -

引用なし
パスワード
   ▼たぬき さん:
現状で

DoCmd.TransferText acImportDelim, , Me.入力ファイルパス, strFileName, True

としていて、このコードを実行するとMe.入力ファイルパスで指定した日毎のcsvファイルがテーブルとして出来上がります。しかし、テーブルは実行するごとに出来上がり、ひとつのテーブルに追加貼り付けされていくものではありません。

DoCmd.TransferText acImportDelim, , "ddd", "C:\hoge.csv"

で照らし合わせるとstrFileNameが集計されていくテーブルと考えて良いでしょうか。
私のコードでは1つのテーブルに溜まっていきません。どこが違うのでしょうか。
・ツリー全体表示

【7799】Re:特定のファイルを指定して…
発言  たぬき  - 06/5/8(月) 11:25 -

引用なし
パスワード
   ▼TB1 さん:

"ddd"はACCESSのテーブル名です。
ここにCSVのデータが追加されます。


>▼たぬき さん:
>お返事遅くなってすみませんでした。
>
>>▼TB1 さん:
>>え?
>>DoCmd.TransferText acImportDelim, , "ddd", "C:\hoge.csv"
>>って指定するとdddテーブルにどんどんたまっていきませんか?
>
>なんですが、これに該当するコードは
> Case "csv"
>DoCmd.TransferText acImportDelim, , Me.入力ファイルパス, strFileName, True
>
>でしょうか。
>
>現状では入力ファイルパスに取り込みたい1日分のcsvを指定して、実行をクリックすると、そのアクセスファイルオブジェクトのテーブルエリアに、その1日分のテーブルが出来上がるようになっています。
>
>上記の例で言うと、
>"C:\hoge.csv"が Me.入力ファイルパス にあたるんですよね。
>そうすると"ddd"はどこに当たるのでしょうか。
>
>すみませんがよろしくご教授ください。
・ツリー全体表示

【7798】Re:特定のファイルを指定して…
質問  TB1  - 06/5/8(月) 10:25 -

引用なし
パスワード
   ▼たぬき さん:
お返事遅くなってすみませんでした。

>▼TB1 さん:
>え?
>DoCmd.TransferText acImportDelim, , "ddd", "C:\hoge.csv"
>って指定するとdddテーブルにどんどんたまっていきませんか?

なんですが、これに該当するコードは
Case "csv"
DoCmd.TransferText acImportDelim, , Me.入力ファイルパス, strFileName, True

でしょうか。

現状では入力ファイルパスに取り込みたい1日分のcsvを指定して、実行をクリックすると、そのアクセスファイルオブジェクトのテーブルエリアに、その1日分のテーブルが出来上がるようになっています。

上記の例で言うと、
"C:\hoge.csv"が Me.入力ファイルパス にあたるんですよね。
そうすると"ddd"はどこに当たるのでしょうか。

すみませんがよろしくご教授ください。
・ツリー全体表示

【7797】Re:レコード件数の取得について
お礼  MIKA E-MAIL  - 06/5/5(金) 1:51 -

引用なし
パスワード
   ▼YU-TANG さん:
ご指導ありがとうございました。
下のように書き換えてうまく動作しました。
本当にありがとうございます!

Private Sub コマンド0_Click()

  Dim rs     As Recordset
  Dim rsCount   As Double

  Set rs = CurrentDb.OpenRecordset("入出金")
  rs.MoveLast
  rsCount = rs.RecordCount

  If rsCount < 36656 Then
  
  MsgBox "入出金の実行結果" & vbCrLf & _
      rsCount & "件のレコードが抽出されました"
  DoCmd.OpenQuery "入出金"
  Else
 
  MsgBox "入出金の実行結果" & vbCrLf & _
      rsCount & "件のレコードが抽出されました。条件を変えて実行してください"
   
  Exit Sub

  End If

  End Sub

>こんにちは、YU-TANG です。
>
>▼MIKA さん:
>>あるクエリの抽出結果のレコード件数をクエリを実行する前に
>>取得するにはどうすれば良いでしょうか?
>
>DCount 関数を使ってはいけない、あるいは使えないという制約
>がある特殊な状況ですか?
>
>http://office.microsoft.com/ja-jp/assistance/HP010496461041.aspx
・ツリー全体表示

【7796】Re:レコード件数の取得について
質問  YU-TANG WEB  - 06/5/4(木) 14:02 -

引用なし
パスワード
   こんにちは、YU-TANG です。

▼MIKA さん:
>あるクエリの抽出結果のレコード件数をクエリを実行する前に
>取得するにはどうすれば良いでしょうか?

DCount 関数を使ってはいけない、あるいは使えないという制約
がある特殊な状況ですか?

http://office.microsoft.com/ja-jp/assistance/HP010496461041.aspx
・ツリー全体表示

271 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084646
(SS)C-BOARD v3.8 is Free