设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1515|回复: 5
打印 上一主题 下一主题

[查询] 记录分类问题!

[复制链接]
跳转到指定楼层
1#
发表于 2009-2-24 17:38:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jiyu0617 于 2009-2-25 08:54 编辑

求助! 谢谢你的热心帮助!!!大家好!
我有一个表,字段有:品名,数量,分类
请问:我想以数量按序,排名前20%的记录分类更改成A

               排名前20%以上至60%的记录分类更改成B
               排名前60%以上至80%的记录分类更改成C
               排名前80%以上的记录分类更改成D
如何操作
谢谢您的帮助!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-2-24 20:45:03 | 只看该作者
1# jiyu0617



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3#
发表于 2009-2-24 20:58:42 | 只看该作者
不知道是不是这个意思
你看看结果对不对


1 定义一个函数
  1. Public Function Gposition(Accor As Integer) As String
  2.     Dim tempString As String
  3.     Select Case Accor
  4.     Case Is > 80
  5.         tempString = "D"
  6.     Case Is > 60
  7.         tempString = "C"
  8.     Case Is > 20
  9.         tempString = "B"
  10.     Case Else
  11.         tempString = "A"
  12.     End Select
  13.     Gposition = tempString
  14. End Function
复制代码


2 随便做个查询,称之为“Q”

3 通过按钮事件来实现结果

  1. Private Sub Command2_Click()
  2.     Dim rs As New ADODB.Recordset
  3.     Dim Def As DAO.QueryDef
  4.     Dim strSQL As String, sSQL As String
  5.     Dim i As Integer

  6.     Set Def = CurrentDb.QueryDefs("Q")
  7.     For i = 20 To 100 Step 20
  8.         strSQL = "select top " & i & " percent * from 商品 order by 销售数量 desc"
  9.         Def.sql = strSQL
  10.         sSQL = "select 分类 from q where 分类 is null"
  11.         With rs
  12.             .Open sSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  13.             Do While Not .EOF
  14.                 If IsNull(.Fields(0)) Then
  15.                     .Fields(0) = i
  16.                     .MoveNext
  17.                 End If
  18.             Loop
  19.             .UpdateBatch
  20.             .Close
  21.         End With
  22.     Next
  23.     sSQL = "select 商品全名,销售数量,gposition(分类) as 新分类 from 商品 order by 销售数量 desc"
  24.     Def.sql = sSQL
  25.     DoCmd.OpenQuery "Q"
  26.     Def.Close
  27.     Set Def = Nothing
  28.     Set rs = Nothing
  29. End Sub
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4#
发表于 2009-2-24 21:03:39 | 只看该作者
事件过程中判断字段是不是为空的可以去掉。
另,发帖请注意标题。
5#
发表于 2009-2-24 21:33:43 | 只看该作者
查询中执行一下这一句SQL就行了。

update 商品
set 分类=Choose(int(dcount('*','商品','销售数量>=' & 销售数量)/dcount('*','商品')*10)+1,
  'A','A','B','B','B','B','C','C','D','D','D');



******************
*  一切皆有可能  *
******************

.
ACMAIN - Access论坛回贴准则(个人).
.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/BList/OtherDatabase .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .
.
http://www.office-cn.net/home/space.php?uid=141646 .
6#
 楼主| 发表于 2009-2-25 08:58:50 | 只看该作者
非常感谢你们,你们的解决办法一个比一个妙!!!
                      :victory::victory::victory::victory:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-3 17:43 , Processed in 0.107355 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表