出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

ADOでレコードセットに抽出結果が0件の場合の判定   ひささん [2003/08/14 18:57:08] [3587]
  Re:ADOでレコードセットに抽出結果が0件の場合の判定   S.Kosさん [2003/08/14 21:18:57] [3588]
    Re:ADOでレコードセットに抽出結果が0件の場合の判定   ひささん [2003/08/14 22:27:39] [3590]
      Re:ADOでレコードセットに抽出結果が0件の場合の判定   S.Kosさん [2003/08/15 8:53:26] [3594]
      Re:ADOでレコードセットに抽出結果が0件の場合の判定   S.Kosさん [2003/08/17 10:21:12] [3601]
  Re:ADOでレコードセットに抽出結果が0件の場合の判定   暇人さん [2003/08/15 10:51:38] [3597]

[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
Program By YasNet