Office中国论坛/Access中国论坛

标题: 记录分类问题! [打印本页]

作者: jiyu0617    时间: 2009-2-24 17:38
标题: 记录分类问题!
本帖最后由 jiyu0617 于 2009-2-25 08:54 编辑

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

               排名前20%以上至60%的记录分类更改成B
               排名前60%以上至80%的记录分类更改成C
               排名前80%以上的记录分类更改成D
如何操作
谢谢您的帮助!!!
作者: todaynew    时间: 2009-2-24 20:45
1# jiyu0617

[attach]35851[/attach]

[attach]35852[/attach]
作者: Henry D. Sy    时间: 2009-2-24 20:58
不知道是不是这个意思
你看看结果对不对


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
复制代码

作者: Henry D. Sy    时间: 2009-2-24 21:03
事件过程中判断字段是不是为空的可以去掉。
另,发帖请注意标题。
作者: ACMAIN_CHM    时间: 2009-2-24 21:33
查询中执行一下这一句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 .
作者: jiyu0617    时间: 2009-2-25 08:58
非常感谢你们,你们的解决办法一个比一个妙!!!
                      :victory::victory::victory::victory:




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3