Uma função geral de exibição do banco de dados Os requisitos são os seguintes:
1. Pode exibir campos especificados. É claro que os nomes dos campos e o texto exibido podem ser diferentes.
2. Pode consultar vários campos ao mesmo tempo, suportando métodos de consulta difusos e precisos.
3. Existem dois modos de exibição: disposição horizontal e disposição vertical dos campos.
4. Pode paginar automaticamente.
5. Pode definir quantos registros serão exibidos em cada página. Bem, isso é tudo para os grandes requisitos, Ayu escreveu a seguinte função.
Na verdade, Ayu escreveu duas funções aqui. Uma é TABDISP(), que é usada para exibir o conteúdo de uma tabela especificada. A outra é ER(), uma pequena função de tratamento de erros.
Esta função possui 5 parâmetros (são muitos). Cada parâmetro deve ser inserido com dados e não pode ficar em branco, caso contrário ocorrerá um erro.
1(TAB), o nome da tabela a ser chamada.
2 (DISPFILD), quais campos da tabela devem ser exibidos, caso os nomes dos campos sejam diferentes dos caracteres a serem exibidos, separe-os com <. Por exemplo, um determinado nome de campo é: IMG, mas deve ser exibido como: Imagem na página, então, basta escrever For IMG<pictures, se houver vários campos, use "," para separar cada campo. Infelizmente, é uma longa história.
3(FINDFILD), quais campos devem ser consultados e os nomes dos campos e caracteres a serem exibidos são separados por <.
4(PAGEN), quantos registros são exibidos em cada página.
5(FH), a direção de exibição Quando é S, é exibido verticalmente. Quando é H, é exibido horizontalmente.
O valor de retorno da função é verdadeiro quando não há erro, caso contrário é falso.
Esta função não inclui a parte de conexão ao banco de dados, portanto, você mesmo deve se conectar à biblioteca. Além disso, para aplicações repetidas, você pode salvar esta função em um arquivo e incluí-lo quando necessário.
Dê uma olhada na seguinte função: (Não deixe de ler, no final darei um exemplo de aplicação)
<%
'A seguir define uma função TABDISP() para exibição de tabelas, parâmetros TAB, o nome da tabela a ser exibida, DISPFILD, os campos a serem exibidos, FINDFILD, o campo de consulta, PAGEN, o número exibido por página, fh, o direção de exibição
'Se a exibição for bem-sucedida, o valor de retorno será verdadeiro; se não for bem-sucedido, o valor de retorno será falso.
'Use, para separar vários campos
'O campo de consulta deve ser incluído no campo de exibição.
'Se o nome do campo for diferente do nome a ser exibido, use < para separar o nome do campo e o nome exibido. O nome do campo e o caractere de exibição devem ser separados por < para o campo a ser pesquisado.
'A direção de exibição FH é "H" para exibição horizontal, "S" para exibição vertical, diferenciando maiúsculas de minúsculas
FUNÇÃO TABDISP(TAB,DISPFILD,FINDFILD,PAGEN,FH)
Em caso de erro, retomar o próximo
SE DISPFILD="" ENTÃO DISPFILD="*"
SE PAGEN="" ENTÃO PAGEN=15
DISPFILD1=DISPFILD&","
findfild1=findfild&","
dim findl(10),findr(10)
i1=1
faça enquanto instr(findfild1,",")<>0
estrela=instr(encontrarfild1,",")
findl(i1)=esquerda(findfild1,estrela-1)
encontrar(i1)=encontrar(i1)
fildbak=findl(i1)
findl(i1)=esquerda(fildbak,instr(fildbak,"<")-1)
findr(i1)=right(fildbak,len(fildbak)-instr(fildbak,"<"))
findfild1=direita(findfild1,len(findfild1)-estrela)
i1=i1+1
laço
Response.Write "<table border='0' width='100%' cellpacing='0'><tr><form method='GET'>"
Resposta.Write "<TD > " 'largura='50%'
SE SESSÃO("FLMENULBUP")<>"" ENTÃO
Response.Write "Coluna atual: <A HREF='FLMEN.ASP?MENULB="&SESSION("FLMENULBUP")&"'>"&MID(SESSION("FLMENULBUP"),4,200)&"</A>"
TERMINAR SE
SE SESSÃO("flmenulb")<> SESSÃO("FLMENULBUP") ENTÃO
Response.Write " >> <A HREF='FLMEN.ASP?menulb="&SESSION("FLMENULBUP")&"&LB="&SESSION("flmenulb")&"'>"&MID(SESSION("flmenulb"),4,200 )&"</A>"
TERMINAR SE
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>"
para i3=1 para i1-1
Resposta.Write "<td>"&findr(i3)&":</td>"
próximo
Resposta.Write "</tr><tr>" '<td></td>
para i2=1 para i1-1
Response.Write "<td><input type='text' name='key_word"&i2&"' size='8' value=''></td>"
próximo
Response.Write "<tr></table></td><td width='20%'> <input type='checkbox' name='find_fr' value='yes'>Preciso<input type='submit 'value='Iniciar' name='B_FIND'></td>"
Resposta.Escreva "</form> </tr></table>"
encontrar_fr=solicitação("encontrar_fr")
TJ=""
urllr="&find_fr="&find_fr
findlrdisp=""
PARA I3=1 PARA I1-1
TJ1=solicitação("KEY_WORD"&I3)
urllr=urllr&"&key_word"&i3&"="&tj1
SE TJ1=FINDR(I3) OU TJ1="" ENTÃO
TJ1=""
OUTRO
se find_fr<>"sim" então
findlrdisp=findlrdisp&findr(i3)&"Contém ""&TJ1&"" "
tj1=" AND "&findL(I3)&" como '%"&TRIM(TJ1)&"%' "
outro
findlrdisp=findlrdisp&findr(i3)&"是""&TJ1&""
tj1=" AND "&FINDL(I3)&" = '"&TRIM(TJ1)&"' "
terminar se
TERMINAR SE
TJ=TJ&TJ1
SE TJ="" ENTÃO
TOPSN="TOP 300"
OUTRO
TOPSN=""
TERMINAR SE
PRÓXIMO
dim fild(35),dispfil(35),dispfildlr
dispfildlr=""
eu=1
dispfild1=dispfild1
faça enquanto instr(dispfild1,",")<>0
estrela=instr(dispfild1,",")
filtro(i)=esquerda(dispfild1,estrela-1)
dispfil(i)=fild(i)
se instr(fild(i),"<")<>0 então
fildbak=fild(i)
fild(i)=esquerda(fildbak,instr(fildbak,"<")-1)
dispfil(i)=right(fildbak,len(fildbak)-instr(fildbak,"<"))
terminar se
dispfildlr=dispfildlr&fild(i)&","
dispfild1=direita(dispfild1,len(dispfild1)-estrela)
eu=eu+1
laço
dispfildlr=esquerda(dispfildlr,len(dispfildlr)-1)
SQL="SELECT "&topsn&" id,"&DISPFILDlr&" FROM "&TAB&" WHERE ID<>-1 "&tj&" ordenar por -ID"
'Resposta.Write sql
sessão("tabsql")=sql
Definir rs=Server.CreateObject("ADODB.RecordSet")
rs.Abrir sql,conn,1,3
se não rs.eof então
páginasn=solicitação("páginasn")
se páginasn<=0 ou páginasn="" então páginasn=1
rs.pagesize=página
pagezs=rs.contagem de páginas
SE cint(PAGESN)>páginas THEN páginasn=PAGEZS
zs=rs.contagem de registros
página=(páginasn-1)*página
página rs.move,1
if findlrdisp<>"" then Response.Write "Após a pesquisa, os registros de "&findlrdisp&" são os seguintes:"
Response.Write "<table border='0' width='90%'>"
se zs>=300 e topsn<>"" então
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>O número total é muito grande. Os primeiros itens "&ZS&" são exibidos no momento, divididos nas páginas "&PAGEZS&" Agora esta é a página "&PAGESN&"</td>"
outro
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>Existem itens "&ZS&" no total, divididos em páginas "&PAGEZS&". O atual a página é a página "&PAGESN&"</td>"
terminar se
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN-1&urllr&"'>Página anterior</A></td>"
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN+1&urllr&"'>Próxima página</A></td>"
Response.Write "<td width='24%' ALIGN='RIGHT'>Ir para a página"
Response.Write "<input type='text' name='PAGESN' size='2'>Página<input type='submit' value='GO' name='B1'></td></form> "
Resposta.Write "</tr></table> "
se fh = "H" ENTÃO
Response.Write "<table border='0' width='100%' cellpacing='1' cellpadding='0'>"
Response.Write " <tr bgcolor='#EDBAA5' align='center'> "
para ii = 1 para i-1
Resposta.Escreva "<td>"&dispFIL(ii)&"</td>"
próximo
Resposta.Escreva "</tr>"
para iii=1 para paginar
Resposta.Write "<tr bgcolor='#FFFAEE'>"
PARA II=1 PARA I-1
Resposta.Write "<td>"&RS(fild(II))&"</td>"
PRÓXIMO
Resposta.Escreva "</tr>"
RS.MOVENEXT
se rs.eof então saia para
próximo
Resposta.Escreva "</table>"
OUTRO
Response.Write "<table border='0' width='100%' cellpacing='1' cellpadding='0'>"
para iii=1 para paginar
PARA II=1 PARA I-1
Response.Write "<tr><td bgcolor='#EDBAA5' ALIGN='RIGHT' WIDTH='20%'>"&dispFIL(ii)&":</td><td bgcolor='#FFFAEE'>"&RS (fild(II))&"</td></tr>"
PRÓXIMO
Response.Write "<tr height='1'><td bgcolor='#CFBA9E' colspan='2' ALIGN='RIGHT' WIDTH='20%'> </td></tr>"
RS.MOVENEXT
se rs.eof então saia para
próximo
Resposta.Escreva "</table>"
TERMINAR SE
rs.fechar
Response.Write "<table border='0' width='90%'>"
se zs>=300 e topsn<>"" então
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>O número total é muito grande. Os primeiros itens "&ZS&" são exibidos no momento, divididos nas páginas "&PAGEZS&" Agora esta é a página "&PAGESN&"</td>"
outro
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>Existem itens "&ZS&" no total, divididos em páginas "&PAGEZS&". O atual a página é a página "&PAGESN&"</td>"
terminar se
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN-1&urllr&"'>Página anterior</A></td>"
Response.Write "<td width='11%' align='center'><a href='?PAGESN="&PAGESN+1&urllr&"'>Próxima página</A></td>"
Response.Write "<td width='24%' ALIGN='RIGHT'>Ir para a página"
Response.Write "<input type='text' name='PAGESN' size='2'>Página<input type='submit' value='GO' name='B1'></td></form> "
Resposta.Write "</tr></table> "
outro
Response.Write "Nenhum registro adequado encontrado"
terminar se
se er() então
tabdisp=Falso
outro
tabdisp = Verdadeiro
terminar se
END FUNCTION
Function Er() 'Função de tratamento de erros
Se Err.Number = 0 Então
Er=Falso
Outro
Err.Limpar
Er = Verdadeiro
Terminar se
Função final
%>
Finalmente terminei de ler a função...
Você está um pouco cansado, mas não importa se você olha com atenção ou não, é só ajustar aqui.
Primeiramente salvamos a função anterior, que é a parte entre <% e %>, em um arquivo chamado TABDISP.ASP.
O código é o seguinte:
Exibir uma tabela de lista de empregos, nome da tabela: ZG
Existem vários campos, incluindo ID, nome, cargo, TEL BP, DZ (endereço
<%
).
. . . . . .
A conexão com o banco de dados é ignorada aqui e não será gravada.
%>
<!--#include file="TABDISP.asp"-->
<%
DISP="nome,cargo,cargo,TEL<telefone,BP<paginação,DZ<endereço"
FIND="Nome<Nome, Posição<Título, DZ<Endereço"
PÁGINA = "15"
FH = "H"
TAB="ZG"
SE NÃO TABDISP(TAB,DISP,FIND,PAGEN,FH) ENTÃO
resposta.write "Ocorreu um erro,"
TERMINAR SE
DEFINIR CONN=NADA
%>
Basta dar um nome de arquivo ao conteúdo acima e tudo ficará bem.