Access2000でDBをつくりました。

そのデータから検索をして、抽出をしたいのです。
検索条件をいれるデータはこれ、と決まっていればパラメータークエリでもつくればいいのですが、どれでも検索条件にするようにしたい、と使用者から頼まれました。
入力方法としては単票フォームを開き、検索したい項目に、検索条件をいれると抽出される、というようなものです。
検索したい項目は日付かもしれないし、名前かもしれない、はたまた会社名かもしれない、とバラバラなのです。
その項目毎にパラメータクエリをつくるのもちょっと・・・と思うので。
何かいい方法はありますでしょうか?

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (8件)

こんにちは。

maruru01です。
まず最初に、抽出するフィールドは、[一覧]テーブルの全フィールドではないのですか? もし全フィールドなら、"SELECT * FROM 一覧 WHERE ・・・"としましょう。
さて、一応上のように全フィールドを抽出するとすると
intKen = CLng(Me!検索値)
SQL = "SELECT * FROM 一覧 WHERE Date_year = " & intKen
DoCmd.RunSQL SQL
となります。
KODAMARさんのコードでは、
"の位置がおかしい
SELECTやFROMの前後に半角スペースがあるか
SQLステートメントの文末がおかしい(最後の"がないなど)
文末の「;」は不要
などの問題点があります。
とりあえず、改行などは考えずに作りましょう。
ちなみに、テーブルは[一覧]しか使用しないので、テーブル名を省略してもかまいません。
またSELECT句で一部のフィールドのみ抽出する場合は、
SQL = "SELECT Date_year, Date_month, Date_day FROM ・・・"
という風に記述して下さい。
では。
    • good
    • 0

経験者様からの回答が得られなかった場合に参考にしてください!



>これは・・・検索フォームをつくるための検索クエリに入れればよいのでしょうか?(初心者ですいません。)

ちがいます!フォーム上にコマンドボタンを作ってコマンドボタンを右クリック
その中に「プロパティ」をクリック。
コマンドボタンのメニューが出ますので「イベント」をクリック
「イベント」の「クリック時」をクリック
「...」右側に3点リーダみたいなものがありますのでそれをクリック
そうすると「イベントプロシージャ」が立ち上がりますので、その中に記述してください。
ただし初心者では経験者様が書かれているのはチトムズイかも知れませんね!
>>第一歩として私が書いたものをソックリ真似てみてください。
>>あとは徐々に経験者さまの記述を解析をしてくことをお勧めします。

>・複数フィールドを一度に検索することもある。(日付と名前とか)
>・同じフィールドで複数条件を検索することもある。(田中と山田という名前、とか)
>・上記2つを同時に行うこともある。(東京都に住んでいる田中と山田など)

>それとできたら、ということで言われたのですが、ANDとORを切替えることができ>るボタンのようなものが欲しい、とのことなのです。
>こういうことってできるのでしょうか?

できますけど・・・VBA経験を積んでからのご使用をお勧めします。
それと大変失礼ですが、VBAの本を1冊買われて完読してみては?
↓私が完読した本です。かなり勉強になりました。
例題物
・Access2000VBA基本例題(技術評論社)2680円
関数物
・Access2000関数&SQL&エラー処理(エーアイ出版)2600円
その他
・Access2000VBAプログラミング BlackBook 3980円

この中には例題CD付きの物も有り、検索例題でKODAMARさんがしたい事が
そっくりそのまま載ってましたよ!

また判らない事があれば追記してください。
    • good
    • 0

あまり良い方法ではない(※レコード数に準じてメモリをかなり食います。

)
のですが、簡単な検索です。
フィルタを使用する検索方法です。ちなみにマクロにフィルタって有りますよね
それをソースで書くとこのようになります。(重いところもソックリ!)

1.検索用のフォームを作ります。
2.フォームヘッダにテキストボックスを1つ作ります。
3.「検索」「解除」というコンボボックスを1つずつ作ります。
4.「検索」のソースです。
DoCmd.ApplyFilter , "([検索先の名前] Like '*" & Me.2で作ったテキストボックス名 & "*')
5.「解除」のソースです。
Docmd.ShowAllRecords
以上です。
もし複数の検索値を指定したい場合は、([検索先]~) AND ([検索先]~)
ん~できれば↓の経験者様のソースを参考にするべきと思います。
    • good
    • 0

条件付でサンプルコードを記します


・文字列検索のみ
・一つのフィールドのみ検索可(指定変更可能)
・複数条件の時は、OR条件で検索する

データはフォームで開いていて、検索フォームを作成したと仮定します
(データを開いているフォームは、「ABC」と仮定します)
(検索フォームは、「検索値」テキストボックスと「検索実行」コマンドボタンが配置されている)

'~~~~~~~~~~~~~~~~~~~~
Private Sub 検索実行_Click()
Dim stSearch As String '検索値
Dim stFieldName As String '検索対象フィールド名
Dim stFormName As String '検索対象フォーム名
Dim stSQL As String '検索条件
Dim stMsg As String 'メッセージ
Dim RS As DAO.Recordset '検索用レコードセット

'検索値を取得
stSearch = Nz(Me![検索値].Value, "")
If stSearch = "" Then
stMsg = "検索値が設定されていません!"
MsgBox stMsg, vbExclamation
Exit Sub
End If

'検索フィールド設定
stFieldName = "氏名"

'検索条件設定(複数可:"/"にて判断)
stSQL = 条件式作成(stSearch, stFieldName)

'検索対象フォームのレコードセット展開(フィルタ設定込み)
stFormName = "ABC"
Set RS = Forms(stFormName).RecordsetClone

'検索実行(次へ)
RS.FindNext stSQL
If RS.NoMatch = True Then
'検索実行(全体)
RS.FindFirst stSQL
If RS.NoMatch = True Then
stMsg = "データがありません!"
MsgBox stMsg, vbExclamation
Else
stMsg = "最後まで検索しました!" & vbCrLf & "また最初から検索しますか?"
If MsgBox(stMsg, vbYesNo + vbQuestion) = vbYes Then
'レコード移動
Forms(stFormName).Bookmark = RS.Bookmark
End If
End If
Else
'レコード移動
Forms(stFormName).Bookmark = RS.Bookmark
End If

'レコードセット解放
Set RS = Nothing

End Sub

'~~~~~~~~~~~~~~~~~~~~
Private Function 条件式作成(stSearch As String, stFieldName As String) As String
Dim stSQL As String '検索条件
Dim stTmp As String '作業用文字列
Dim intCnt1 As Integer '作業用カウンタ1
Dim intCnt2 As Integer '作業用カウンタ2
Const stSepa As String = "/" '検索条件区切り文字
Const stAst As String = "*" '検索条件アスタリスク
Const stQues As String = "?" '検索条件クエスチョン

'検索条件設定(複数可:"/"にて判断)
stSQL = ""
intCnt1 = 1
intCnt2 = InStr(1, stSearch, stSepa)
If intCnt2 = 0 Then
'条件式設定
If InStr(1, stSearch, stAst) = 0 And InStr(1, stSearch, stQues) = 0 Then
stSQL = "((" & stFieldName & ") = '" & stSearch & "')"
Else
stSQL = "((" & stFieldName & ") Like '" & stSearch & "')"
End If
Else
stTmp = Mid(stSearch, intCnt1, intCnt2 - 1)
Do Until stTmp = ""
'条件接続詞を付加
If stSQL <> "" Then stSQL = stSQL & " Or "
'条件式追加
If InStr(1, stTmp, stAst) = 0 And InStr(1, stTmp, stQues) = 0 Then
stSQL = stSQL & "((" & stFieldName & ") = '" & stTmp & "')"
Else
stSQL = stSQL & "((" & stFieldName & ") Like '" & stTmp & "')"
End If
intCnt1 = intCnt2 + 1
intCnt2 = InStr(intCnt1, stSearch, stSepa)
If intCnt2 = 0 Then intCnt2 = Len(stSearch)
stTmp = Mid(stSearch, intCnt1, intCnt2 - intCnt1 + 1)
Loop
End If

'戻り値設定
条件式作成 = stSQL

End Function

'~~~~~~~~~~~~~~~~~~~~
※参照設定で、「Microsoft DAO 3.6 Object Library」にチェックをつけておいて下さい

すいませんm(_ _)m 長くなってしまいました。
たぶん求めているのに近いと思います。(細かいところまでは動作確認をしておりませんが...)


抽出機能に関しては、「検索実行(次へ)」から以下を下記コードに置き換えればできると思います。
ただ、抽出(フィルタ)機能を使用すると、フィルタ条件をフォームが覚えてしまうので、どこかでフィルタの初期化をしてあげなければなりません。
'~~~~~~~~~~~~~~~~~~~~
'抽出実行
Forms(stFormName).Filter = stSQL
Forms(stFormName).FilterOn = True
'~~~~~~~~~~~~~~~~~~~~

フィールド名設定やフォーム名設定などは、フォーム構成がどうなっているか分からないので、ちょっとアドバイスしかねます。

もし、分からないところがあれば補足を御願い致します
それでは頑張って下さい (^^)/

この回答への補足

詳しい回答ありがとうございます!

これは・・・検索フォームをつくるための検索クエリに入れればよいのでしょうか?(初心者ですいません。)

>・文字列検索のみ
>・一つのフィールドのみ検索可(指定変更可能)
>・複数条件の時は、OR条件で検索する

条件まで考えていただいてありがとうございます。
確かにこういうことを考えなきゃ、と気づき使用者にきいたところ

・複数フィールドを一度に検索することもある。(日付と名前とか)
・同じフィールドで複数条件を検索することもある。(田中と山田という名前、とか)
・上記2つを同時に行うこともある。(東京都に住んでいる田中と山田など)

ということなのだそうです。

なんかできるのかできないのかさえ自分で判断できなくなってきてしまいました・・・。

それとできたら、ということで言われたのですが、ANDとORを切替えることができるボタンのようなものが欲しい、とのことなのです。
こういうことってできるのでしょうか?

>フィールド名設定やフォーム名設定などは、フォーム構成がどうなっているか分からないので、ちょっとアドバイスしかねます。

下に使用するフィールド名をかきますね。

・Date_year     日付の年(Ex.00(年))
・Date_month     日付の月(Ex.01(月))
・Date_day      日付の日にち
・氏名ID       個々に番号をつける
・ソートID1     ソートをするためのキー
・ソートID2     ソートをするためのキー
・氏名        
・削除対象      削除する場合にチェックする。(チェックボックス)
・挨拶状送付     送付する場合にチェックを入れる。(チェックボックス)
・年賀状送付先    自宅か会社か選択をする。
・暑中見舞い送付先    同  上
・ランク       A~Eを選ぶ。
・喪中        喪中の場合にチェック。(チェックボックス)
・会社グループID   会社のグループを選択する。
・会社名       
・会社名2      
・役職        
・所属        
・会社郵便番号    会社の郵便番号
・会社住所_都道府県  会社の住所の都道府県
・会社住所_市町村       市町村
・会社住所_町名        町名・番地
・会社電話番号    会社の電話番号
・自宅郵便番号    
・自宅住所_都道府県
・自宅住所_市町村
・自宅住所_町名
・自宅電話番号
・お歳暮・お中元_備考
・住所・ハガキ_備考
・異動・退職_備考
・その他_備考

以上が全フィールドです。

会社・自宅の住所・郵便番号は相互でどちらかを入れるとどちらかが自動で入るようになっています。


このような状態のもので検索フォームを作成し、使用することは可能でしょうか?

長々とかいてしまいました。
よろしくお願いします。

補足日時:2001/12/19 11:43
    • good
    • 0

maruru01さん・こんにちは!


先日はありがとうございました。
KODAMARさんへ
「私もmaruru01さんにお世話になっている1人です。わかりやすい
説明ですのでmaruru01さんの回答を参考にしてください。では」
    • good
    • 0

No.3のmaruru01です。


訂正です。
SELECTの前には半角スペースは要りません。(SQLステートメントの先頭なので。)
では。
    • good
    • 0

簡単な検索ソースを書きます。


↓がパラメータクエリをSQLビューで閲覧した際に見えますよね?

SELECT テーブル名.TEL, テーブル名.社名
FROM テーブル名
WHERE (((テーブル名.SQNO)= [SQNOを入力して下さい。] ));

そこで簡単な検索方法では↓Docmd.Runsqlを使用します。

Dim intKen As Integer 
'数字の場合Integer・文字列の場合はString
intKen = Me.検索値 
'検索値=フォームのテキストボックスの名前・intKen(変数に格納)
Docmd.Runsql "SELECT テーブル名.TEL, テーブル名.社名" _
& "FROM テーブル名 WHERE (((テーブル名.SQNO)= " & intKen & " ));
'「説明」SQLを改行する際は「 ~" _ 」で改行して次行は「 & " 」
'[]のパラメータクエリが入る場所に"&変数名&"を入れる。
'上記は数字の場合で文字列は「 '" & intKen & "' 」

こんな感じでよろしいでしょうか?
そうそうあいまい検索の際には「*」を入れてください。
また、わからない点は追記して下さい。

この回答への補足

Dim intKen As Integer
intKen=Me.検索値
docmd.Runsql"SELECT 一覧.Date_year, 一覧.Date_month, 一覧.Date_day, 一覧.氏名ID, 一覧.ソートID1, 一覧.ソートID2, 一覧.氏名, 一覧.削除対象, 一覧.挨拶状送付, 一覧.年賀状送付先, 一覧.暑中見舞送付先, 一覧.ランク, 一覧.喪中, 一覧.会社グループID, 一覧.会社名, 一覧.会社名2, 一覧.役職, 一覧.所属, 一覧.会社郵便番号, 一覧.会社住所, 一覧.会社電話番号, 一覧.自宅郵便番号, 一覧.自宅住所, 一覧.自宅電話番号, 一覧.お歳暮・お中元_備考, 一覧.住所・ハガキ_備考, 一覧.異動・退職_備考, 一覧.その他_備考"_&From 一覧 WHERE(((一覧.Date_year)=" & intKen & "));

とかいたところ
「SQLステートメントが正しくありません。
'DELEATE'、'INSERT'、'PROCEDURE'、'SELECT'または'UPDATE'をしようしてください。」
と出ました。
その後
SELECT 一覧.Date_year, 一覧.Date_month, 一覧.Date_day, 一覧.氏名ID, 一覧.ソートID1, 一覧.ソートID2, 一覧.氏名, 一覧.削除対象, 一覧.挨拶状送付, 一覧.年賀状送付先, 一覧.暑中見舞送付先, 一覧.ランク, 一覧.喪中, 一覧.会社グループID, 一覧.会社名, 一覧.会社名2, 一覧.役職, 一覧.所属, 一覧.会社郵便番号, 一覧.会社住所, 一覧.会社電話番号, 一覧.自宅郵便番号, 一覧.自宅住所, 一覧.自宅電話番号, 一覧.お歳暮・お中元_備考, 一覧.住所・ハガキ_備考, 一覧.異動・退職_備考, 一覧.その他_備考

Dim intKen As Integer
intKen=Me.検索値
docmd.Runsql"SELECT 一覧.Date_year, 一覧.Date_month, 一覧.Date_day, 一覧.氏名ID, 一覧.ソートID1, 一覧.ソートID2, 一覧.氏名, 一覧.削除対象, 一覧.挨拶状送付, 一覧.年賀状送付先, 一覧.暑中見舞送付先, 一覧.ランク, 一覧.喪中, 一覧.会社グループID, 一覧.会社名, 一覧.会社名2, 一覧.役職, 一覧.所属, 一覧.会社郵便番号, 一覧.会社住所, 一覧.会社電話番号, 一覧.自宅郵便番号, 一覧.自宅住所, 一覧.自宅電話番号, 一覧.お歳暮・お中元_備考, 一覧.住所・ハガキ_備考, 一覧.異動・退職_備考, 一覧.その他_備考"_&From 一覧 WHERE(((一覧.Date_year)=" & intKen & "));
としましたが、やはりうまくいきません。

どこが間違っているのでしょうか?

補足日時:2001/12/14 09:05
    • good
    • 0

検索機能のみでしたら、Accessの検索ダイアログを使用するのが一番です。


ですが、抽出機能(フィルタ)も付加したフォームを作成するとなれば、VBAの知識が必要になってきます。
(確かにパラメータクエリーだけでは作るのは面倒になってきますね)

VBAで作成する場合には、コードの中でSQL(クエリー)を編集し、実行する方法が宜しいかと思います。

的をはずしていたら、すみません (^^;)

この回答への補足

早速のご回答ありがとうございます。

検索ダイアログをしようする、というのも考えましたが、あれって検索条件がひとつだけなんですよね?
複数の条件をつけたいこともあるらしいので・・・。

もしよろしければVBA・SQLの書き方を教えていただけないでしょうか?

補足日時:2001/12/13 14:15
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qクエリのフィールド欄に作成した項目を抽出条件で利用するには?(Access2000)

Accsess2000、クエリについての質問です。

新規のクエリをデザインビューで開き、フィールド欄に、hoge:50 と入力します。シートビューにすると、hogeフィールドには50と表示されています。

デザインビューに戻り、新たなフィールド欄に 加算:[hoge]+100 と入力します。シートビューにすると、加算フィールドには150と表示されています。

以上のように、[hoge]という項目は他のフィールド欄でも利用できることがわかりました。

しかし、[hoge]を抽出条件欄で用いようとすると、パラメータの入力を求められてしまいます。
(例えば、[金額]フィールドの抽出条件に >[hoge] と設定するなど)

質問内容は、[hoge]を抽出条件で利用するにはどのようにすればよいか、というものです。

以上、よろしくお願い致します。

Aベストアンサー

[金額]>[hoge]
と言う式フィールドを作り
抽出条件欄に
True

QORACLEでLONG項目からCHAR項目へ桁数指定で文字列を抽出

ORACLEでLONG項目からCHAR項目へ桁数指定で文字列を抽出したいのですが、方法はありますか?
LONG項目の先頭から30桁分の文字を抽出し、CHAR項目に入力したいのですが。

会社で使用しているERPパッケージでLONG項目があり、どうしてもこの項目から文字が抽出したいのです。

回答のほど宜しくお願いします。

Aベストアンサー

ちょっと質問の意図がわからないのですが、
例えば、T1,T2の2つのテーブルがあったとして、
T1のnumというnumber(10)の項目があって、その中から
先頭の5桁を取ってきて、T2のcommentというCHAR(5)の
項目に転送するなら、
まず、T1のnumから5文字取ってきて、それを変数hoge[chr(5)]に入れる。

select substrb(to_char(num),1,5) into hoge from t1 where id=1;

それから、hogeをT2のcomment列に挿入する。

insert into t2(id,comment) values (1,hoge);

んで、最後にcommitしたらOKです。

こんなもんでよかったでしょうか?

Qデーターベースのエクセル抽出、検索で不一致(アンマッチ)抽出の方法を教えてください

https://box.yahoo.co.jp/guest/viewer?sid=box-l-6ttgdaiicjxantthpenxc5gwqi-1001&uniqid=b1586204-ddae-43d0-a193-2e82434823c1&viewtype=detail

https://box.yahoo.co.jp/guest/viewer?sid=box-l-6ttgdaiicjxantthpenxc5gwqi-1001&uniqid=69267f43-df55-40d0-8f71-5a8ba178e76b&viewtype=detail

https://box.yahoo.co.jp/guest/viewer?sid=box-l-6ttgdaiicjxantthpenxc5gwqi-1001&uniqid=5fe8bec5-c81a-4e6d-8bb3-48be8758c919&viewtype=detail

画像のような手順で通常は抽出しています
画像では 愛知県 名古屋市千種区 青柳町 で抽出作業をしています

必ず不一致(アンマッチ)が出ますが、このような抽出作業で不一致(アンマッチ)の抽出方法を教えてください

おねがいします

https://box.yahoo.co.jp/guest/viewer?sid=box-l-6ttgdaiicjxantthpenxc5gwqi-1001&uniqid=b1586204-ddae-43d0-a193-2e82434823c1&viewtype=detail

https://box.yahoo.co.jp/guest/viewer?sid=box-l-6ttgdaiicjxantthpenxc5gwqi-1001&uniqid=69267f43-df55-40d0-8f71-5a8ba178e76b&viewtype=detail

https://box.yahoo.co.jp/guest/viewer?sid=box-l-6ttgdaiicjxantthpenxc5gwqi-1001&uniqid=5fe8bec5-c81a-4e6d-8bb3-48be8758c919&viewtype=detail

画像のような手順で通常は抽出しています
画像では ...続きを読む

Aベストアンサー

ただたんにオートフィルターではいけないのですか?

オートフィルターをかけた状態で
①「都道府県名」で「愛知県」以外のチェックを外す。
├─「(全てを選択)」クリックして全てのチェックを外す。
└─「愛知県」クリックしてチェックを入れる。
②「市区町村名」で「名古屋市千種区」以外のチェックを外す。
├─「(全てを選択)」クリックして全てのチェックを外す。
└─「名古屋市千種区」クリックしてチェックを入れる。
③「大字・町名」で「青柳町」以外のチェックを外す。
├─「(全てを選択)」クリックして全てのチェックを外す。
└─「青柳町」クリックしてチェックを入れる。
④「字・丁目名」で「(空白)」以外のチェックを外す。
├─「(全てを選択)」クリックして全てのチェックを外す。
└─「(空白)」クリックしてチェックを入れる。
これならば入力する手間もかからないですし、漢字の打ち間違いとかもないと思うのですが…

QACCESS クエリの抽出項目をEXCELから

Access2000のクエリの抽出項目をExcel2013の内容を抽出項目として指定するにはどうすればよいでしょうか。

Excelには、
佐藤
田中
鈴木
.........
のように縦に名前が最大18名分入っています。

この(最大)18名の名前をAccessの抽出項目とします(フィールドは10あってその6番目に抽出項目を18名分入力したいのです)。
18名を一人一人コピペしていたのですが、何とか簡素化できないものかな?と思っています。

できれば、マクロで一発で抽出項目を貼り付けたいのですが。
よろしくお願いします。

Aベストアンサー

#7です

修正量がそう多くなかったので回答してみます。

修正点
・ハイパーリンクしない
・出来上がるシート名は「1R」「2R」・・・「xR」
・抽出内容が無くてもシートは初期化する
・騎手名は C1 から始まり、終了は空白が2行続いたら
 (24 に限定せず、書かれていた分を処理する)


Public Sub Samp2()
  Dim cn As Object, rs As Object
  Dim sSql As String, sS As String
  Dim v As Variant
  Dim iRow As Long, iRowN As Long, iR As Long
  Dim i As Integer
  Const adStateOpen = 1
  Const PN2007 As String = "Microsoft.ACE.OLEDB.12.0"
  Const PN2003 As String = "Microsoft.Jet.OLEDB.4.0"
  Const CMDB As String = "\2014.mdb"
  Const CSQL = "SELECT * FROM 2014 WHERE 騎手名 IN ('{%1}');"

  On Error Resume Next
  Set cn = CreateObject("ADODB.Connection")
  For Each v In Array(PN2007, PN2003)
    cn.Open "Provider=" & v _
      & ";Data Source=" & ThisWorkbook.Path & CMDB
    If (cn.State = adStateOpen) Then Exit For
  Next
  If (IsEmpty(v)) Then
    MsgBox "環境不足で処理中断", vbCritical
    Set cn = Nothing
    Exit Sub
  End If
  On Error GoTo 0

  Application.ScreenUpdating = False
  With Worksheets("SheetDB")
    iR = 1
    iRow = 1
    While (.Cells(iRow, "C") <> "")
      iRowN = iRow
      With .Cells(iRow, "C")
        If (.Offset(1) <> "") Then iRowN = .End(xlDown).Row
        v = WorksheetFunction.Transpose(.Resize(iRowN - iRow + 1))
      End With
      If (IsArray(v)) Then
        sSql = Replace(CSQL, "{%1}", Join(v, "','"))
      Else
        sSql = Replace(CSQL, "{%1}", v)
      End If

      sS = iR & "R"
      For Each v In Worksheets
        If (v.Name = sS) Then Exit For
      Next
      If (IsEmpty(v)) Then
        With Worksheets.Add(After:=Worksheets(Worksheets.Count))
          .Name = sS
        End With
      Else
        v.Activate
        Cells.ClearContents
      End If

      Set rs = cn.Execute(sSql)
      If (Not rs.EOF) Then
        With Range("A1")
          For i = 0 To rs.Fields.Count - 1
            .Offset(, i) = rs(i).Name
          Next
          .Offset(1).CopyFromRecordset rs
        End With
      End If
      rs.Close
      Set rs = Nothing
      iRow = iRowN + 2
      iR = iR + 1
    Wend
    .Activate
  End With
  cn.Close
  Set cn = Nothing
  Application.ScreenUpdating = True
End Sub

#7です

修正量がそう多くなかったので回答してみます。

修正点
・ハイパーリンクしない
・出来上がるシート名は「1R」「2R」・・・「xR」
・抽出内容が無くてもシートは初期化する
・騎手名は C1 から始まり、終了は空白が2行続いたら
 (24 に限定せず、書かれていた分を処理する)


Public Sub Samp2()
  Dim cn As Object, rs As Object
  Dim sSql As String, sS As String
  Dim v As Variant
  Dim iRow As Long, iRowN As Long, iR As Long
  Dim i As Integer
  Const adStateOpen = 1...続きを読む

Qある項目が最小の行だけを抽出する方法

以下のデータから、t_stampが一番古いidだけを取得
したいのですが、order by t_stampを使わずに8を抽出する方法はありますか?

id t_stamp host
5 20010501 yahoo.co.jp
8 20010427 google.co.jp
7 20021111 goo.ne.jp

Aベストアンサー

select id from xx where t_stamp in (select Min(t_stamp) from xx);

ではいかがですか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報