電子書籍の厳選無料作品が豊富!

URL(1)
http://riss.narc.affrc.go.jp/kssys/test/query.asp

今、↑このURL(1)のサンプルを参考にしながら
検索できるスクリプトを作っています。


このサンプルに


下記のURLの↓ "出版年"のところの、
←1990年から1995年に出版された資料に限定する。という方法
をつけるにはどうしたらいいのでしょうか?

URL(2)
http://kototoi.dl.itc.u-tokyo.ac.jp/opac/help/ex …

よろしくお願いいたします。

A 回答 (2件)

そのまま書いたら当然エラーになりますって(;´Д`)


実際にはこのSQL文をデータベース(mdb)へ投げてあげる必要があります。

http://riss.narc.affrc.go.jp/kssys/test/encode.a …
を例に挙げれば、65~70行目でSQL文を作って、72行目でデータベースへSQLを投げて結果をレコードセット変数「rs」で受け取っています。

これと同じことを行えば良いのです。
yearがデータベース内の出版年のフィールド名nen1とnen2が検索条件となるASPでの変数名なら、上記サンプルを参考に

SQL = "SELECT * FROM example WHERE year BETWEEN " & nen1 " AND " & nen2
Set rs = db.Execute(SQL)

で結果がrsに入ります。
他の検索条件も組み合わせるなら、それらの条件もSQL文に追加してあげる必要
があります。

なお、nen1とnen2は「ただの変数」なのでフォームから値を受け取るには事前にRequest.QueryStringまたはRequest.Formで値を受け取っておく必要があります。

あと、上記の例もSQL文のサニタイジングを行っていませんのであくまで例としてご利用下さい。
    • good
    • 0

SQL文のヒントのみ書いておきます。


SELECT * FROM example WHERE 出版年 BETWEEN 1990 AND 1995
SELECT * FROM example WHERE 出版年 >= 1990 AND 出版年 <= 1995


あと少し気になったのはURL(1)に限らず、該当サイト内のASPサンプル全般にSQL InjectionやXSS(クロスサイトスクリプティング)脆弱性を始め、セキュリティ的に問題となるコードが多く含まれています。

最低でもSQL文で使用する入力データとHTMLへ出力する文字は無害化(サニタイジング)を行う必要があります。

これらはReplace関数とServer.HTMLEncodeで簡単に解決出来る問題なので
参考URLを熟読の上、安全なコードを書けるよう頑張って下さい。

参考URL:http://www.atmarkit.co.jp/fsecurity/special/30xs …

この回答への補足

SELECT * FROM example WHERE 出版年 BETWEEN 1990 AND 1995
SELECT * FROM example WHERE 出版年 >= 1990 AND 出版年 <= 1995

のところ、有り難うございます。
私もBetweenまではたどりつきましたが、そこからがわからず
悩んでいました。本当に有り難うこざいます。

しかしながら、変数?がきちんと入り込めていないためか、
うまく検索にかかってくれません。

テーブル名 ・・example
出版年 ・・・mdbに登録されている名前year

上記サンプルとしてあがっている1990・・・テキストの名前 "nen1"
上記サンプルとしてあがっている1995・・・テキストの名前 "nen2"

でSQLを作成した場合、

SELECT * FROM example WHERE year BETWEEN nen1 AND nen2
SELECT * FROM example WHERE year >= nen1 AND year <= nen2

で、よろしいのですよね?
これでやると、

Microsoft VBScript コンパイル エラー (0x800A03FD)
'Case' がありません。
/db/nen.asp, line 252, column 7
SELECT * FROM example WHERE year BETWEEN nen1 AND nen2

となってしまいます。
これがずっと続いてるのですが、どこがおかしいのかおわかりになりますでしょうか・・・。

脆弱性があるんですね(^^;)
教えていただいたURLを読んで勉強します。

補足日時:2004/11/19 09:50
    • good
    • 0

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