ξσ Dicky's Blog σξ

朋友多了,寂寞卻沒少,朋友沒有了你,得到了天下最高的技術又能如何?人類的全部才能無非是時間和耐心的混合物.---巴尔扎克

Traditional Chinese

导航

输入表的序号数组生成表格

本来想找个兼职的,结果一个公司的CEO考偶这样的题目:要一个算法实现一个这样个功能,输入一个表的字段的序号,根据该序号字符串生成表格,一个表的字段的序号代表需要列出的字段,还要有表头(即列出所输入的序号相对应的字段的名称),要求在20分钟内搞定,结果花了偶一个多小时,暴汗:(

完整程序和数据库打包下载:https://files.cnblogs.com/Dicky/Test.rar

<form method="post" action="">
请输入需要列出的字段序号(以逗号隔开,比如1,
3,5):<br><input type="text" name="No" value="<%=Trim(Request("No"))%>"> <input type="submit" name="submit" value="Submit">
</FORM>
<%
Const IsSql = 0    '定义数据库类型为Access

Function OpenConn(Conn)     '打开数据库连接
    Dim ConnStr 
    
If IsSql = 1 Then '如果是SQL Server数据库 
        'SQL Server数据库连接参数:用户名、用户密码、数据库名、连接名(本地用local,外地用IP) 
        Dim SqlUsername,SqlPassword,SqlDatabaseName,SqlLocalName 
        SqlUsername 
= "sa" 
        SqlPassword 
= "" 
        SqlDatabaseName 
= "Test" 
        SqlLocalName 
= "(local)" 
        ConnStr 
= "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";" 
    
Else  '如果是Access数据库 
        Dim Db
        Db 
= "Test.mdb" 
        ConnStr 
= "Provider = Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=applebbs;Data Source = " & Server.MapPath(Db)
    
End If 
    
On Error Resume Next 
    
Set Conn = Server.CreateObject("ADODB.Connection"
    Conn.Open ConnStr 
    
If Err Then 
'        Err.Clear 
        Set Conn = Nothing 
        echo 
"数据库连接出错,请检查连接字串。" 
        Response.End 
    
End If 
End Function

Function CloseConn(Conn)  '关闭数据库连接 
    If IsObject(Conn) Then
        Conn.Close 
        
Set Conn = Nothing
    
End If
End Function

Function echo(Str)
    Response.Write Str 
& VbCrlf
End Function

If Request("submit"= "Submit" Then
    
Call OpenConn(Conn)
    strNo 
= Trim(Request("No"))
    Strtemp 
= Split(strNo,","'以逗号分割成数组
    Sql = "Select * From Test"
    
Set Rs = Server.CreateObject("Adodb.RecordSet")
    Rs.Open Sql,Conn,
1,1
    echo 
"<table border=""1"">"
    MM 
= 1
    
If Rs.Eof Then '如果无记录
        echo "    <tr align=""center""><td>Sorry,no data!<td></tr>"
    
Else
        echo 
"    <tr>"
        echo 
"        <th>序号</th>"
        
For I = 0 To Ubound(Strtemp) '先循环列出字段名作为表头
            echo "        <th>" & Rs.Fields(CInt(Strtemp(I))-1).Name & "</th>"
        
Next
        echo 
"    </tr>"
        
Do While Not Rs.Eof '循环列出所有数据行
            echo "    <tr align=""center"">"
            echo 
"        <td>" & MM & "</td>"
            
For I = 0 To Ubound(Strtemp) '循环列出字段值
                echo "        <td>" & Rs(CInt(Strtemp(I))-1& "</td>"
            
Next
            echo 
"    </tr>"
        MM 
= MM + 1
        Rs.MoveNext:
Loop
    
End If
    echo 
"</table>"
    Rs.Close
    
Set Rs = Nothing
    
Call CloseConn(Conn)
End If %>

posted on 2005-10-22 00:53  ξσ Dicky σξ  阅读(470)  评论(0编辑  收藏  举报