一般的なデータベース表示機能の要件は次のとおりです。
1. 指定したフィールドを表示できること。もちろん、フィールド名と表示されるテキストは異なる場合があります。
2. 複数のフィールドを同時にクエリでき、あいまいクエリ方法と正確なクエリ方法の両方をサポートします。
3. フィールドの横配置と縦配置の 2 つの表示モードがあります。
4. 自動ページネーションが可能。
5. 各ページに表示するレコードの数を設定できます。この要件に従って、Ayu は次の関数を作成しました。
実際、Ayu はここで 2 つの関数を作成しました。1 つは、指定されたテーブルの内容を表示するために使用される TABDISP() で、もう 1 つは小さなエラー処理関数です。
この関数には 5 つのパラメータがあります (これは非常に多いです)。各パラメータにはデータを入力する必要があり、空白にすることはできません。空白にしないとエラーが発生します。
1(TAB)、呼び出されるテーブルの名前。
2 (DISPFILD)、テーブル内のどのフィールドを表示するか。フィールド名が表示される文字と異なる場合は、<で区切ります。たとえば、特定のフィールド名は IMG ですが、次のように表示されます。ページ上の画像については、「IMG<画像」とだけ記述します。フィールドが複数ある場合は、「,」を使用して各フィールドを区切ります。残念ながら、これは長い話です。
3(FINDFILD)、どのフィールドを照会するか、フィールド名と表示する文字は < で区切られます。
4(PAGEN)、各ページに表示されるレコードの数。
5(FH)は表示方向です。Sの場合は縦方向に表示され、Hの場合は横方向に表示されます。
関数の戻り値は、エラーがない場合は true、それ以外の場合は false です。
この関数にはデータベースへの接続部分が含まれていないため、自分でライブラリに接続する必要があります。また、繰り返し適用する場合は、この関数をファイルに保存し、必要に応じてこのファイルを含めることができます。
次の関数を見てください: (最後に応用例を示しますので、必ず読んでください)
<%
' 以下では、テーブルを表示するための関数 TABDISP()、パラメータ TAB、表示されるテーブルの名前、DISPFILD、表示されるフィールド、FINDFILD、クエリ フィールド、PAGEN、ページごとに表示される数、fh、表示の方向
' 表示が成功した場合、戻り値は true になり、失敗した場合、戻り値は false になります。
' 複数のフィールドを区切るために使用します
'クエリ フィールドは表示フィールドに含める必要があります。
'フィールド名と表示名が異なる場合は、フィールド名と表示名を<で区切って検索する必要があります。
'FH 表示方向は、水平表示の場合は「H」、垂直表示の場合は「S」、大文字と小文字が区別されます。
関数 TABDISP(TAB、DISPFILD、FINDFILD、PAGEN、FH)
エラー時は次へ再開
DISPFILD="" の場合は DISPFILD="*"
IF PAGEN="" THEN PAGEN=15
DISPFILD1=DISPFILD&","
findfild1=findfild&","
dim findl(10),findr(10)
i1=1
do while instr(findfild1,",")<>0
star=instr(findfild1,",")
findl(i1)=left(findfild1,star-1)
findr(i1)=findl(i1)
fildbak=findl(i1)
findl(i1)=left(fildbak,instr(fildbak,"<")-1)
findr(i1)=right(fildbak,len(fildbak)-instr(fildbak,"<"))
findfild1=right(findfild1,len(findfild1)-star)
i1=i1+1
ループ
Response.Write "<table border='0' width='100%' cellpacing='0'><tr><form method='GET'>"
Response.Write "<TD > " 'width='50%'
IF SESSION("FLMENULBUP")<>"" THEN
Response.Write "現在の列: <A HREF='FLMEN.ASP?MENULB="&SESSION("FLMENULBUP")&"'>"&MID(SESSION("FLMENULBUP"),4,200)&"</A>"
終了 IF
IF SESSION("flmenulb")<> SESSION("FLMENULBUP") THEN
Response.Write " >> <A HREF='FLMEN.ASP?menulb="&SESSION("FLMENULBUP")&"&LB="&SESSION("flmenulb")&"'>"&MID(SESSION("flmenulb"),4,200 )&"</A>"
終了 IF
Response.Write "</TD><td align='right' ></td><td align='right'><table border='0' cellpacing='0' cellpadding='0'> "
Response.Write "<tr><td rowspan='2'><img src='img/SEARCH.GIF' width='50'> </td>"
i3=1 から i1-1 の場合
Response.Write "<td>"&findr(i3)&":</td>"
次
Response.Write "</tr><tr>" '<td></td>
i2=1 から i1-1 の場合
Response.Write "<td><input type='text' name='key_word"&i2&"' size='8' value=''></td>"
next
Response.Write "<tr></table></td><td width='20%'> <input type='checkbox' name='find_fr' value='yes'>Accurate<input type='submit ' value='開始' name='B_FIND'></td>"
Response.Write "</form> </tr></table>"
find_fr=リクエスト("find_fr")
TJ=""
urlr="&find_fr="&find_fr
findlrdisp=""
I3=1 から I1-1 の場合
TJ1=リクエスト("KEY_WORD"&I3)
urllr=urlr&"&key_word"&i3&"="&tj1
TJ1=FINDR(I3) または TJ1="" の場合
TJ1=""
それ以外
find_fr<>「はい」の場合
findlrdisp=findlrdisp&findr(i3)&"Contains ""&TJ1&"" "
tj1=" AND "&findL(I3)&" like '%"&TRIM(TJ1)&"%' "
それ以外
findlrdisp=findlrdisp&findr(i3)&"是""&TJ1&""
tj1=" AND "&FINDL(I3)&" = '"&TRIM(TJ1)&"' "
終了する場合
終了 IF
TJ=TJ&TJ1
IF TJ="" THEN
TOPSN=「トップ300」
それ以外
TOPSN=""
終了 IF
次の
dim fild(35)、dispfil(35)、dispfildlr
dispfildlr=""
i=1
dispfild1=dispfild1
do while instr(dispfild1,",")<>0
star=instr(dispfild1,",")
fild(i)=left(dispfild1,star-1)
dispfil(i)=fild(i)
if instr(fild(i),"<")<>0 then
fildbak=fild(i)
fild(i)=left(fildbak,instr(fildbak,"<")-1)
dispfil(i)=right(fildbak,len(fildbak)-instr(fildbak,"<"))
終了する場合
dispfildlr=dispfildlr&fild(i)&","
dispfild1=right(dispfild1,len(dispfild1)-star)
i=i+1
ループ
dispfildlr=left(dispfildlr,len(dispfildlr)-1)
SQL="SELECT "&topsn&" id,"&DISPFILDlr&" FROM "&TAB&" WHERE ID<>-1 "&tj&" order by -ID"
'応答.SQL の書き込み
session("tabsql")=sql
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.SQL、conn、1、3を開く
そうでない場合は、
ページ数 = リクエスト("ページ数")
Pagesn<=0 または Pagesn="" の場合、pagesn=1
rs.pagesize=ページン
pagezs=rs.pagecount
IF cint(PAGESN)>pagezs THEN Pagesn=PAGEZS
zs=rs.レコードカウント
page=(pagesn-1)*pagen
rs.ページを移動、1
if findlrdisp<>"" then Response.Write "検索後、"&findlrdisp&" のレコードは次のようになります:"
Response.Write "<table border='0' width='90%'>"
zs>=300かつtopsn<>""の場合、
Response.Write "<tr> <form method='POST' action='?"&urlr&"'><td width='54%'>合計数が非常に多くなります。現在、最初の "&ZS&" 項目が分割されて表示されています「&PAGEZS&」ページに移動しました。これは「&PAGESN&」ページです</td>」
それ以外
Response.Write "<tr> <form method='POST' action='?"&urlr&"'><td width='54%'>合計 "&ZS&" 項目があり、"&PAGEZS&" ページに分かれています。ページは「&PAGESN&」ページ</td>です」
終了する場合
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN-1&urlr&">前のページ</A></td>"
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN+1&urlr&">'>次のページ</A></td>"
Response.Write "<td width='24%' ALIGN='RIGHT'>ページにジャンプ"
Response.Write "<input type='text' name='PAGESN' size='2'>ページ<input type='submit' value='GO' name='B1'></td></form> "
Response.Write "</tr></table> "
fh="H" の場合 THEN
Response.Write " <table border='0' width='100%' cellpacing='1' cellpadding='0'>"
Response.Write " <tr bgcolor='#EDBAA5' align='center'> "
for ii=1 から i-1
Response.Write "<td>"&dispFIL(ii)&"</td>"
次
応答。「</tr>」を書き込みます。
for iii=1 から pagen
応答。「<tr bgcolor='#FFFAEE'>」と書き込みます。
FOR II=1 TO I-1
Response.Write "<td>"&RS(fild(II))&"</td>"
次
応答。「</tr>」を書き込みます。
RS.MOVENEXT
if rs.eof then exit
次
応答。「</table>」と書き込みます。
それ以外
Response.Write " <table border='0' width='100%' cellpacing='1' cellpadding='0'>"
for iii=1 から pagen
FOR II=1 TO I-1
Response.Write "<tr><td bgcolor='#EDBAA5' ALIGN='RIGHT' WIDTH='20%'>"&dispFIL(ii)&":</td><td bgcolor='#FFFAEE'>"&RS (fild(II))&"</td></tr>"
次
Response.Write "<tr height='1'><td bgcolor='#CFBA9E'colspan='2' ALIGN='RIGHT' WIDTH='20%'> </td></tr>"
RS.MOVENEXT
if rs.eof then exit
次
応答。「</table>」と書き込みます。
終了 IF
rs.close
Response.Write "<table border='0' width='90%'>"
zs>=300かつtopsn<>""の場合、
Response.Write "<tr> <form method='POST' action='?"&urlr&"'><td width='54%'>合計数が非常に多くなります。現在、最初の "&ZS&" 項目が分割されて表示されています「&PAGEZS&」ページに移動しました。これは「&PAGESN&」ページです</td>」
それ以外
Response.Write "<tr> <form method='POST' action='?"&urlr&"'><td width='54%'>合計 "&ZS&" 項目があり、"&PAGEZS&" ページに分かれています。ページは「&PAGESN&」ページ</td>です」
終了する場合
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN-1&urlr&">前のページ</A></td>"
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN+1&urlr&">'>次のページ</A></td>"
Response.Write "<td width='24%' ALIGN='RIGHT'>ページにジャンプ"
Response.Write "<input type='text' name='PAGESN' size='2'>ページ<input type='submit' value='GO' name='B1'></td></form> "
Response.Write "</tr></table> "
それ以外
Response.Write "適切なレコードが見つかりません"
終了する場合
if er() then
tabdisp=False
それ以外
tabdisp=True
終了する場合
END FUNCTION
Function Er() 'エラー処理関数
Err.Number = 0 の場合
えー=偽
それ以外
エラークリア
えー=本当
終了の場合
終了機能
%>
ついに関数を読み終えました...
ちょっと疲れていますが、よく見ても気にせず、とにかく調整してください。
まず、前の関数 (<% と %> の間の部分) を TABDISP.ASP というファイルに保存します。
コードは次のとおりです。
ジョブ名簿テーブルを表示します。テーブル名: ZG
ID、名前、役職、TEL BP、DZ (アドレス
<%
) などのいくつかのフィールドがあります。
。 。 。 。 。 。
データベースへの接続はここではスキップされ、書き込まれません。
%>
<!--#include file="TABDISP.asp"-->
<%
DISP="名前,役職,役職,TEL<電話機,BP<ページング,DZ<住所"
FIND="名前<名前、役職<役職、DZ<住所"
PAGEN=15"
FH=「H」
TAB="ZG"
IF NOT TABDISP(TAB,DISP,FIND,PAGEN,FH) THEN
response.write "エラーが発生しました。"
終了 IF
CONN=NOTHING を設定
%>
上記の内容にファイル名を付けるだけで問題ありません。