Eine allgemeine Datenbankanzeigefunktion Die Anforderungen sind wie folgt:
1. Kann bestimmte Felder anzeigen. Natürlich können die Feldnamen und der angezeigte Text unterschiedlich sein.
2. Kann mehrere Felder gleichzeitig abfragen und unterstützt sowohl Fuzzy- als auch präzise Abfragemethoden.
3. Es gibt zwei Anzeigemodi: horizontale Anordnung und vertikale Anordnung der Felder.
4. Kann automatisch paginieren.
5. Kann festlegen, wie viele Datensätze auf jeder Seite angezeigt werden sollen. Für die großen Anforderungen hat Ayu die folgende Funktion geschrieben.
Tatsächlich hat Ayu hier zwei Funktionen geschrieben: TABDISP(), die zum Anzeigen des Inhalts einer bestimmten Tabelle verwendet wird. Die andere ist ER(), eine kleine Fehlerbehandlungsfunktion.
Diese Funktion hat 5 Parameter (das ist eine Menge). Jeder Parameter muss mit Daten eingegeben werden und darf nicht leer sein, sonst tritt ein Fehler auf.
1(TAB), der Name der aufzurufenden Tabelle.
2 (DISPFILD), welche Felder in der Tabelle angezeigt werden sollen. Wenn sich die Feldnamen von den anzuzeigenden Zeichen unterscheiden, trennen Sie sie durch <. Ein bestimmter Feldname lautet beispielsweise: IMG, er sollte jedoch wie folgt angezeigt werden: Bild auf der Seite, dann schreiben Sie einfach Für IMG<Bilder, wenn es mehrere Felder gibt, verwenden Sie ",", um jedes Feld zu trennen. Leider ist das eine lange Geschichte.
3(FINDFILD), welche Felder abgefragt werden sollen, und die anzuzeigenden Feldnamen und Zeichen werden durch < getrennt.
4(PAGEN), wie viele Datensätze auf jeder Seite angezeigt werden.
5(FH), die Anzeigerichtung ist vertikal.
Der Rückgabewert der Funktion ist wahr, wenn kein Fehler vorliegt, andernfalls ist er falsch.
Diese Funktion beinhaltet nicht den Teil der Verbindung zur Datenbank, Sie müssen also selbst eine Verbindung zur Bibliothek herstellen. Darüber hinaus können Sie diese Funktion für wiederholte Anwendungen in einer Datei speichern und diese Datei dann bei Bedarf einbinden.
Schauen Sie sich die folgende Funktion an: (Lesen Sie sie nicht, ich gebe Ihnen am Ende ein Anwendungsbeispiel)
<%
'Im Folgenden wird eine Funktion TABDISP() zum Anzeigen von Tabellen definiert, Parameter TAB, der Name der anzuzeigenden Tabelle, DISPFILD, die anzuzeigenden Felder, FINDFILD, das Abfragefeld, PAGEN, die pro Seite angezeigte Anzahl, fh, die Richtung der Anzeige
„Wenn die Anzeige erfolgreich ist, ist der Rückgabewert wahr; wenn sie nicht erfolgreich ist, ist der Rückgabewert falsch.“
'Verwenden Sie, um mehrere Felder zu trennen
'Das Abfragefeld muss im Anzeigefeld enthalten sein.
'Wenn sich der Feldname vom anzuzeigenden Namen unterscheidet, verwenden Sie <, um den Feldnamen und den angezeigten Namen zu trennen. Der Feldname und das Anzeigezeichen müssen durch < getrennt werden, damit das Feld durchsucht werden kann.
Die FH-Anzeigerichtung ist „H“ für horizontale Anzeige, „S“ für vertikale Anzeige, Groß-/Kleinschreibung beachten
FUNKTION TABDISP(TAB,DISPFILD,FINDFILD,PAGEN,FH)
Bei Fehler Weiter fortsetzen
WENN DISPFILD="" DANN DISPFILD="*"
WENN PAGEN="" DANN 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
Schleife
Response.Write „<table border='0' width='100%' Cellspacing='0'><tr><form method='GET'>"
Response.Write "<TD > " 'width='50%'
IF SESSION("FLMENULBUP")<>"" THEN
Response.Write „Aktuelle Spalte: <A HREF='FLMEN.ASP?MENULB="&SESSION("FLMENULBUP")&"'>"&MID(SESSION("FLMENULBUP"),4,200)&"</A>"
ENDE WENN
IF SESSION("flmenulb")<> SESSION("FLMENULBUP") THEN
Response.Write " >> <A HREF='FLMEN.ASP?menulb="&SESSION("FLMENULBUP")&"&LB="&SESSION("flmenulb")&"'>"&MID(SESSION("flmenulb"),4,200 )&"</A>"
ENDE WENN
Response.Write "</TD><td align='right' ></td><td align='right'><table border='0' cellspacing='0' cellpadding='0'> "
Response.Write "<tr><td rowspan='2'><img src='img/SEARCH.GIF' width='50'> </td>"
für i3=1 bis i1-1
Response.Write "<td>"&findr(i3)&":</td>"
nächste
Response.Write "</tr><tr>" '<td></td>
für i2=1 bis 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='Start' name='B_FIND'></td>"
Response.Write „</form> </tr></table>“
find_fr=request("find_fr")
TJ=""
urllr="&find_fr="&find_fr
findlrdisp=""
FÜR I3=1 BIS I1-1
TJ1=request("KEY_WORD"&I3)
urllr=urllr&"&key_word"&i3&"="&tj1
WENN TJ1=FINDR(I3) ODER TJ1="" DANN
TJ1=""
ANDERS
if find_fr<>"yes" dann
findlrdisp=findlrdisp&findr(i3)&"Contains ""&TJ1&"" "
tj1=" AND "&findL(I3)&" like '%"&TRIM(TJ1)&"%' "
anders
findlrdisp=findlrdisp&findr(i3)&"是""&TJ1&""
tj1=" AND "&FINDL(I3)&" = '"&TRIM(TJ1)&"' "
Ende wenn
ENDE WENN
TJ=TJ&TJ1
WENN TJ="" DANN
TOPSN=" TOP 300 "
ANDERS
TOPSN=""
ENDE WENN
NEXT
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 dann
fildbak=fild(i)
fild(i)=left(fildbak,instr(fildbak,"<")-1)
dispfil(i)=right(fildbak,len(fildbak)-instr(fildbak,"<"))
Ende wenn
dispfildlr=dispfildlr&fild(i)&","
dispfild1=right(dispfild1,len(dispfild1)-star)
i=i+1
Schleife
dispfildlr=left(dispfildlr,len(dispfildlr)-1)
SQL="SELECT "&topsn&" id,"&DISPFILDlr&" FROM "&TAB&" WHERE ID<>-1 "&tj&" order by -ID"
'Response.Write sql
session("tabsql")=sql
Setze rs=Server.CreateObject("ADODB.RecordSet")
rs.Open sql,conn,1,3
wenn nicht rs.eof dann
seitenn=request("pagesn")
Wenn seitenn<=0 oder seitenn="", dann ist seitenn=1
rs.pagesize=pagen
pagezs=rs.pagecount
WENN cint(PAGESN)>pagezs DANN seitenn=PAGEZS
zs=rs.recordcount
page=(pagesn-1)*pagen
rs.move Seite,1
if findlrdisp<>"" then Response.Write "Nach der Suche lauten die Datensätze von „&findlrdisp&“ wie folgt:“
Response.Write „<table border='0' width='90%'>“
wenn zs>=300 und topsn<>"" dann
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>Die Gesamtzahl ist sehr groß. Die ersten „&ZS&“-Elemente werden derzeit geteilt angezeigt in „&PAGEZS&“-Seiten umwandeln. Dies ist nun die Seite „&PAGESN&“</td>“
anders
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>Es gibt insgesamt „&ZS&“-Elemente, unterteilt in „&PAGEZS&“-Seiten. Die aktuelle Seite ist „&PAGESN&“ Seite</td>“
Ende wenn
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN-1&urllr&"'>Vorherige Seite</A></td>"
Response.Write „<td width='11%' align='center'><a href='?PAGESN="&PAGESN+1&urllr&"'>Nächste Seite</A></td>"
Response.Write „<td width='24%' ALIGN='RIGHT'>Zur Seite springen“
Response.Write "<input type='text' name='PAGESN' size='2'>Page<input type='submit' value='GO' name='B1'></td></form> "
Response.Write "</tr></table> "
wenn fh="H" DANN
Response.Write „ <table border='0' width='100%' cellpacing='1' cellpadding='0'>"
Response.Write " <tr bgcolor='#EDBAA5' align='center'> "
für ii=1 bis i-1
Response.Write „<td>“&dispFIL(ii)&“</td>“
nächste
Response.Write „</tr>“
für iii=1 bis pagen
Response.Write „<tr bgcolor='#FFFAEE'>“
FÜR II=1 BIS I-1
Response.Write „<td>“&RS(fild(II))&“</td>“
NÄCHSTE
Response.Write „</tr>“
RS.MOVENEXT
Wenn rs.eof, dann beenden Sie für
nächste
Response.Write „</table>“
ANDERS
Response.Write „ <table border='0' width='100%' cellpacing='1' cellpadding='0'>"
für iii=1 bis pagen
FÜR II=1 BIS I-1
Response.Write "<tr><td bgcolor='#EDBAA5' ALIGN='RIGHT' WIDTH='20%'>"&dispFIL(ii)&":</td><td bgcolor='#FFFAEE'>"&RS (fild(II))&"</td></tr>"
NÄCHSTE
Response.Write "<tr height='1'><td bgcolor='#CFBA9E' colspan='2' ALIGN='RIGHT' WIDTH='20%'> </td></tr>"
RS.MOVENEXT
Wenn rs.eof, dann beenden Sie für
nächste
Response.Write „</table>“
ENDE WENN
rs.close
Response.Write „<table border='0' width='90%'>“
wenn zs>=300 und topsn<>"" dann
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>Die Gesamtzahl ist sehr groß. Die ersten „&ZS&“-Elemente werden derzeit geteilt angezeigt in „&PAGEZS&“-Seiten umwandeln. Dies ist nun die Seite „&PAGESN&“</td>“
anders
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>Es gibt insgesamt „&ZS&“-Elemente, unterteilt in „&PAGEZS&“-Seiten. Die aktuelle Seite ist „&PAGESN&“ Seite</td>“
Ende wenn
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN-1&urllr&"'>Vorherige Seite</A></td>"
Response.Write „<td width='11%' align='center'><a href='?PAGESN="&PAGESN+1&urllr&"'>Nächste Seite</A></td>"
Response.Write „<td width='24%' ALIGN='RIGHT'>Zur Seite springen“
Response.Write "<input type='text' name='PAGESN' size='2'>Page<input type='submit' value='GO' name='B1'></td></form> "
Response.Write "</tr></table> "
anders
Response.Write „Kein passender Datensatz gefunden“
Ende wenn
wenn er() dann
tabdisp=False
anders
tabdisp=True
Ende wenn
END FUNCTION
Function Er() 'Fehlerbehandlungsfunktion
Wenn Err.Number = 0, dann
Er=Falsch
Anders
Err.Clear
Er=Wahr
Ende wenn
Funktion beenden
%>
Endlich habe ich die Funktion gelesen ...
Sie sind ein wenig müde, aber egal, ob Sie genau hinsehen oder nicht. Hier ist ein Anwendungsbeispiel.
Zuerst speichern wir die vorherige Funktion, die den Teil zwischen <% und %> darstellt, in einer Datei namens TABDISP.ASP.
Der Code lautet wie folgt:
Zeigen Sie eine Jobliste-Tabelle an, Tabellenname: ZG
Es gibt mehrere Felder, darunter ID, Name, Berufsbezeichnung, TEL BP, DZ (Adresse
<%
).
. . . . . .
Die Verbindung zur Datenbank wird hier übersprungen und nicht beschrieben.
%>
<!--#include file="TABDISP.asp"-->
<%
DISP="Name,Position,Titel,TEL<Telefon,BP<Paging,DZ<Adresse"
FIND="Name<Name, Position<Titel, DZ<Adresse"
PAGEN="15"
FH="H"
TAB="ZG"
IF NOT TABDISP(TAB,DISP,FIND,PAGEN,FH) THEN
Response.write „Es ist ein Fehler aufgetreten.“
ENDE WENN
SET CONN=NOTHING
%>
Geben Sie dem obigen Inhalt einfach einen Dateinamen und alles wird gut.