| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2576 人关注过本帖
标题:代码错误,想把数据库中的一列赋值给数组,并输出来。
只看楼主 加入收藏
Kettyjin1983
Rank: 1
等 级:新手上路
帖 子:303
专家分:0
注 册:2007-8-17
收藏
得分:0 

<%@ LANGUAGE=VBSCRIPT%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>THANKS FOR YOUR SUPPORT</title>
</head>
<body bgcolor="#CCFFFF">

<%
dim myconn
set myconn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")

constr="provider=microsoft.jet.oledb.4.0;Data Source=" & server.MapPath("user.mdb")
myconn.open constr
rs.Open "select ID from login",myconn,1,1'更改打开记录集的方式获得记录总数
if not rs.eof then
totoaliq = rs.RecordCount
Dim num()'动态数组
Dim i
ReDim num(totoaliq)'初始化动态数组确定数组元素的个数,rs.RecordCount返回当前记录集有多少条记录。
i=0
Do Until rs.EOF
num(i)=rs("id")

i=i+1
rs.movenext
Loop
end if
rs.close
randomize
for i=0 to totoaliq-1
c=Round(rnd*totoaliq)
if i >0 then
for k=0 to i-1
while num(i)=c'碰到随即产生的值,那么重新再产生一次,至到该值与前面的随即值不同为止。
c=Round(rnd*totoaliq)
i=i+1
wend

next
end if
num(i) = c
rs.open "select * from login where id ="&num(i)
if not rs.eof then
response.write ("name is:"&rs("EngName")&"<br>")
end if
rs.close
next
set rs=nothing
myconn.close
set myconn=nothing
%>
</body>
</html>
随机产生随机值,显示的结果仍然有相同的名字取出。

2007-11-21 11:34
Kettyjin1983
Rank: 1
等 级:新手上路
帖 子:303
专家分:0
注 册:2007-8-17
收藏
得分:0 
randomize
for i=0 to totoaliq-1
c=Round(rnd*totoaliq-1)
if i >0 then
for k=0 to i-1
if num(k)=c then
c=Round(rnd*totoaliq-1)
k=0
end if
next
end if
num(i) = c'显示的结果发现的是第一位经常有重复的,看来在随机产生一个数字时并没有与第一位进行判断,而是从第二位开始的,不知道是什么原因,帮我看下啊。
2007-11-21 15:46
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
楼主是想随机读取数据库里的记录?
2007-11-21 16:21
Kettyjin1983
Rank: 1
等 级:新手上路
帖 子:303
专家分:0
注 册:2007-8-17
收藏
得分:0 
是的啊,随即读取。
2007-11-21 16:29
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
本人写的一个在一定范围内产生一组随机数组的代码
<%
Function getRanDom(max,min)
Dim times, i, j
times = 2
Dim ttNumber
ttNumber = max + min - 1
Dim tAry()
ReDim tAry(ttNumber)
For i = 0 To ttNumber
tAry(i) = min + i
Next
For j = 0 To times - 1
i = ttNumber - 1
While i > 0
Dim temp, randomNum
temp = 0
randomNum = CInt(TtGetRandom(0, max * 3, i) Mod i)
temp = tAry(i)
tAry(i) = tAry(randomNum)
tAry(randomNum) = temp
i = i - 1
Wend
Next
getRanDom = tAry
End Function
Function TtGetRandom(max,min,chaosSeed)
Randomize chaosSeed * Timer()
TtGetRandom = Rnd * chaosSeed
End Function
%>
楼主可以使用这个代码
2007-11-21 18:03
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

将我写的代码保存到一个ASP文件
比如保存名称为MarkRandom.asp文件与楼主的文件存在同一目录下
<%@ LANGUAGE=VBSCRIPT%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>THANKS FOR YOUR SUPPORT</title>
</head>
<body bgcolor="#CCFFFF">
<!--#include file="MarkRandom.asp"-->
<!--引用文件到当前页面-->
<%
dim myconn
set myconn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")

constr="provider=microsoft.jet.oledb.4.0;Data Source=" & server.MapPath("user.mdb")
myconn.open constr
rs.Open "select ID from login",myconn,1,1'更改打开记录集的方式获得记录总数
if not rs.eof then
totoaliq = rs.RecordCount
Dim num()'动态数组
Dim i
num=getRanDom(totaliq,1)'取得在总纪录数范围内的一组随机数组
rs.close
for i=0 to totoaliq-1
rs.open "select * from login where id ="&num(i)
if not rs.eof then
response.write ("name is:"&rs("EngName")&"<br>")
end if
rs.close
next
set rs=nothing
myconn.close
set myconn=nothing
%>
</body>
</html>

不知道是不是楼主想要的效果,每次在数据库的所有记录中遍历,但顺序是随机的,每次显示的名称顺序都不一样。

2007-11-21 18:12
快速回复:代码错误,想把数据库中的一列赋值给数组,并输出来。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017105 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved