- - PR -
ASP初心者、簡単なDB接続でエラー
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-27 15:11
るぱんです。
え〜と、やりたい事を整理させてくださいね。 DBからデータを取ってきて、HTMLを作成したい・・・と言う事で宜しいですか? | ||||||||||||
|
投稿日時: 2004-01-27 15:15
呼び出し元
<!-- #include file="sDBConnect.asp"--> <% Call sDBConnect() %> ■sDBConnect.asp ---------------------------------------------------- <% Sub sDBConnect() '------------- 変数定義 ------------------ Datasource = "syain" User = "yama" Password = "act" '---------- データベースOPEN ---------- Set db = Server.CreateObject("ADODB.Connection") db.ConnectionTimeout = 600 db.CommandTimeout = 600 db.Open Datasource,User,Password End Sub %> ------------------------------------------------------------------------- これでいきませんか? それと関係ないと思いますが、検索だけなら 'SQL文実行 RS.Open sql, db, 3, 3 ←1でいいのでは? [ メッセージ編集済み 編集者: Anon 編集日時 2004-01-27 15:16 ] | ||||||||||||
|
投稿日時: 2004-01-27 15:21
その通りです。 | ||||||||||||
|
投稿日時: 2004-01-27 15:22
るぱんです。
ためしにこんなコード書いてみました。 ちゃんと関数の受け渡し・・・って・・・ 関数はVBScriptなのに それ以外はASP・・・? Scriptタグか・・・?
| ||||||||||||
|
投稿日時: 2004-01-27 15:30
ありがとうございます。 すみません。私が根本的に間違っていました。 ◆(para.asp)----------------------------------------- <SCRIPT language=VBScript runat=Server> public db </SCRIPT> ----------------------------------------------------- 上記のファイルを作成し、インクルードしましたらいけました。 (呼出元で(index.asp)) ◆(sDBConnect.asp)----------------------------------------- <SCRIPT language=VBScript runat=Server> Sub sDBConnect() '------------- 変数定義 ------------------ Datasource = "syain" User = "yama" Password = "act" '---------- データベースOPEN --------- set db = Server.CreateObject("ADODB.Connection") db.ConnectionTimeout = 600 db.CommandTimeout = 600 db.Open Datasource,User,Password End Sub </SCRIPT> ----------------------------------------------------- ◆(index.asp)----------------------------------------- <% Response.Expires=0 Response.AddHeader "Pragma","No-Cache" Response.AddHeader "Cache-Control","No-Cache" Response.Buffer = "True" Response.Clear %> <!--#include file = "./comm/o_para.asp"--> <!--#include file = "./comm/sDBConnect.asp"--> <html> <head> <title>sample</title> </head> <body> <% sDBConnect() sql = "SELECT * FROM syain_tbl" 'Recordsetオブジェクトを作成 Set RS = Server.CreateObject("ADODB.Recordset") 'SQL文実行 RS.Open sql, db, 3, 3 %> <table border="1"> <H1>社員テーブル</H1> <tr> <th>NO</th><th>名前</th> </tr> <% Do While Not RS.EOF Response.Write ("<tr>") Response.Write ("<td>"& RS.Fields("syain_no") &"</td>") Response.Write ("<td>"& RS.Fields("syain_name") &"</td>") Response.Write ("</tr>") RS.MoveNext Loop Response.End 'データベースを閉じます。 RS.Close db.Close Set RS = Nothing Set db = Nothing %> </table> </body> </html> ----------------------------------------------------- 上記の様にしましたらいけまいた。 お騒がせしました。 ありあがとうございます。 後もうひとつ聞きたいのですが。 >'SQL文実行 >RS.Open sql, db, 3, 3 ←1でいいのでは? 何で「3」とか「1」を入れるのかわからないのですが、 WEBでしらべても皆さんリテラルいれているし、 説明がよくわかりません。 なんかわかり易いサイト等ありましたら教えていただけませんでしょうか? よろしくお願いします。 [ メッセージ編集済み 編集者: GOLF@スポコン 編集日時 2004-01-27 15:33 ] | ||||||||||||
|
投稿日時: 2004-01-27 15:36
GOLF@スポコンさん、こんにちは。
ところで、全ての変数について宣言が省略されていますが、単に、掲載する際に省略しているのでしょうか? 恐らく、変数宣言を省略してコーディングしているのではないかと思いますが、その場合、「db」という変数のスコープ(有効範囲)があやふやになります。 切り出した関数内で使用されている変数「db」は、関数内でのみ有効なローカル変数として認識され、その結果、レコードセットのオープンで引数に渡されている変数「db」は、Nothing となっているのではないでしょうか。 Option Explicit を指定して変数の宣言を強要する事をお奨めします。
そう思ってしまう気持ちも、判らないでもないですが、十中八九、違うと思います。 【追記】 とか言ってたら既に、取り敢えずは解決済みのようですね。
ただ、その他の変数についても全て、有効範囲を意識して、きちんと宣言して使用する(宣言を強要する)ようにしないと、また同じようなエラーで悩む事になるかも知れません。 [ メッセージ編集済み 編集者: きくちゃん 編集日時 2004-01-27 16:01 ] | ||||||||||||
|
投稿日時: 2004-01-27 16:22
上記の変数宣言の件了解しまいた。 わかり易いアドバイスありがとうございました。 |