Excel VBA質問箱 IV

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

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


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

【47855】MYSQLについて(急いでます!) たいやきの頭 07/3/24(土) 17:02 質問[未読]
【47856】Re:MYSQLについて(急いでます!) たいやきの頭 07/3/24(土) 17:20 質問[未読]
【47857】Re:MYSQLについて(急いでます!) かみちゃん 07/3/24(土) 17:35 発言[未読]
【47858】Re:MYSQLについて(急いでます!) ichinose 07/3/24(土) 17:51 発言[未読]
【47859】Re:MYSQLについて(急いでます!) たいやきの頭 07/3/24(土) 18:07 質問[未読]
【47860】Re:MYSQLについて(急いでます!) かみちゃん 07/3/24(土) 18:26 発言[未読]
【47862】Re:MYSQLについて(急いでます!) たいやきの頭 07/3/24(土) 19:00 質問[未読]
【47863】Re:MYSQLについて(急いでます!) かみちゃん 07/3/24(土) 19:10 発言[未読]
【47865】Re:MYSQLについて(急いでます!) たいやきの頭 07/3/24(土) 19:21 発言[未読]
【47867】Re:MYSQLについて(急いでます!) かみちゃん 07/3/24(土) 19:53 発言[未読]
【47902】Re:MYSQLについて(急いでます!) たいやきの頭 07/3/26(月) 12:40 質問[未読]
【47908】Re:MYSQLについて(急いでます!) Blue 07/3/26(月) 13:20 回答[未読]
【47936】Re:MYSQLについて(急いでます!) たいやきの頭 07/3/27(火) 9:43 お礼[未読]

【47855】MYSQLについて(急いでます!)
質問  たいやきの頭  - 07/3/24(土) 17:02 -

引用なし
パスワード
   VBAでMYSQLに接続して必要な情報を取得したいと思っているのですが、
どうもうまくいきません。皆さんの知識をぜひお借りしたいので宜しくお願いしす。

Aテーブル
A列   B列
100  200501
100  200009
100  199506
101  199401
101  199309
102  201010
102  199904
102  199801
という情報が入っているとします。
A列の重複している番号をまとめ、重複している番号の中のB列の一番高い数が199301から199901までの範囲内のものであればその番号を抽出するというSELECT文を作りたいんですが、誰か教えてください。

ちなみにこのデータだと結果は101になります。

【47856】Re:MYSQLについて(急いでます!)
質問  たいやきの頭  - 07/3/24(土) 17:20 -

引用なし
パスワード
   追加ですが、
strSQL = "SELECT A,B from A GROUP BY A having MAX(B) >= 199301 and MAX(B) <= 199901;
という感じでやったのですが、
どうも範囲外のものまで出てきてしまうのでぜひ教えてください。

【47857】Re:MYSQLについて(急いでます!)
発言  かみちゃん  - 07/3/24(土) 17:35 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>strSQL = "SELECT A,B from A GROUP BY A having MAX(B) >= 199301 and MAX(B) <= 199901;
>という感じでやったのですが、
>どうも範囲外のものまで出てきてしまう

まず、「(急いでます)」というタイトルは、コメントつきにくくなりますから、
配慮されたほうがいいと思います。

本題の質問についても、MySQLに限らず、SQL文そのものの質問かと思います。
以下のようなSQL文にしないとけないのではないでしょうか?

SELECT A, B from A GROUP BY A, B having MAX(B) >= 199301 and MAX(B) <= 199901;

【47858】Re:MYSQLについて(急いでます!)
発言  ichinose  - 07/3/24(土) 17:51 -

引用なし
パスワード
   こんにちは。

>
>まず、「(急いでます)」というタイトルは、コメントつきにくくなりますから、
>配慮されたほうがいいと思います。
これは、たまに見かけますが、本当に同感ですね!!


>ちなみにこのデータだと結果は101になります。

だとすると、


SELECT A, max(B) from A GROUP BY A having MAX(B) >= 199301 and MAX(B) <= 199901;



SELECT A from A GROUP BY A having MAX(B) >= 199301 and MAX(B) <= 199901;

ではないですか?

【47859】Re:MYSQLについて(急いでます!)
質問  たいやきの頭  - 07/3/24(土) 18:07 -

引用なし
パスワード
   返信ありがとうございます。
うまくいきました。

あのもう一つ質問なのですが、
結果を取得したらそのデータの件数を調べるにはどうすればいいのですか?

【47860】Re:MYSQLについて(急いでます!)
発言  かみちゃん  - 07/3/24(土) 18:26 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>結果を取得したらそのデータの件数を調べるにはどうすればいいのですか?

全体の動きを説明してください。
データベースは、どういうデータベースなのですか?
MySQLを使っているのですか?
急いでいる割には、そういう前提条件がないと何も説明できませんよ?

ちょっと調べれば、このようなURLは見つけることできますよ?
http://www.minamitama.com/kdk/pasokonnissi/excelvba_MySQL.html
http://homepage2.nifty.com/kasayan/vba/database.htm

【47862】Re:MYSQLについて(急いでます!)
質問  たいやきの頭  - 07/3/24(土) 19:00 -

引用なし
パスワード
   COUNTを使わないですることってできますか?

【47863】Re:MYSQLについて(急いでます!)
発言  かみちゃん  - 07/3/24(土) 19:10 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>COUNTを使わないですることってできますか?

できますよ。
でも、質問の意図がさっぱりわからないので、具体的な説明はできません。

全体の動きを説明してください。
と言っている意味がわかりませんか?

本当に「急いでいる」のでしょうか?
その割には、質問が非常に抽象的です。それでは早期な解決はできないでしょう!

【47865】Re:MYSQLについて(急いでます!)
発言  たいやきの頭  - 07/3/24(土) 19:21 -

引用なし
パスワード
   Option Explicit
Const cnsADO_CONNECT1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Const cnsADO_CONNECT2 = "\DB\SAMPLE.mdb;"


Sub TEST5()
  Dim dbCon As New ADODB.Connection
  Dim dbRes As New ADODB.Recordset
  Dim dbCols As ADODB.Fields
  Dim strSQL As String
   dbCon.Open cnsADO_CONNECT1 & ThisWorkbook.Path & cnsADO_CONNECT2
  strSQL = "SELECT * FROM GP開催マスタ WHERE 西暦年=2004 ORDER BY 開催順SEQ"
  dbRes.Open strSQL, dbCon, adOpenKeyset, adLockReadOnly
    'ここで取得したいのですが・・・。

  dbRes.Close
  Set dbRes = Nothing
  dbCon.Close
  Set dbCon = Nothing
End Sub
こうだとしたらどうやって取得するんですか?

【47867】Re:MYSQLについて(急いでます!)
発言  かみちゃん  - 07/3/24(土) 19:53 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>こうだとしたらどうやって取得するんですか?

これのどこが、MYSQLなのですか?
AccessMDBファイルに接続しているのでは?
単純にSQL文がわからないという質問なのでは?
Accessは使えますか?使えるなら、クエリでカウントするクエリを作って、その
クエリをSQLビューで確認すればいいです。

あと、COUNTを使いたくないのはどういう意味ですか?
なぜ、そういう前提条件がいるのですか?
処理速度は、無視する形でいいのですか?

【47902】Re:MYSQLについて(急いでます!)
質問  たいやきの頭  - 07/3/26(月) 12:40 -

引用なし
パスワード
   間違えました。下です。
Option Explicit
Const cnsADO_CONNECT1 = "dsn=KENMAN_RDB; uid=root"


Sub TEST5()
  Dim dbCon As New ADODB.Connection
  Dim dbRes As New ADODB.Recordset
  Dim dbCols As ADODB.Fields
  Dim strSQL As String
   dbCon.Open cnsADO_CONNECT1
  strSQL = "SELECT * FROM GP開催マスタ WHERE 西暦年=2004 ORDER BY 開催順SEQ"
  dbRes.Open strSQL dbCon
    'ここで取得したいのですが・・・。

  dbRes.Close
  Set dbRes = Nothing
  dbCon.Close
  Set dbCon = Nothing
End Sub
すみません。
dbRes.〜でなんとか件数を求めることってできますか?
できなければできないでいいです。
もしできるのであればぜひ教えていただきたいのですが。

【47908】Re:MYSQLについて(急いでます!)
回答  Blue  - 07/3/26(月) 13:20 -

引用なし
パスワード
   >dbRes.〜でなんとか件数を求めることってできますか?
MoveFirstで先頭位置に持っていって、EOFになるまでMoveNextして
ループする間にカウントすればいいです。

それが面倒ならSQL文で解決するしかないです。

【47936】Re:MYSQLについて(急いでます!)
お礼  たいやきの頭  - 07/3/27(火) 9:43 -

引用なし
パスワード
   やはりそれぐらいしかないですか。
では、それでやってみます。
いろいろと教えてくださりありがとうございます。

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