Dim cnn As New ADODB.Connection 'ADO连接对象
Dim Collection As ADODB.Recordset 'ADO记录集对象
Dim Cnt As Integer '计算产生随机数的个数
Dim No() As Integer '动态数组存放所有产生的随机数字
Private Sub Command1_Click()
Form_Unload (True) '调用窗体的卸载事件
End Sub
Private Sub Form_Load()
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" App.Path "\Collection.mdb"
'打开数据库连接,驱动程序Microsoft.Jet.OLEDB.4.0,数据源为当前目录下的Collection数据库
Set Collection = New ADODB.Recordset
'申请一个新的Collection记录集对象
Collection.Open "select * from tab", cnn, adOpenKeyset, adLockOptimistic
'打开记录集对象
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim i As Integer
If Cnt
简单点实现可以在表中使用GUID,并自动生成,取数据时以此字段排序,使用完再更新此字段,10分钟的判断则通过加一个时间栏位就红了。基本保证是随机的。步骤如下:
建个测试表,假定tData是你需要的字段,tGUID、tUseTime为必须字段且不可为空
CREATE TABLE [dbo].[tbaidu_t1]([tGUID] [uniqueidentifier] NOT NULL,
[tUseTime] [datetime] NOT NULL,
[tData] [int] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tbaidu_t1] ADD CONSTRAINT [DF_tbaidu_t1_tGUID] DEFAULT (newid()) FOR [tGUID]
GO
ALTER TABLE [dbo].[tbaidu_t1] ADD CONSTRAINT [DF_tbaidu_t1_tUseTime] DEFAULT (getdate()) FOR [tUseTime]
GO
2. 新建一个存储过程
CREATE PROC usp_tbaidu_GetRandDataAS
-- 选取指定数据
SELECT TOP 3 * FROM tbaidu_t1
WHERE datediff(MI,tUsetime,GETDATE())>4
ORDER BY tGUID
-- 更新已选择数据的时间栏位
UPDATE tbaidu_t1 SET tUseTime = GETDATE()
WHERE tGUID IN(
SELECT TOP 3 tGUID FROM tbaidu_t1
WHERE datediff(MI,tUsetime,GETDATE())>4
ORDER BY tGUID
)
--更新所有数据对应的fGUID字段
UPDATE tbaidu_t1 SET tGUID = NEWID()
3.执行存储过程就好了
EXEC usp_tbaidu_GetRandData
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)