Excel VBA質問箱 IV

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

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


11277 / 13644 ツリー ←次へ | 前へ→

【16993】アクセスのパラメータクエリを抽出したい ponpon 04/8/18(水) 10:50 質問[未読]
【17003】Re:アクセスのパラメータクエリを抽出したい ichinose 04/8/18(水) 14:31 発言[未読]
【17004】Re:アクセスのパラメータクエリを抽出した... ichinose 04/8/18(水) 14:36 発言[未読]
【17005】Re:アクセスのパラメータクエリを抽出し... ponpon 04/8/18(水) 15:04 お礼[未読]
【17011】Re:アクセスのパラメータクエリを抽出し... ichinose 04/8/18(水) 17:19 発言[未読]
【17015】Re:アクセスのパラメータクエリを抽出し... ponpon 04/8/18(水) 20:24 お礼[未読]

【16993】アクセスのパラメータクエリを抽出したい
質問  ponpon  - 04/8/18(水) 10:50 -

引用なし
パスワード
    Excel、ACCESSとも初心者です。
 学校で使う図書貸し出しの自動化をはかっています。EXCEL2003からADOを使ってACCESSのパラメータクエリ(図書貸し出し簿2)に開始年月日と終了年月日を渡し、その期間の貸し出し簿を抽出し、グラフ化することに成功しましたが、EXCEL2002で動作させるとエラーになります。
 参照設定が、2003の場合 ADO2.7ですが、2002の場合 ADO2.5です。
 それだけの違いなのですが、うまく動きません。もう一度はじめからやり直さなければならないのでしょうか?
 何かいい方法を教えてください。
ACCESSには接続できます。
myArrayのデータには日付かが取得されています。
Set myRS = myCmd.Execute(Parameters:=myArray)のところで
”SQLステートメントが正しくありません。”エラーになります。


Sub 図書貸出簿のデータ取得()

Dim myCon As New ADODB.Connection
Dim myCmd As New ADODB.Command
Dim myRS As New ADODB.Recordset
  
 myCon.Open "file name=C:\Documents and Settings\AAA\My Documents_
 \図書台帳\tosyo.udl;"
  With myCmd
  .ActiveConnection = myCon
  .CommandText = "クエリ図書貸出簿2"
  End With

  myArray = Array(年月日入力.開始年月日, 年月日入力.終了年月日)
  Set myRS = myCmd.Execute(Parameters:=myArray) ここでエラーになります。
   
  Sheet1.Select
  Range("A1").CurrentRegion.ClearContents
  Range("A2").CopyFromRecordset myRS
 
 Set myCmd = Nothing
 myRS.Close
 Set myRS = Nothing
 myCon.Close
 Set myCon = Nothing

End Sub

【17003】Re:アクセスのパラメータクエリを抽出し...
発言  ichinose  - 04/8/18(水) 14:31 -

引用なし
パスワード
   ▼ponpon さん:
こんにちは。

> Excel、ACCESSとも初心者です。
> 学校で使う図書貸し出しの自動化をはかっています。EXCEL2003からADOを使ってACCESSのパラメータクエリ(図書貸し出し簿2)に開始年月日と終了年月日を渡し、その期間の貸し出し簿を抽出し、グラフ化することに成功しましたが、EXCEL2002で動作させるとエラーになります。
> 参照設定が、2003の場合 ADO2.7ですが、2002の場合 ADO2.5です。
> それだけの違いなのですが、うまく動きません。もう一度はじめからやり直さなければならないのでしょうか?
> 何かいい方法を教えてください。
>ACCESSには接続できます。
>myArrayのデータには日付かが取得されています。
>Set myRS = myCmd.Execute(Parameters:=myArray)のところで
>”SQLステートメントが正しくありません。”エラーになります。
>
>
>Sub 図書貸出簿のデータ取得()
>
>Dim myCon As New ADODB.Connection
>Dim myCmd As New ADODB.Command
>Dim myRS As New ADODB.Recordset
>  
> myCon.Open "file name=C:\Documents and Settings\AAA\My Documents_
> \図書台帳\tosyo.udl;"
>  With myCmd
>  .ActiveConnection = myCon
>  .CommandText = "クエリ図書貸出簿2"
>  End With
>
>  myArray = Array(年月日入力.開始年月日, 年月日入力.終了年月日)
'この「年月日入力.開始年月日」や「年月日入力.終了年月日」がどんなオブジェクトなのかわかりませんが、
'想像するに年月日入力がユーザーフォームで、開始年月日がTextboxですか?
'オブジェクトに独自の名前をつけた場合は、その説明をお願いします!!
'でないと再現できないですよね?
'↑が何なのかわからないのですが、もし、Textboxだとしたら・・・・、

'  myArray = Array(年月日入力.開始年月日.text, 年月日入力.終了年月日.text)

'で試してみて下さい

'Adoの5.0でこちらで確認しましたが、.Textをつけた時は正常終了しました


>  Set myRS = myCmd.Execute(Parameters:=myArray) ここでエラーになります。
>   
>  Sheet1.Select
>  Range("A1").CurrentRegion.ClearContents
>  Range("A2").CopyFromRecordset myRS
> 
> Set myCmd = Nothing
> myRS.Close
> Set myRS = Nothing
> myCon.Close
> Set myCon = Nothing
>
>End Sub

それとこの投稿を見ている人が簡単に再現できるように
再現するテーブル構造や "クエリ図書貸出簿2"にあたるクエリの内容(Sql)も記述してくださいね!!

【17004】Re:アクセスのパラメータクエリを抽出し...
発言  ichinose  - 04/8/18(水) 14:36 -

引用なし
パスワード
   ▼ichinose さん:
>▼ponpon さん:
>こんにちは。
>
>> Excel、ACCESSとも初心者です。
>> 学校で使う図書貸し出しの自動化をはかっています。EXCEL2003からADOを使ってACCESSのパラメータクエリ(図書貸し出し簿2)に開始年月日と終了年月日を渡し、その期間の貸し出し簿を抽出し、グラフ化することに成功しましたが、EXCEL2002で動作させるとエラーになります。
>> 参照設定が、2003の場合 ADO2.7ですが、2002の場合 ADO2.5です。
>> それだけの違いなのですが、うまく動きません。もう一度はじめからやり直さなければならないのでしょうか?
>> 何かいい方法を教えてください。
>>ACCESSには接続できます。
>>myArrayのデータには日付かが取得されています。
>>Set myRS = myCmd.Execute(Parameters:=myArray)のところで
>>”SQLステートメントが正しくありません。”エラーになります。
>>
>>
>>Sub 図書貸出簿のデータ取得()
>>
>>Dim myCon As New ADODB.Connection
>>Dim myCmd As New ADODB.Command
>>Dim myRS As New ADODB.Recordset
>>  
>> myCon.Open "file name=C:\Documents and Settings\AAA\My Documents_
>> \図書台帳\tosyo.udl;"
>>  With myCmd
>>  .ActiveConnection = myCon
>>  .CommandText = "クエリ図書貸出簿2"
>>  End With
>>
>>  myArray = Array(年月日入力.開始年月日, 年月日入力.終了年月日)
>'この「年月日入力.開始年月日」や「年月日入力.終了年月日」がどんなオブジェクトなのかわかりませんが、
>'想像するに年月日入力がユーザーフォームで、開始年月日がTextboxですか?
>'オブジェクトに独自の名前をつけた場合は、その説明をお願いします!!
>'でないと再現できないですよね?
>'↑が何なのかわからないのですが、もし、Textboxだとしたら・・・・、
>
>'  myArray = Array(年月日入力.開始年月日.text, 年月日入力.終了年月日.text)
>
>'で試してみて下さい
>
>'Adoの5.0でこちらで確認しましたが、.Textをつけた時は正常終了しました
'   2.5でした。

>
>
>>  Set myRS = myCmd.Execute(Parameters:=myArray) ここでエラーになります。
>>   
>>  Sheet1.Select
>>  Range("A1").CurrentRegion.ClearContents
>>  Range("A2").CopyFromRecordset myRS
>> 
>> Set myCmd = Nothing
>> myRS.Close
>> Set myRS = Nothing
>> myCon.Close
>> Set myCon = Nothing
>>
>>End Sub
>
>それとこの投稿を見ている人が簡単に再現できるように
>再現するテーブル構造や "クエリ図書貸出簿2"にあたるクエリの内容(Sql)も記述してくださいね!!

【17005】Re:アクセスのパラメータクエリを抽出し...
お礼  ponpon  - 04/8/18(水) 15:04 -

引用なし
パスワード
   ▼ichinose さん:
 今更書いても遅いのでしょうが、年月日入力というのはユーザーホームです。ichinose さんのいうように.textをつけるときちんと動きました。ありがとうございました。
 
>再現するテーブル構造や "クエリ図書貸出簿2"にあたるクエリの内容(Sql)も記述し
>てくださいね 
 今後のことがありますので、書こうと思うのですが、具体的にはどこまでをどのように書いてよいのかわかりません。
 ちょっと書いてみると、
 テーブル(図書貸し出し簿)には、ID、日付、登録番号、図書名、作者、出版社、分  類、児童名、児童ID、貸出日、返却日・・・・
 クエリ(図書貸し出し簿2)には、ID、日付、図書名、作者、分類、児童名、児童ID、 貸出日、チェック、返却日、チェックとなっています。
 パラメータは、日付のところでBetween [forms]![年月日入力]![開始年月日] And   [forms]![年月日入力]![終了年月日]となっています。
 このような書き方でよいのでしょうか?

【17011】Re:アクセスのパラメータクエリを抽出し...
発言  ichinose  - 04/8/18(水) 17:19 -

引用なし
パスワード
   ▼ponpon さん:
こんにちは。
> 今更書いても遅いのでしょうが、年月日入力というのはユーザーホームです。
そんなことはありませんよ!!
これで、はっきりしました(ユーザー定義型かもしれないと思っていましたから・・・、Type AAAってやつです)。

> 
>>再現するテーブル構造や "クエリ図書貸出簿2"にあたるクエリの内容(Sql)も記述し
>>てくださいね 
> 今後のことがありますので、書こうと思うのですが、具体的にはどこまでをどのように書いてよいのかわかりません。

私も、もしこの件で質問するとしたら悩むと思います。おっしゃられているとおり、
こういう事を記述するのは大変です。

コードの提示のみでもピーンとくる方もいるでしょうねえ、でも、そういうひとが
たまたまこの投稿を見ていないかもしれない・・・。

なんて考えると一人でも多くの方に検証してもらうには???

又、この問題は、ADOやアクセスの事をあまり知らない方でも再現さえできれば
回答が得られるかもしれない・・・。

でも、この御質問は、コードだけでは、再現もできないし、そもそも動きませんよね?

> ちょっと書いてみると、
> テーブル(図書貸し出し簿)には、ID、日付、登録番号、図書名、作者、出版社、分  類、児童名、児童ID、貸出日、返却日・・・・
> クエリ(図書貸し出し簿2)には、ID、日付、図書名、作者、分類、児童名、児童ID、 貸出日、チェック、返却日、チェックとなっています。
> パラメータは、日付のところでBetween [forms]![年月日入力]![開始年月日] And   [forms]![年月日入力]![終了年月日]となっています。

と言って、こんなにフィールドの多いテーブルを作って、見ている人に「再現して!!」
と書いて何人が再現してくれるか??

なんて思いませんか?
これは、私なら

テーブル名は、既定名のテーブル1
テーブル1の構成
 フィールド名  データ型
  ID      オートナンバー(主キー)
  日付     日付/時刻型
  データ    テキスト型

としてしまいます(実際、私はこんなテーブルで再現しました)。

このテーブルでも再現は可能ですよね?
こうすれば、クエリの作り方もちょっと簡単になると思いませんか?
つまり、抱えている問題コードやデータをもう少し簡単な事例で再現する事を
考えてみます。
これをやっている過程で解決してしまう事もありますよ!!

後は、Udlファイルを使ってますよね?私は殆ど使った事がありません。
そうすると、真面目にやるとUdlの書き方を調べなければなりませんよね?
いや、それはそれで勉強にはなりますが・・・。
(実際には、Mdbにつなげるだけだからそんなことしなかったけど)
このコードを投稿するなら、私ならUdlの中も記述します。

思いついた事だけ書きましたですが、見ている方になるべく簡単に再現できる
ことを考えてみて下さい。

最初にかきましたが、こういう質問を記述する事自体、すごく大変だと思います。
でも、決して無駄にはならないと思って下さい。

私は、そう思っています。

【17015】Re:アクセスのパラメータクエリを抽出し...
お礼  ponpon  - 04/8/18(水) 20:24 -

引用なし
パスワード
    要するに、起こっている問題が再現するような事例を記入するということですね。
 初心者なものですから、本とヘルプに頼りながら不細工なコードを書いています。
 ですから、udlファイルも本に載っていたものをそのまま活用させていただきました。
できるだけ自力で解決できるように努力していますが、どうしても解決できないときには、ここにお世話になっています。
 また、何かありましたら質問をしますので、これからもよろしくお願いします。

11277 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free