access数据库问题!

是这样updateabcsetmac=888wheremac=1100这样可以把mac下1100改为888,现在领导的要求是改为888-1000之间的数字,还要每行都不相... 是这样 update abc set mac=888 where mac=1100
这样可以把mac下1100改为888,现在领导的要求是 改为888-1000之间的数字,还要每行都不相同,就是说第一行改为了888,第二行就是890 第三行为945 第四行800-1000之间就可以,反正在888-1000之间浮动 行数有几十万行哦。
展开
 我来答
敏锐还宁静丶行家0
2012-08-19 · TA获得超过6870个赞
知道大有可为答主
回答量:3502
采纳率:0%
帮助的人:1795万
展开全部
楼主,关于你的问题描述“几十万行。。 要求就是把每行的1100 改成每行的888-1000之间的数字,而且每行改过后的数据不能相同” 我有个疑问:888-1000之间的数总共才113个,把这113个人数分配到几十万行,可能每行改过后的数据不能相同吗?
因此,在自己的理解上编写了下面的代码,不知是否适用?
Private Sub Command0_Click()
' 本代码由 百度知道 - 波涛电脑工作室(常山大宝) 编写
' 下面代码实现了mac的值1100替换为m(888-1000之间的随机数)
On Error GoTo Err
' 定义并打开记录集
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT abc.* FROM abc WHERE (((abc.mac)=1100));")
' 如果有记录
If Not (rst.EOF And rst.BOF) Then
' 到记录首
rst.MoveFirst
' 循环记录
While Not rst.EOF
' 生成888-1000之间的随机数m
m = Int(113 * Rnd + 888)
' 更新记录中mac的值等m
' 注意: 这里以其他字段的值为条件. 所以条件越多越准确
CurrentDb.Execute "UPDATE abc SET abc.mac ='" & m & "' WHERE (((abc.mc)='" & rst(0) & "'));"
' 下一条记录
rst.MoveNext
Wend
' 没有记录提示
Else
MsgBox "对不起。没有找到符合给定条件的数据!", 64 + 0 + 4096, "提示"
End If
'退出过程
Exit Sub
'错误提示
Err:
MsgBox Err.Description
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
成都迈硕电气有限公司
2025-01-19 广告
数据采集卡是成都迈硕电气有限公司提供的关键硬件组件之一。该数据采集卡具备高精度、高速度及强稳定性的特性,能够实时、准确地采集模拟和数字信号,广泛应用于工业自动化、测试测量、监控系统等领域。通过先进的转换技术和优化电路设计,确保数据在传输过程... 点击进入详情页
本回答由成都迈硕电气有限公司提供
blue_flyer
2012-08-19 · TA获得超过223个赞
知道小有建树答主
回答量:222
采纳率:100%
帮助的人:159万
展开全部
给你个可行的试试,可以的话麻烦给个肯定以及最佳,谢谢
首先备份表abc到另一个新表中abc_bak,然后将abc表导出为EXCEL ,然后将 abc 中 where mac=1100的所有记录删除,打开导出的EXCEL只保留mac=1100的记录,然后将mac那一列清空,将第一行的mac列公式写为=INT(RAND()*112)+888,然后按住右下角那个+一直拖到底将mac列所有行公式都搞成=INT(RAND()*112)+888,然后就会自动赋值800-1000的随机数,搞完EXCEL后,通过access表的导入外部数据,将这个EXCEL追加到abc表中,大功告成
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cuidongzhu
2012-08-18 · TA获得超过2万个赞
知道大有可为答主
回答量:1.1万
采纳率:57%
帮助的人:6439万
展开全部
楼主,你好!

你的问题描述感觉不太清楚。

把满足:MAC=1100的数据改成 MAC=888;
满足条件的数据可能不止一条,这个update动作,更改了多笔数据,但是这个是一次性的动作,
更改完毕后,再次做update动作肯定就没有满足 MAC=1000 条件的数据了。
既然如果这样的话,如何进行循环,取 888-1000的随机值呢。
更多追问追答
追问
就是这个伤脑筋啊,一次性的动作,把1100全改了  现在可以先不改,按领导的要求来改
不用update不知道用其他的能实现吗?
因为mac下全是1100 现在就是要把1100改成888-1000之间的数字,而且每行都不相同!
追答
需要更改你的where条件,修改的列名字肯定不能是你写的where条件中所包含的列。
否则用update,只是一次性的动作,这样无法满足楼主的所说需求。。

只能简单说下自己的想法:
几十万行,这个就必须用循环的做法了。。

首先表中应该有一列是主键的吧。
楼主先 select * from table_name where MAC=1100
先得到我们即将操作的数据集。

update

select * from table_name where MAC=1100

SET mac=变量(888-1000的随机值或者是每次自增1)

where 条件很关键。。

由于对需求了解不多,希望能够对楼主产生帮助。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhlinpb
2012-08-18 · TA获得超过153个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:105万
展开全部
一次肯定该不了,必须用循环,您应该有些基础,具体就不写了,给您个思路,

1、获取记录总数n:count(*)
2、循环n次, 用随机函数生成800-1000的值
,每一次更新一条记录。
3、要每一条记录的该字段值个不相同,根本不可能,几十万条记录,800-1000之间有几个整数呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式