出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
[3248] パラメータ? |
投稿者:としろうさん 2003/04/08 16:06:46 |
こんにちわ 初歩的なご質問で大変もうしわけございません 現在FrontPageとAccess2000でデータベースを表示させるPage作成しています。 ウイザードを遣い、データベースを表示させるべくカンニングして おります その際、パラメータが少なすぎます。5 を指定してください とブラウザに表示されます FrontPageが生成したソースは下記のものです(長いです。申し訳ありません) <html> <head> <title>filebbs query</title> <meta http-equiv="Content-Type" content="text/html; charset=x-sjis"> <meta name="GENERATOR" content="Microsoft FrontPage 3.0"> </head> <body> <p> </p> <table width="100%" border="1" height="250"> <tr> <td height="16"><b>filebbs query</b></td> </tr> <!--webbot bot="DatabaseRegionStart" startspan s-columnnames="filebbs query" s-connstring="DSN=filebbs" b-tableformat="TRUE" s-sql="SELECT filebbs.id, filebbs.name, filebbs.title, filebbs.comment, filebbsquery.filename<br>FROM filebbs query;" local_preview="<tr><td colspan=5 bgcolor="#FFFF00" align="center" width="100%"><font color="#000000"> Web ブラウザを使って Web サーバーからこのページが取り出されない場合、データベース領域によるプレビューは行われません。 Web ページからページが取り出されるとき、次の表によって、各クエリー結果の行に対して 1 行表示されます。</td></tr>" preview clientside s-DefaultFields s-NoRecordsFound="返されたレコードはありません。" i-MaxRecords i-ScriptTimeout tag="BODY" s-Password --><% ' フォームのパラメータをクエリー文字列に代入します。 fp_sQry = "SELECT filebbs.id, filebbs.name, filebbs.title, filebbs.comment, filebbsquery.filename FROM filebbs query;" fp_sDefault = "" fp_sNoRecords = "返されたレコードはありません。" fp_iMaxRecords = 0 fp_iTimeout = 0 fp_iCurrent = 1 fp_fError = False fp_bBlankField = False If fp_iTimeout <> 0 Then Server.ScriptTimeout = fp_iTimeout Do While (Not fp_fError) And (InStr(fp_iCurrent, fp_sQry, "%%") <> 0) ' 開始の引用符がある場合、終了の引用符を探します。 fp_iStart = InStr(fp_iCurrent, fp_sQry, "%%") fp_iEnd = InStr(fp_iStart + 2, fp_sQry, "%%") If fp_iEnd = 0 Then fp_fError = True Response.Write "<B>データベース領域エラー: パラメータの区切り文字が一致しません</B>" Else fp_sField = Mid(fp_sQry, fp_iStart + 2, fp_iEnd - fp_iStart - 2) If Mid(fp_sField,1,1) = "%" Then fp_sWildcard = "%" fp_sField = Mid(fp_sField, 2) Else fp_sWildCard = "" End If fp_sValue = Request.Form(fp_sField) ' 名前の付いたフォーム フィールドが無い場合、コメントを付けます。 If (len(fp_sValue) = 0) Then fp_iCurrentField = 1 fp_bFoundField = False Do While (InStr(fp_iCurrentField, fp_sDefault, fp_sField) <> 0) _ And Not fp_bFoundField fp_iCurrentField = InStr(fp_iCurrentField, fp_sDefault, fp_sField) fp_iStartField = InStr(fp_iCurrentField, fp_sDefault, "=") If fp_iStartField = fp_iCurrentField + len(fp_sField) Then fp_iEndField = InStr(fp_iCurrentField, fp_sDefault, "&") If (fp_iEndField = 0) Then fp_iEndField = len(fp_sDefault) + 1 fp_sValue = Mid(fp_sDefault, fp_iStartField+1, fp_iEndField-1) fp_bFoundField = True Else fp_iCurrentField = fp_iCurrentField + len(fp_sField) - 1 End If Loop End If ' これによって名前の付けられたフォーム フィールドの値を見つけて、 ' リテラル値の単一引用符を二重の単一引用符で代入します。 ' これによって、SQL による、対になっていない単一引用符を誤認するのを防ぎます。 If (Mid(fp_sQry, fp_iStart - 1, 1) = """") Then fp_sValue = Replace(fp_sValue, """", """""") ElseIf (Mid(fp_sQry, fp_iStart - 1, 1) = "'") Then fp_sValue = Replace(fp_sValue, "'", "''") ElseIf Not IsNumeric(fp_sValue) Then fp_sValue = "" End If If (len(fp_sValue) = 0) Then fp_bBlankField = True fp_sQry = Left(fp_sQry, fp_iStart - 1) + fp_sWildCard + fp_sValue + _ Right(fp_sQry, Len(fp_sQry) - fp_iEnd - 1) ' 代入された値の後にある新しいカレントの位置を変更します。 fp_iCurrent = fp_iStart + Len(fp_sValue) + Len(fp_sWildCard) End If Loop If Not fp_fError Then ' ウィザードから入力した接続文字列を使用します。 On Error Resume Next set fp_rs = CreateObject("ADODB.Recordset") If fp_iMaxRecords <> 0 Then fp_rs.MaxRecords = fp_iMaxRecords fp_rs.Open fp_sQry, "DSN=filebbs" If Err.Description <> "" Then Response.Write "<B>データベース エラー: " + Err.Description + "</B>" if fp_bBlankField Then Response.Write " 1 つ以上のフォーム フィールドが空白です。" End If Else ' レコードが無い場合をチェックします。 If fp_rs.EOF And fp_rs.BOF Then Response.Write fp_sNoRecords Else ' 結果セットの各レコードと取り出すループを開始します。 Do Until fp_rs.EOF %> <!--webbot bot="DatabaseRegionStart" i-checksum="61704" endspan --> <tr> <td height="222"><!--webbot bot="DatabaseResultColumn" startspan s-columnnames="filebbs query" s-column="filebbs query" b-tableformat="TRUE" clientside local_preview="データベース : filebbs query" preview="データベース : filebbs query" --><% If Not IsEmpty(fp_rs) And Not (fp_rs Is Nothing) Then Response.Write CStr(fp_rs("filebbs query")) %> <!--webbot bot="DatabaseResultColumn" i-checksum="51850" endspan --> </td> </tr> <!--webbot bot="DatabaseRegionEnd" startspan b-tableformat="TRUE" local_preview preview clientside tag="BODY" --><% ' くり返しレコードのループを閉じます。 fp_rs.MoveNext Loop End If fp_rs.Close ' 接続エラーをチェックする IF 条件を閉じます。 End If ' フォーム フィールドのパラメータを置き換えるときの解析エラーをチェックする IF 条件を閉じます。 End If set fp_rs = Nothing %> <!--webbot bot="DatabaseRegionEnd" i-checksum="42539" endspan --> </table> </body> </html> データベースには5つのフィールドがあります そのことかなっとはおもわれるのですが・・ お気づきの点がございましたらよろしくお願いいたします |
![]() ![]() |
![]() ![]() |
TreeBBS For ASP V.0.1.3 |