出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() |
[3587] ADOでレコードセットに抽出結果が0件の場合の判定 |
投稿者:ひささん 2003/08/14 18:57:08 |
こんにちは。 DBを検索して、結果が0件であった場合の判定はどのように行えばよいのでしょうか? Set con = Server.CreateObject("ADODB.Connection") con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath("test.mdb") & ";" Set rs = con.Execute("select * from test_tbl where id=100") rsにレコードセットが0件であった場合の判定方法を教えてください。 宜しくお願いします。 |
[3588] Re:ADOでレコードセットに抽出結果が0件の場合の判定 |
投稿者:S.Kosさん 2003/08/14 21:18:57 |
こん○○は、S.Kosです。 > DBを検索して、結果が0件であった場合の判定はどのように行えばよ > > Set rs = con.Execute("select * from test_tbl where id=100") > ADOであれなんであれ、 Count関数を使うことになるでしょう。 SELECT COUNT(fieldname) AS Cnt FROM TEST_TBL WHERE id = "100" if Cnt = 0 then なんちゃらかんちゃら |
[3590] Re:ADOでレコードセットに抽出結果が0件の場合の判定 |
投稿者:ひささん 2003/08/14 22:27:39 |
こんばんは。 > SELECT COUNT(fieldname) AS Cnt FROM TEST_TBL WHERE id "100" Count関数を使うと行数はわかるのですが、 データを取り出して処理していて、たまたま0件だった場合の時の 処理を教えていただけると幸いです。 Count関数で始めに行を見て、取り出したら2度SQLを発行するので 処理的に美しくないかと思っています。 宜しくお願いします。 |
[3594] Re:ADOでレコードセットに抽出結果が0件の場合の判定 |
投稿者:S.Kosさん 2003/08/15 8:53:26 |
こん○○は、S.Kosです。 > Count関数で始めに行を見て、取り出したら2度SQLを発行するので > これが『美しくない』という点には、 同感です。 トラフィックも二倍ですもんね。 けれども、 SQLの場合、例えば書込では既存レコードの有無によって命令そのものが違うように、これは仕方のないことかと・・・。 私の場合、読み書きともにストアドプロシージャにこの判断と処理を書くことで、アプリ側のインターフェイスを簡潔にしています。 もしかしたらADOの内部でここらあたりを吸収してくれてるかも・・・ ADOを『単なる接続ハンドラ』としてしか捉えられずにいる私には、ここまでですね。 |
[3601] Re:ADOでレコードセットに抽出結果が0件の場合の判定 |
投稿者:S.Kosさん 2003/08/17 10:21:12 |
こん○○は、S.Kosです。 > Count関数で始めに行を見て、取り出したら2度SQLを発行するので > 処理的に美しくないかと思っています。 > 休み中にいろいろやって見ました。 現在 ASP + ADO が使える環境に無く、 Excel/VBA + ADO ですが、 おそらく同じだと思います。 DB,RS を文字通りのADO変数とし、 SqlStr = "SELECT * FROM table WHERE なんちゃら" として、 Set RS = DB.Execute(SqlStr) とした後、 If RS.BOF And RS.EOF Then で「該当レコード無し」を検出できました。 |
[3597] Re:ADOでレコードセットに抽出結果が0件の場合の判定 |
投稿者:暇人さん 2003/08/15 10:51:38 |
> Set con = Server.CreateObject("ADODB.Connection") > con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ > "Data Source=" & Server.MapPath("test.mdb") & ";" > Set rs = con.Execute("select * from test_tbl where id=100") > > rsにレコードセットが0件であった場合の判定方法を教えてください。 Dim counter counter = 0 Do Until rs.EOF ここで counter = counter + 1 表示させるしょり 例:Response.Write rs.Fields.Value("AAA") rs.MoveNext Loop という様に自分でカウントすればできます 後で If counter = 0 then 〜 として処理を行います。 あるいは、RecordsetオブジェクトをOpenしてカーソルをデフォルト以外にすればRecordCountメソッドでレコード数が取れます。 |
TreeBBS For ASP V.0.1.3 |