過去ログ

                                Page     326
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼順位の付け方  miya 03/6/28(土) 12:24
   ┣Re:順位の付け方  孫悟空 03/6/30(月) 13:28
   ┃  ┣Re:順位の付け方  miya 03/6/30(月) 13:46
   ┃  ┃  ┗Re:順位の付け方  孫悟空 03/6/30(月) 14:30
   ┃  ┃     ┗Re:順位の付け方  miya 03/6/30(月) 16:32
   ┃  ┃        ┗Re:順位の付け方  孫悟空 03/6/30(月) 17:19
   ┃  ┗Re:順位の付け方  miya 03/6/30(月) 14:17
   ┃     ┗Re:順位の付け方  孫悟空 03/6/30(月) 14:32
   ┃        ┗Re:順位の付け方  miya 03/6/30(月) 18:13
   ┃           ┗Re:順位の付け方  孫悟空 03/6/30(月) 20:44
   ┃              ┗Re:順位の付け方  miya 03/7/1(火) 10:42
   ┗Re:順位の付け方  miya 03/7/1(火) 15:54
      ┗Re:順位の付け方  孫悟空 03/7/5(土) 10:23
         ┣Re:順位の付け方  miya 03/7/5(土) 11:32
         ┗動きました。  miya 03/7/5(土) 12:03
            ┗Re:動きました。  孫悟空 03/7/5(土) 18:06
               ┗Re:動きました。  miya 03/7/6(日) 9:58
                  ┗Re:動きました。  孫悟空 03/7/6(日) 18:15
                     ┗Re:動きました。  miya 03/7/7(月) 12:08
                        ┗Re:動きました。  孫悟空 03/7/7(月) 21:50
                           ┗ありがとうございました。  miya 03/7/8(火) 11:15

 ───────────────────────────────────────
 ■題名 : 順位の付け方
 ■名前 : miya <taisei-office@play.pos.to>
 ■日付 : 03/6/28(土) 12:24
 -------------------------------------------------------------------------
   Access2000使用してます。
各個人の1.〜5.の合計を求め、さらに 県別で5名の内、上位4名の合計を求め
(4名の時は4名の合計)県別で1位、2位といったように順位をつけていのですが。

・並べ替えの条件としては、個人の成績の良い順に 5人中4人の合計が県別の合計に
・5人の中で複数の個人合計が同じ場合は、生年月日順(昇順)で4人の合計
・県別の合計が同じ場合は、県別で個人成績4番目の人の成績の良い方を上位に
 さらに県別で個人成績4番目の人の成績も同じ場合は、3番目、2番目、1番目の
 良い方を上位に
・それでも同じ場合は、4番目の人の生年月日が昇順の方が上位に
のような結果を出せる方法はありますか?
説明が下手な上、複雑な質問ですみませんが回答お願い致します。

結果的には、下記のような形のレポートを作成したいのですが
どのように構成していったらよい回答願います。
・県別で5人いたら、5人の氏名も表示
                ↓

1位 北海道  合計 659  
           ↑
   (5人いても上位4人のみの合計、でも5人の氏名と個人の成績は表示)
     氏名   県名  生年月日  1.  2.  3.  4.  5.   合計
    Bさん  北海道 57/11/23  15  24  50  10  31   130
    Dさん  北海道 62/09/05  22  15  30  61  25   153
    Aさん  北海道 66/01/24  45  12  66  32  23   178
    Cさん  北海道 50/05/01  47  38  56  44  13   198
    Eさん  北海道 54/04/14  43  30  31  26  68   198
2位 神奈川  合計 659
     氏名   県名  生年月日  1.  2.  3.  4.  5.   合計
    Gさん  神奈川 58/02/01  25  36  22  18  29   130
    Fさん  神奈川 68/12/12  14  39  41  16  43   153
    Hさん  神奈川 53/08/16  58  40  30  18  52   198
    Iさん  神奈川 59/10/23  68  33  31  21  45   198


元になるテーブルは下のようにしました。
 顧客NO   氏名   県名 生年月日  1.  2.  3.  4.  5.
(オートナンバー) (テキスト)  (テキスト) (日付)  (数値)(数値)(数値)(数値)(数値)
  1    Aさん  北海道 66/01/24 45  12  66  32  23
  2    Bさん  北海道 57/11/23 15  24  50  10  31
  3    Cさん  北海道 50/05/01 47  38  56  44  13
  4    Dさん  北海道 62/09/05 22  15  30  61  25
  5    Eさん  北海道 54/04/14 43  30  31  26  68      
  6    Fさん  神奈川 68/12/12 33  27  69  53  34
  7    Gさん  神奈川 58/02/01 14  39  41  16  49
  8    Hさん  神奈川 53/08/16 74  70  30  18  52
  9    Iさん  神奈川 59/10/23 68  93  19  21  65

クエリーで個人の合計は出せるようにまで出来ました。

 顧客NO   氏名   県名 生年月日  1.  2.  3.  4.  5.   合計
  1    Aさん  北海道 66/01/24 45  12  66  32  23   178
  2    Bさん  北海道 57/11/23 15  24  50  10  31   130
  3    Cさん  北海道 50/05/01 47  38  56  44  13   198
  4    Dさん  北海道 62/09/05 22  15  30  61  25   153
  5    Eさん  北海道 54/04/14 43  30  31  26  68   198
  6    Fさん  神奈川 68/12/12 33  27  69  53  34   216
  7    Gさん  神奈川 58/02/01 14  39  41  16  49   159
  8    Hさん  神奈川 53/08/16 74  70  30  18  52   244
  9    Iさん  神奈川 59/10/23 68  93  19  21  65   266 

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : 孫悟空  ■日付 : 03/6/30(月) 13:28  -------------------------------------------------------------------------
   ▼miya さんこんにちは:
一発で県順位と個人の成績を抜き出すクエリーを作るのは難しそうです。
下記のようなコードを考えました。
ご参考に

'DAO3.6参照
Option Explicit
Sub 順位決定()
Dim SQLStr As String
Dim Ms_Db As DAO.Database
Dim Ms_Rec, Ms_Rec2, Ms_Rec3 As DAO.Recordset
Dim 県内順位, 表示順位, 県順位, 人数, 県数 As Long
Dim tbl As Variant

Set Ms_Db = CurrentDb

For Each tbl In Ms_Db.TableDefs
  Select Case tbl.Name
    Case "顧客順位テーブル"
      Ms_Db.Execute "drop table 顧客順位テーブル"
    Case "県順位テーブル"
      Ms_Db.Execute "drop table 県順位テーブル"
  End Select
Next tbl

SQLStr = ""
SQLStr = SQLStr & "SELECT 顧客NO,氏名,県名,生年月日," & Chr(13) & Chr(10)
SQLStr = SQLStr & "[1],[2],[3],[4],[5]," & Chr(13) & Chr(10)
SQLStr = SQLStr & "[1]+[2]+[3]+[4]+[5] AS 合計," & Chr(13) & Chr(10)
SQLStr = SQLStr & "0 AS 県内順位,0 AS 表示順位," & Chr(13) & Chr(10)
SQLStr = SQLStr & "'表示無' AS 表示有無" & Chr(13) & Chr(10)
SQLStr = SQLStr & "INTO 顧客順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "FROM 顧客テーブル;"
Ms_Db.Execute SQLStr

SQLStr = ""
SQLStr = SQLStr & "select distinct 県名" & Chr(13) & Chr(10)
SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)

Do While Not Ms_Rec.EOF
  '県内順位の更新
  県内順位 = 1
  SQLStr = ""
  SQLStr = SQLStr & "SELECT *" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where 県名='" & Ms_Rec("県名").Value & "'" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "order by 合計 desc,生年月日 asc;"
  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
  
  Do While Not Ms_Rec2.EOF
    SQLStr = ""
    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "set 県内順位=" & 県内順位 & Chr(13) & Chr(10)
    SQLStr = SQLStr & "where" & CHR(13) & CHR(10)
    SQLStr = SQLStr & "顧客NO=" & Ms_Rec2("顧客NO").Value
    Ms_Db.Execute SQLStr
    県内順位 = 県内順位 + 1
    Ms_Rec2.MoveNext
  Loop
  
  '表示順位の更新
  SQLStr = ""
  SQLStr = SQLStr & "SELECT DISTINCT 合計" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from " & Chr(13) & Chr(10)
  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
  SQLStr = SQLStr & "order by 合計 desc"
  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
  
  表示順位 = 1
  Do While Not Ms_Rec2.EOF
    SQLStr = ""
    SQLStr = SQLStr & "select count(*) as 人数" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "where" & CHR(13) & CHR(10)
    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
    Set Ms_Rec3 = Ms_Db.OpenRecordset(SQLStr)
    人数 = Ms_Rec3("人数").Value
    
    SQLStr = ""
    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "set 表示順位=" & 表示順位 & Chr(13) & Chr(10)
    SQLStr = SQLStr & "where" & CHR(13) & CHR(10)
    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
    Ms_Db.Execute SQLStr

    表示順位 = 表示順位 + 人数
    Ms_Rec2.MoveNext
  Loop
  
  '表示有無の更新
  SQLStr = ""
  SQLStr = SQLStr & "SELECT" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "表示順位" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県内順位=5" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
  
  SQLStr = ""
  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "set 表示有無='表示'" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
  SQLStr = SQLStr & "and 表示順位<=" & Ms_Rec2("表示順位").Value
  Ms_Db.Execute SQLStr
  
  Ms_Rec.MoveNext
Loop

'次に県順位の判定に必要な情報を組み入れた
'県順位テーブルを作成します。
SQLStr = ""
SQLStr = SQLStr & "SELECT 県名," & Chr(13) & Chr(10)
SQLStr = SQLStr & "SUM([1]+[2]+[3]+[4]+[5]) AS 県合計点,"
SQLStr = SQLStr & "SUM(IIF(県内順位=4,合計,0)) AS 四番目合計,"
SQLStr = SQLStr & "format(SUM(IIF(県内順位=4,生年月日,0)),'yy/mm/dd')"
SQLStr = SQLStr & " AS 四番目誕生日," & Chr(13) & Chr(10)
SQLStr = SQLStr & "0 AS 県順位" & Chr(13) & Chr(10)
SQLStr = SQLStr & "INTO 県順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "FROM 顧客順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "WHERE 県内順位<=4" & Chr(13) & Chr(10)
SQLStr = SQLStr & "GROUP BY 県名;"
Ms_Db.Execute SQLStr

SQLStr = ""
SQLStr = SQLStr & "select distinct" & Chr(13) & Chr(10)
SQLStr = SQLStr & "県合計点," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目合計," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目誕生日" & Chr(13) & Chr(10)
SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "order by" & Chr(13) & Chr(10)
SQLStr = SQLStr & "県合計点 DESC," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目合計 DESC," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目誕生日"
Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)

県順位 = 1
Do While Not Ms_Rec.EOF
  
  SQLStr = ""
  SQLStr = SQLStr & "select" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "count(*) as 県数" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "四番目誕生日="
  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
  SQLStr = SQLStr & "and 四番目合計="
  SQLStr = SQLStr & Ms_Rec("四番目合計").Value
  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)

  県数 = Ms_Rec2("県数").Value
  
  SQLStr = ""
  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "set 県順位=" & 県順位 & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県合計点=" & Ms_Rec("県合計点").Value
  SQLStr = SQLStr & " and 四番目誕生日="
  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value
  
  Ms_Db.Execute SQLStr
  県順位 = 県順位 + 県数
  Ms_Rec.MoveNext
Loop
Ms_Rec.Close
Ms_Rec2.Close
Ms_Rec3.Close
Ms_Db.Close

End Sub

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/6/30(月) 13:46  -------------------------------------------------------------------------
   ▼孫悟空 さん:
回答ありがとうございます。
あまりにも無茶苦茶な質問で申し訳ありません。
誠に申し訳ないのですが 下記のコードを
どこに書き込めば宜しいのでしょうか?

       ↓

下記のようなコードを考えました。
>ご参考に
>
>'DAO3.6参照
>Option Explicit
>Sub 順位決定()
>Dim SQLStr As String
>Dim Ms_Db As DAO.Database
>Dim Ms_Rec, Ms_Rec2, Ms_Rec3 As DAO.Recordset
>Dim 県内順位, 表示順位, 県順位, 人数, 県数 As Long
>Dim tbl As Variant
>
>Set Ms_Db = CurrentDb
>
>For Each tbl In Ms_Db.TableDefs
>  Select Case tbl.Name
>    Case "顧客順位テーブル"
>      Ms_Db.Execute "drop table 顧客順位テーブル"
>    Case "県順位テーブル"
>      Ms_Db.Execute "drop table 県順位テーブル"
>  End Select
>Next tbl
>
>SQLStr = ""
>SQLStr = SQLStr & "SELECT 顧客NO,氏名,県名,生年月日," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "[1],[2],[3],[4],[5]," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "[1]+[2]+[3]+[4]+[5] AS 合計," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "0 AS 県内順位,0 AS 表示順位," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "'表示無' AS 表示有無" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "INTO 顧客順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "FROM 顧客テーブル;"
>Ms_Db.Execute SQLStr
>
>SQLStr = ""
>SQLStr = SQLStr & "select distinct 県名" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)
>
>Do While Not Ms_Rec.EOF
>  '県内順位の更新
>  県内順位 = 1
>  SQLStr = ""
>  SQLStr = SQLStr & "SELECT *" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where 県名='" & Ms_Rec("県名").Value & "'" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "order by 合計 desc,生年月日 asc;"
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
>  
>  Do While Not Ms_Rec2.EOF
>    SQLStr = ""
>    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "set 県内順位=" & 県内順位 & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "where" & CHR(13) & CHR(10)
>    SQLStr = SQLStr & "顧客NO=" & Ms_Rec2("顧客NO").Value
>    Ms_Db.Execute SQLStr
>    県内順位 = 県内順位 + 1
>    Ms_Rec2.MoveNext
>  Loop
>  
>  '表示順位の更新
>  SQLStr = ""
>  SQLStr = SQLStr & "SELECT DISTINCT 合計" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from " & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
>  SQLStr = SQLStr & "order by 合計 desc"
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
>  
>  表示順位 = 1
>  Do While Not Ms_Rec2.EOF
>    SQLStr = ""
>    SQLStr = SQLStr & "select count(*) as 人数" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "where" & CHR(13) & CHR(10)
>    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
>    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
>    Set Ms_Rec3 = Ms_Db.OpenRecordset(SQLStr)
>    人数 = Ms_Rec3("人数").Value
>    
>    SQLStr = ""
>    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "set 表示順位=" & 表示順位 & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "where" & CHR(13) & CHR(10)
>    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
>    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
>    Ms_Db.Execute SQLStr
>
>    表示順位 = 表示順位 + 人数
>    Ms_Rec2.MoveNext
>  Loop
>  
>  '表示有無の更新
>  SQLStr = ""
>  SQLStr = SQLStr & "SELECT" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "表示順位" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県内順位=5" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
>  
>  SQLStr = ""
>  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "set 表示有無='表示'" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
>  SQLStr = SQLStr & "and 表示順位<=" & Ms_Rec2("表示順位").Value
>  Ms_Db.Execute SQLStr
>  
>  Ms_Rec.MoveNext
>Loop
>
>'次に県順位の判定に必要な情報を組み入れた
>'県順位テーブルを作成します。
>SQLStr = ""
>SQLStr = SQLStr & "SELECT 県名," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "SUM([1]+[2]+[3]+[4]+[5]) AS 県合計点,"
>SQLStr = SQLStr & "SUM(IIF(県内順位=4,合計,0)) AS 四番目合計,"
>SQLStr = SQLStr & "format(SUM(IIF(県内順位=4,生年月日,0)),'yy/mm/dd')"
>SQLStr = SQLStr & " AS 四番目誕生日," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "0 AS 県順位" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "INTO 県順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "FROM 顧客順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "WHERE 県内順位<=4" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "GROUP BY 県名;"
>Ms_Db.Execute SQLStr
>
>SQLStr = ""
>SQLStr = SQLStr & "select distinct" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "県合計点," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目合計," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目誕生日" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "order by" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "県合計点 DESC," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目合計 DESC," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目誕生日"
>Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)
>
>県順位 = 1
>Do While Not Ms_Rec.EOF
>  
>  SQLStr = ""
>  SQLStr = SQLStr & "select" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "count(*) as 県数" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "四番目誕生日="
>  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
>  SQLStr = SQLStr & "and 四番目合計="
>  SQLStr = SQLStr & Ms_Rec("四番目合計").Value
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
>
>  県数 = Ms_Rec2("県数").Value
>  
>  SQLStr = ""
>  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "set 県順位=" & 県順位 & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県合計点=" & Ms_Rec("県合計点").Value
>  SQLStr = SQLStr & " and 四番目誕生日="
>  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
>  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value
>  
>  Ms_Db.Execute SQLStr
>  県順位 = 県順位 + 県数
>  Ms_Rec.MoveNext
>Loop
>Ms_Rec.Close
>Ms_Rec2.Close
>Ms_Rec3.Close
>Ms_Db.Close
>
>End Sub

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : 孫悟空  ■日付 : 03/6/30(月) 14:30  -------------------------------------------------------------------------
   ▼miya さんへ
アクセス2000でしたね。
対象テーブル(作成したモジュールでは仮に"顧客テーブル"としてあるので実際のテーブル名に変更してください。)を持つmdbファイルで、以下のようにします。
・オブジェクトは、モジュールを選択してください。
・メニューの挿入,標準モジュールで新しいモジュールを作成し、
そのモジュールを開き、今回作成したコードを貼り付けてください。
・更に、ツール、参照設定でMicrosoft DAO3.6にチェックをいれて、
・F5を押して作成したモジュールを実行してみてください。

テーブル名称と、フィールド定義がうまくあっていれば、動くはずですが。。
では、頑張ってみてください。

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/6/30(月) 16:32  -------------------------------------------------------------------------
   ▼孫悟空 さん:
誠にたびたび、申し訳ありません。

>・更に、ツール、参照設定でMicrosoft DAO3.6にチェックをいれて、
Microsoft DAO3.6がありませんでした。
申し訳ありません。

>・F5を押して作成したモジュールを実行してみてください。
Microsoft DAO3.6がない為か実行をしてみましたが
エラーが出てしまいました。

他の方の書込み・回答を見ていても
DAOと何?では、答えが違ってくるから
それも質問と共に書いて下さい。のような書込みを
拝見した事があるのですが
DAOとかなのかをどのように調べたらよいのか解りません。
せっかく答えを下さったのに、本当に申し訳なく思います。
もしも、まだ返答して頂けるのなら、ご返答願います。
無理にとは申しませんので宜しくお願い申し上げます。

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : 孫悟空  ■日付 : 03/6/30(月) 17:19  -------------------------------------------------------------------------
   miyaさんへ
dao3.5はありますか?
もしあればそれで、試してみてください。

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/6/30(月) 14:17  -------------------------------------------------------------------------
   ▼孫悟空 さん:たびたび、すみません。
顧客順位テーブルと県順位テーブルは
下記のコードによって新規に作成されるのですか?
もしくは下記コードによって仮のテーブルのように
自動で作成されるのですか?
本当に申し訳ないです。
このような複雑な質問に答えを頂いたのにそれの
使い方も試す事も出来ないなんて情けないです。
本当に申し訳ありません。


>一発で県順位と個人の成績を抜き出すクエリーを作るのは難しそうです。
>下記のようなコードを考えました。
>ご参考に
>
>'DAO3.6参照
>Option Explicit
>Sub 順位決定()
>Dim SQLStr As String
>Dim Ms_Db As DAO.Database
>Dim Ms_Rec, Ms_Rec2, Ms_Rec3 As DAO.Recordset
>Dim 県内順位, 表示順位, 県順位, 人数, 県数 As Long
>Dim tbl As Variant
>
>Set Ms_Db = CurrentDb
>
>For Each tbl In Ms_Db.TableDefs
>  Select Case tbl.Name
>    Case "顧客順位テーブル"
>      Ms_Db.Execute "drop table 顧客順位テーブル"
>    Case "県順位テーブル"
>      Ms_Db.Execute "drop table 県順位テーブル"
>  End Select
>Next tbl
>
>SQLStr = ""
>SQLStr = SQLStr & "SELECT 顧客NO,氏名,県名,生年月日," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "[1],[2],[3],[4],[5]," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "[1]+[2]+[3]+[4]+[5] AS 合計," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "0 AS 県内順位,0 AS 表示順位," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "'表示無' AS 表示有無" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "INTO 顧客順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "FROM 顧客テーブル;"
>Ms_Db.Execute SQLStr
>
>SQLStr = ""
>SQLStr = SQLStr & "select distinct 県名" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)
>
>Do While Not Ms_Rec.EOF
>  '県内順位の更新
>  県内順位 = 1
>  SQLStr = ""
>  SQLStr = SQLStr & "SELECT *" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where 県名='" & Ms_Rec("県名").Value & "'" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "order by 合計 desc,生年月日 asc;"
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
>  
>  Do While Not Ms_Rec2.EOF
>    SQLStr = ""
>    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "set 県内順位=" & 県内順位 & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "where" & CHR(13) & CHR(10)
>    SQLStr = SQLStr & "顧客NO=" & Ms_Rec2("顧客NO").Value
>    Ms_Db.Execute SQLStr
>    県内順位 = 県内順位 + 1
>    Ms_Rec2.MoveNext
>  Loop
>  
>  '表示順位の更新
>  SQLStr = ""
>  SQLStr = SQLStr & "SELECT DISTINCT 合計" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from " & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
>  SQLStr = SQLStr & "order by 合計 desc"
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
>  
>  表示順位 = 1
>  Do While Not Ms_Rec2.EOF
>    SQLStr = ""
>    SQLStr = SQLStr & "select count(*) as 人数" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "where" & CHR(13) & CHR(10)
>    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
>    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
>    Set Ms_Rec3 = Ms_Db.OpenRecordset(SQLStr)
>    人数 = Ms_Rec3("人数").Value
>    
>    SQLStr = ""
>    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "set 表示順位=" & 表示順位 & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "where" & CHR(13) & CHR(10)
>    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
>    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
>    Ms_Db.Execute SQLStr
>
>    表示順位 = 表示順位 + 人数
>    Ms_Rec2.MoveNext
>  Loop
>  
>  '表示有無の更新
>  SQLStr = ""
>  SQLStr = SQLStr & "SELECT" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "表示順位" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県内順位=5" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
>  
>  SQLStr = ""
>  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "set 表示有無='表示'" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
>  SQLStr = SQLStr & "and 表示順位<=" & Ms_Rec2("表示順位").Value
>  Ms_Db.Execute SQLStr
>  
>  Ms_Rec.MoveNext
>Loop
>
>'次に県順位の判定に必要な情報を組み入れた
>'県順位テーブルを作成します。
>SQLStr = ""
>SQLStr = SQLStr & "SELECT 県名," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "SUM([1]+[2]+[3]+[4]+[5]) AS 県合計点,"
>SQLStr = SQLStr & "SUM(IIF(県内順位=4,合計,0)) AS 四番目合計,"
>SQLStr = SQLStr & "format(SUM(IIF(県内順位=4,生年月日,0)),'yy/mm/dd')"
>SQLStr = SQLStr & " AS 四番目誕生日," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "0 AS 県順位" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "INTO 県順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "FROM 顧客順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "WHERE 県内順位<=4" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "GROUP BY 県名;"
>Ms_Db.Execute SQLStr
>
>SQLStr = ""
>SQLStr = SQLStr & "select distinct" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "県合計点," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目合計," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目誕生日" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "order by" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "県合計点 DESC," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目合計 DESC," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目誕生日"
>Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)
>
>県順位 = 1
>Do While Not Ms_Rec.EOF
>  
>  SQLStr = ""
>  SQLStr = SQLStr & "select" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "count(*) as 県数" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "四番目誕生日="
>  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
>  SQLStr = SQLStr & "and 四番目合計="
>  SQLStr = SQLStr & Ms_Rec("四番目合計").Value
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
>
>  県数 = Ms_Rec2("県数").Value
>  
>  SQLStr = ""
>  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "set 県順位=" & 県順位 & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県合計点=" & Ms_Rec("県合計点").Value
>  SQLStr = SQLStr & " and 四番目誕生日="
>  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
>  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value
>  
>  Ms_Db.Execute SQLStr
>  県順位 = 県順位 + 県数
>  Ms_Rec.MoveNext
>Loop
>Ms_Rec.Close
>Ms_Rec2.Close
>Ms_Rec3.Close
>Ms_Db.Close
>
>End Sub

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : 孫悟空  ■日付 : 03/6/30(月) 14:32  -------------------------------------------------------------------------
   ▼miya さん:
>▼孫悟空 さん:たびたび、すみません。
>顧客順位テーブルと県順位テーブルは
>下記のコードによって新規に作成されるのですか?
はいそうです。

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/6/30(月) 18:13  -------------------------------------------------------------------------
   ▼孫悟空 さん:
本当に申し訳ないです。
Microsoft DAO3.6 Object Libraryというのがありました。
チェックして実行しましたが
「パラメータが少なすぎます。20を指定してください。」
と出てきましたが
自分の実行方法が間違っているのでしょうか?
モジュールは保存したら、どのように呼び出すのですかね?

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : 孫悟空  ■日付 : 03/6/30(月) 20:44  -------------------------------------------------------------------------
   ▼miya さん:
デバックして止まったコードを確かめてください。
多分、以下のいずれかのコードで止まっていると思います。

Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)
Ms_Db.Execute SQLStr

エラーは、止まったコードの上のSQLStr内のフィールド名が、実際miyaさんが
準備したテーブルのフィールド名と異なる為に、発生していると思われます。
 よくコード内のフィールド名と、実際のテーブルのフィールド名を
比較して、異なる物があれば、コードを修正してください。

 本日は久し振りのお休みで、このサイトで遊んでいられましたが
また明日からは、地獄の毎日へ逆戻りです。
週末まで、戻ってこられそうにありませんので、どなたか
フォローをお願いします。では、がんばってください。

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/7/1(火) 10:42  -------------------------------------------------------------------------
   ▼孫悟空 さん:
おはようございます。
久しぶりのお休みでしたのに 自分の質問に何度も
ご親切にお答え頂き、本当にありがとうございました。

エラー回避の説明までして頂き、ありがとうございます。
悪戦苦闘しながらもチャレンジしてみます。
どうしても解らない時は、又、質問だけさせてください。

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/7/1(火) 15:54  -------------------------------------------------------------------------
   顧客順位・県順位テーブルと両方、新規に出来ましたが
県順位テーブルで「県順位」は、評価されないのは
参照している値が比較する事が出来ないからですかね?
県合計は、昇順で並んでいて、四番目誕生日も昇順に並んでいますが
県順位は、1,2,3,4とかではなく、全て"0"しか表示してないのは、何故ですかね?
まだ何か、指定が足りないのでしょうか?

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : 孫悟空  ■日付 : 03/7/5(土) 10:23  -------------------------------------------------------------------------
   miyaさんへ
県順位は、最後の部分の下記コードで処理しています。
このコードがうまく動いていないようです。
以下の方法で調査してみてください。

1.コードが間違っていましたので、まずはそれを直してみてください。
 但し今回の直接の原因では、なさそうですが、、、

2.順位を判定するレコードセットがうまく取得できていない。
3.更新するレコードが取得できていない
4.最後までモジュールが動いたか確認する。

・・・・・・・・・・・・
Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)

'※2 この3行を追加してみてください。
IF Ms_Rec.RECORDCOUNT=0 THEN
    MSGBOX "対策2が必要です。"
END IF

県順位 = 1
Do While Not Ms_Rec.EOF
 
  SQLStr = ""
  SQLStr = SQLStr & "select" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "count(*) as 県数" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "四番目誕生日="
  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
  SQLStr = SQLStr & "and 四番目合計="
  SQLStr = SQLStr & Ms_Rec("四番目合計").Value  
'※1 この行が抜けてました。
  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value

  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
 
'※2 この3行を追加してみてください。
  IF Ms_Rec2.RECORDCOUNT=0 THEN
   MSGBOX "対策3が必要です。"
  END IF

  県数 = Ms_Rec2("県数").Value
 
  SQLStr = ""
  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "set 県順位=" & 県順位 & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県合計点=" & Ms_Rec("県合計点").Value
  SQLStr = SQLStr & " and 四番目誕生日="
  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value
 
  Ms_Db.Execute SQLStr, dbFailOnError
  県順位 = 県順位 + 県数
  Ms_Rec.MoveNext
Loop
Ms_Rec.Close
Ms_Rec2.Close
Ms_Rec3.Close
Ms_Db.Close
'※4 この1行を追加。
MsgBox "4 終わりまで正常に動きました。"
End Sub

 ───────────────────────────────────────  ■題名 : Re:順位の付け方  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/7/5(土) 11:32  -------------------------------------------------------------------------
   ▼孫悟空 さん、ご迷惑をおかけして申し訳ないです。
御親切な回答ありがとうございます。
誠に申し訳ないのですが下記コードをどの部分に追加・訂正してよいのか
わからないのですが・・・
なんとなく全てを追っていくと 解るのですが
せっかく、直して頂いたのに自分が間違った箇所に
追加・訂正しているようなのですが・・・
お手数ですが宜しければ、ここですよ!と
わかるようにして頂けたら、ありがたいです。


>県順位は、最後の部分の下記コードで処理しています。
>このコードがうまく動いていないようです。
>以下の方法で調査してみてください。
>
>1.コードが間違っていましたので、まずはそれを直してみてください。
> 但し今回の直接の原因では、なさそうですが、、、
>
>2.順位を判定するレコードセットがうまく取得できていない。
>3.更新するレコードが取得できていない
>4.最後までモジュールが動いたか確認する。
>
>・・・・・・・・・・・・
>Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)
>
>'※2 この3行を追加してみてください。
>IF Ms_Rec.RECORDCOUNT=0 THEN
>    MSGBOX "対策2が必要です。"
>END IF
>
>県順位 = 1
>Do While Not Ms_Rec.EOF
> 
>  SQLStr = ""
>  SQLStr = SQLStr & "select" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "count(*) as 県数" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "四番目誕生日="
>  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
>  SQLStr = SQLStr & "and 四番目合計="
>  SQLStr = SQLStr & Ms_Rec("四番目合計").Value  
>'※1 この行が抜けてました。
>  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value
>
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
> 
>'※2 この3行を追加してみてください。
>  IF Ms_Rec2.RECORDCOUNT=0 THEN
>   MSGBOX "対策3が必要です。"
>  END IF
>
>  県数 = Ms_Rec2("県数").Value
> 
>  SQLStr = ""
>  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "set 県順位=" & 県順位 & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県合計点=" & Ms_Rec("県合計点").Value
>  SQLStr = SQLStr & " and 四番目誕生日="
>  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
>  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value
> 
>  Ms_Db.Execute SQLStr, dbFailOnError
>  県順位 = 県順位 + 県数
>  Ms_Rec.MoveNext
>Loop
>Ms_Rec.Close
>Ms_Rec2.Close
>Ms_Rec3.Close
>Ms_Db.Close
>'※4 この1行を追加。
>MsgBox "4 終わりまで正常に動きました。"
>End Sub

 ───────────────────────────────────────  ■題名 : 動きました。  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/7/5(土) 12:03  -------------------------------------------------------------------------
   ▼孫悟空 さん、下記コードの入れ方が間違えて入れてたみたいでした。
すみませんでした。
ちゃんとモジュールは動きました。"4 終わりまで正常に動きました。"と
出ました。
しかし、新規のテーブルは今回なかったです。

 ───────────────────────────────────────  ■題名 : Re:動きました。  ■名前 : 孫悟空  ■日付 : 03/7/5(土) 18:06  -------------------------------------------------------------------------
   ▼miya さんへ:
>しかし、新規のテーブルは今回なかったです。
実行したのは下記モジュールと同じですか?
別モジュールを新たに作って貼り付けて実行してみてください。
そこで以下の点確認ください。

・新規のテーブル(県順位テーブル,顧客順位テーブル)はできましたか?
・県順位は、更新されましたか?
・4 終わりまで正常に動きました。のメッセージだけがでましたか?
・他にもメッセージがでたなら何のメッセージでしたか?

Sub 順位決定()
Dim SQLStr As String
Dim Ms_Db As DAO.Database
Dim Ms_Rec, Ms_Rec2, Ms_Rec3 As DAO.Recordset
Dim 県内順位, 表示順位, 県順位, 人数, 県数 As Long
Dim tbl As Variant

Set Ms_Db = CurrentDb

For Each tbl In Ms_Db.TableDefs
  Select Case tbl.Name
    Case "顧客順位テーブル"
      Ms_Db.Execute "drop table 顧客順位テーブル"
    Case "県順位テーブル"
      Ms_Db.Execute "drop table 県順位テーブル"
  End Select
Next tbl

SQLStr = ""
SQLStr = SQLStr & "SELECT 顧客NO,氏名,県名,生年月日," & Chr(13) & Chr(10)
SQLStr = SQLStr & "[1],[2],[3],[4],[5]," & Chr(13) & Chr(10)
SQLStr = SQLStr & "[1]+[2]+[3]+[4]+[5] AS 合計," & Chr(13) & Chr(10)
SQLStr = SQLStr & "0 AS 県内順位,0 AS 表示順位," & Chr(13) & Chr(10)
SQLStr = SQLStr & "'表示無' AS 表示有無" & Chr(13) & Chr(10)
SQLStr = SQLStr & "INTO 顧客順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "FROM 顧客テーブル;"
Ms_Db.Execute SQLStr

SQLStr = ""
SQLStr = SQLStr & "select distinct 県名" & Chr(13) & Chr(10)
SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)

Do While Not Ms_Rec.EOF
  '県内順位の更新
  県内順位 = 1
  SQLStr = ""
  SQLStr = SQLStr & "SELECT *" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where 県名='" & Ms_Rec("県名").Value & "'" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "order by 合計 desc,生年月日 asc;"
  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
 
  Do While Not Ms_Rec2.EOF
    SQLStr = ""
    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "set 県内順位=" & 県内順位 & Chr(13) & Chr(10)
    SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "顧客NO=" & Ms_Rec2("顧客NO").Value
    Ms_Db.Execute SQLStr
    県内順位 = 県内順位 + 1
    Ms_Rec2.MoveNext
  Loop
 
  '表示順位の更新
  SQLStr = ""
  SQLStr = SQLStr & "SELECT DISTINCT 合計" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from " & Chr(13) & Chr(10)
  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
  SQLStr = SQLStr & "order by 合計 desc"
  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
 
  表示順位 = 1
  Do While Not Ms_Rec2.EOF
    SQLStr = ""
    SQLStr = SQLStr & "select count(*) as 人数" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
    Set Ms_Rec3 = Ms_Db.OpenRecordset(SQLStr)
    人数 = Ms_Rec3("人数").Value
  
    SQLStr = ""
    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "set 表示順位=" & 表示順位 & Chr(13) & Chr(10)
    SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
    Ms_Db.Execute SQLStr

    表示順位 = 表示順位 + 人数
    Ms_Rec2.MoveNext
  Loop
 
  '表示有無の更新
  SQLStr = ""
  SQLStr = SQLStr & "SELECT" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "表示順位" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県内順位=5" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
 
  SQLStr = ""
  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "set 表示有無='表示'" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
  SQLStr = SQLStr & "and 表示順位<=" & Ms_Rec2("表示順位").Value
  Ms_Db.Execute SQLStr
 
  Ms_Rec.MoveNext
Loop

'次に県順位の判定に必要な情報を組み入れた
'県順位テーブルを作成します。
SQLStr = ""
SQLStr = SQLStr & "SELECT 県名," & Chr(13) & Chr(10)
SQLStr = SQLStr & "SUM([1]+[2]+[3]+[4]+[5]) AS 県合計点,"
SQLStr = SQLStr & "SUM(IIF(県内順位=4,合計,0)) AS 四番目合計,"
SQLStr = SQLStr & "format(SUM(IIF(県内順位=4,生年月日,0)),'yy/mm/dd')"
SQLStr = SQLStr & " AS 四番目誕生日," & Chr(13) & Chr(10)
SQLStr = SQLStr & "0 AS 県順位" & Chr(13) & Chr(10)
SQLStr = SQLStr & "INTO 県順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "FROM 顧客順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "WHERE 県内順位<=4" & Chr(13) & Chr(10)
SQLStr = SQLStr & "GROUP BY 県名;"
Ms_Db.Execute SQLStr

SQLStr = ""
SQLStr = SQLStr & "select distinct" & Chr(13) & Chr(10)
SQLStr = SQLStr & "県合計点," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目合計," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目誕生日" & Chr(13) & Chr(10)
SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "order by" & Chr(13) & Chr(10)
SQLStr = SQLStr & "県合計点 DESC," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目合計 DESC," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目誕生日"

Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)

'※2 この3行を追加してみてください。
If Ms_Rec.RecordCount = 0 Then
    MsgBox "対策2が必要です。"
End If

県順位 = 1
Do While Not Ms_Rec.EOF

  SQLStr = ""
  SQLStr = SQLStr & "select" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "count(*) as 県数" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "四番目誕生日="
  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
  SQLStr = SQLStr & "and 四番目合計="
  SQLStr = SQLStr & Ms_Rec("四番目合計").Value
'※1 この行が抜けてました。
  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value

  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
 
'※2 この3行を追加してみてください。
  If Ms_Rec2.RecordCount = 0 Then
   MsgBox "対策3が必要です。"
  End If

  県数 = Ms_Rec2("県数").Value

  SQLStr = ""
  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "set 県順位=" & 県順位 & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県合計点=" & Ms_Rec("県合計点").Value
  SQLStr = SQLStr & " and 四番目誕生日="
  SQLStr = SQLStr & "#" & Ms_Rec("四番目誕生日").Value & "# "
  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value

  Ms_Db.Execute SQLStr, dbFailOnError
  県順位 = 県順位 + 県数
  Ms_Rec.MoveNext
Loop
Ms_Rec.Close
Ms_Rec2.Close
Ms_Rec3.Close
Ms_Db.Close
'※4 この1行を追加。
MsgBox "4 終わりまで正常に動きました。"
End Sub

 ───────────────────────────────────────  ■題名 : Re:動きました。  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/7/6(日) 9:58  -------------------------------------------------------------------------
   ▼孫悟空 さん
何度も何度も本当に申し訳ないです。
新規テーブルが出来なかったのは、自分がデータベースをテーブルの所で
開いていたから出来なかっただけのようでした。
すみません。

>実行したのは下記モジュールと同じですか?
>別モジュールを新たに作って貼り付けて実行してみてください。
下記モジュールで実行しました。

>そこで以下の点確認ください。
>
>・新規のテーブル(県順位テーブル,顧客順位テーブル)はできましたか?
新規テーブル(県順位テーブル,顧客順位テーブル)出来ました。
>・県順位は、更新されましたか?
県順位テーブルの県順位は、申し訳ないのですが
県別に合計、四番目合計、四番目誕生日は表示されました。
県順位だけは、どうしても全て"0"表示になってしまいました。


>・4 終わりまで正常に動きました。のメッセージだけがでましたか?
「4 終わりまで正常に動きました。」メッセージだけ出ました。
それ以外のメッセージは、何も出ませんでした。

顧客順位テーブルの県内順位は、合計の降順での順位付けに
なってますがそれはコードを昇順の指定にすればいいのですかね?

 ───────────────────────────────────────  ■題名 : Re:動きました。  ■名前 : 孫悟空  ■日付 : 03/7/6(日) 18:15  -------------------------------------------------------------------------
   ▼miya さん:
>>・県順位は、更新されましたか?
>県順位テーブルの県順位は、申し訳ないのですが
>県別に合計、四番目合計、四番目誕生日は表示されました。
>県順位だけは、どうしても全て"0"表示になってしまいました。
原因がよくわかりません。多分日付データが原因と思います。
試しに以下のコードを試してください。
Option Explicit
Sub 順位決定()
Dim SQLStr As String
Dim Ms_Db As DAO.Database
Dim Ms_Rec, Ms_Rec2, Ms_Rec3 As DAO.Recordset
Dim 県内順位, 表示順位, 県順位, 人数, 県数 As Long
Dim tbl As Variant

Set Ms_Db = CurrentDb

For Each tbl In Ms_Db.TableDefs
  Select Case tbl.Name
    Case "顧客順位テーブル"
      Ms_Db.Execute "drop table 顧客順位テーブル"
    Case "県順位テーブル"
      Ms_Db.Execute "drop table 県順位テーブル"
  End Select
Next tbl

SQLStr = ""
SQLStr = SQLStr & "SELECT 顧客NO,氏名,県名,生年月日," & Chr(13) & Chr(10)
SQLStr = SQLStr & "[1],[2],[3],[4],[5]," & Chr(13) & Chr(10)
SQLStr = SQLStr & "[1]+[2]+[3]+[4]+[5] AS 合計," & Chr(13) & Chr(10)
SQLStr = SQLStr & "0 AS 県内順位,0 AS 表示順位," & Chr(13) & Chr(10)
SQLStr = SQLStr & "'表示無' AS 表示有無" & Chr(13) & Chr(10)
SQLStr = SQLStr & "INTO 顧客順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "FROM 顧客テーブル;"
Ms_Db.Execute SQLStr

SQLStr = ""
SQLStr = SQLStr & "select distinct 県名" & Chr(13) & Chr(10)
SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)

Do While Not Ms_Rec.EOF
  '県内順位の更新
  県内順位 = 1
  SQLStr = ""
  SQLStr = SQLStr & "SELECT *" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where 県名='" & Ms_Rec("県名").Value & "'" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "order by 合計 desc,生年月日 asc;"
  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
 
  Do While Not Ms_Rec2.EOF
    SQLStr = ""
    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "set 県内順位=" & 県内順位 & Chr(13) & Chr(10)
    SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "顧客NO=" & Ms_Rec2("顧客NO").Value
    Ms_Db.Execute SQLStr
    県内順位 = 県内順位 + 1
    Ms_Rec2.MoveNext
  Loop
 
  '表示順位の更新
  SQLStr = ""
  SQLStr = SQLStr & "SELECT DISTINCT 合計" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from " & Chr(13) & Chr(10)
  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
  SQLStr = SQLStr & "order by 合計 desc"
  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
 
  表示順位 = 1
  Do While Not Ms_Rec2.EOF
    SQLStr = ""
    SQLStr = SQLStr & "select count(*) as 人数" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
    Set Ms_Rec3 = Ms_Db.OpenRecordset(SQLStr)
    人数 = Ms_Rec3("人数").Value
  
    SQLStr = ""
    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "set 表示順位=" & 表示順位 & Chr(13) & Chr(10)
    SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
    Ms_Db.Execute SQLStr

    表示順位 = 表示順位 + 人数
    Ms_Rec2.MoveNext
  Loop
 
  '表示有無の更新
  SQLStr = ""
  SQLStr = SQLStr & "SELECT" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "表示順位" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県内順位=5" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
 
  SQLStr = ""
  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "set 表示有無='表示'" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
  SQLStr = SQLStr & "and 表示順位<=" & Ms_Rec2("表示順位").Value
  Ms_Db.Execute SQLStr
 
  Ms_Rec.MoveNext
Loop

'次に県順位の判定に必要な情報を組み入れた
'県順位テーブルを作成します。
SQLStr = ""
SQLStr = SQLStr & "SELECT 県名," & Chr(13) & Chr(10)
SQLStr = SQLStr & "SUM([1]+[2]+[3]+[4]+[5]) AS 県合計点,"
SQLStr = SQLStr & "SUM(IIF(県内順位=4,合計,0)) AS 四番目合計,"
SQLStr = SQLStr & "format(SUM(IIF(県内順位=4,生年月日,0)),'YYYY/MM/DD')"
SQLStr = SQLStr & " AS 四番目誕生日," & Chr(13) & Chr(10)
SQLStr = SQLStr & "0 AS 県順位" & Chr(13) & Chr(10)
SQLStr = SQLStr & "INTO 県順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "FROM 顧客順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "WHERE 県内順位<=4" & Chr(13) & Chr(10)
SQLStr = SQLStr & "GROUP BY 県名;"

Ms_Db.Execute SQLStr

SQLStr = ""
SQLStr = SQLStr & "select distinct" & Chr(13) & Chr(10)
SQLStr = SQLStr & "県合計点," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目合計," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目誕生日" & Chr(13) & Chr(10)
SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "order by" & Chr(13) & Chr(10)
SQLStr = SQLStr & "県合計点 DESC," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目合計 DESC," & Chr(13) & Chr(10)
SQLStr = SQLStr & "四番目誕生日"

Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)

'※2 この3行を追加してみてください。
If Ms_Rec.RecordCount = 0 Then
    MsgBox "対策2が必要です。"
End If

県順位 = 1
Do While Not Ms_Rec.EOF
  MsgBox 県順位 & "位の更新をします。"
  SQLStr = ""
  SQLStr = SQLStr & "select" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "count(*) as 県数" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "四番目誕生日="
  SQLStr = SQLStr & "'" & Ms_Rec("四番目誕生日").Value & "' "
  SQLStr = SQLStr & "and 四番目合計="
  SQLStr = SQLStr & Ms_Rec("四番目合計").Value
'※1 この行が抜けてました。
  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value

  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
 
'※2 この3行を追加してみてください。
  If Ms_Rec2.RecordCount = 0 Then
   MsgBox "対策3が必要です。"
  End If

  県数 = Ms_Rec2("県数").Value

  SQLStr = ""
  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "set 県順位=" & 県順位 & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県合計点=" & Ms_Rec("県合計点").Value
  SQLStr = SQLStr & " and 四番目誕生日="
  SQLStr = SQLStr & "'" & Ms_Rec("四番目誕生日").Value & "' "
  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value

  Ms_Db.Execute SQLStr, dbFailOnError
  県順位 = 県順位 + 県数
  Ms_Rec.MoveNext
Loop
Ms_Rec.Close
Ms_Rec2.Close
Ms_Rec3.Close
Ms_Db.Close
'※4 この1行を追加。
MsgBox "4 終わりまで正常に動きました。"
End Sub
これでどんなメッセージがでたか教えてください。

>顧客順位テーブルの県内順位は、合計の降順での順位付けに
>なってますがそれはコードを昇順の指定にすればいいのですかね?
テーブルは、順番は関係無いので、順位で並べたい場合はクエリーで
呼び出しましょう。

 ───────────────────────────────────────  ■題名 : Re:動きました。  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/7/7(月) 12:08  -------------------------------------------------------------------------
   ▼孫悟空 さん、何度もありがとうございます。
>県順位は、更新されましたか?
 更新されました。

>原因がよくわかりません。多分日付データが原因と思います。
 申し訳ありませんでした。

下記のコードで試しましたら、県順位が表示されました。
>試しに以下のコードを試してください。
>Option Explicit
>Sub 順位決定()
>Dim SQLStr As String
>Dim Ms_Db As DAO.Database
>Dim Ms_Rec, Ms_Rec2, Ms_Rec3 As DAO.Recordset
>Dim 県内順位, 表示順位, 県順位, 人数, 県数 As Long
>Dim tbl As Variant
>
>Set Ms_Db = CurrentDb
>
>For Each tbl In Ms_Db.TableDefs
>  Select Case tbl.Name
>    Case "顧客順位テーブル"
>      Ms_Db.Execute "drop table 顧客順位テーブル"
>    Case "県順位テーブル"
>      Ms_Db.Execute "drop table 県順位テーブル"
>  End Select
>Next tbl
>
>SQLStr = ""
>SQLStr = SQLStr & "SELECT 顧客NO,氏名,県名,生年月日," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "[1],[2],[3],[4],[5]," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "[1]+[2]+[3]+[4]+[5] AS 合計," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "0 AS 県内順位,0 AS 表示順位," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "'表示無' AS 表示有無" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "INTO 顧客順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "FROM 顧客テーブル;"
>Ms_Db.Execute SQLStr
>
>SQLStr = ""
>SQLStr = SQLStr & "select distinct 県名" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)
>
>Do While Not Ms_Rec.EOF
>  '県内順位の更新
>  県内順位 = 1
>  SQLStr = ""
>  SQLStr = SQLStr & "SELECT *" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where 県名='" & Ms_Rec("県名").Value & "'" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "order by 合計 desc,生年月日 asc;"
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
> 
>  Do While Not Ms_Rec2.EOF
>    SQLStr = ""
>    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "set 県内順位=" & 県内順位 & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "顧客NO=" & Ms_Rec2("顧客NO").Value
>    Ms_Db.Execute SQLStr
>    県内順位 = 県内順位 + 1
>    Ms_Rec2.MoveNext
>  Loop
> 
>  '表示順位の更新
>  SQLStr = ""
>  SQLStr = SQLStr & "SELECT DISTINCT 合計" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from " & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
>  SQLStr = SQLStr & "order by 合計 desc"
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
> 
>  表示順位 = 1
>  Do While Not Ms_Rec2.EOF
>    SQLStr = ""
>    SQLStr = SQLStr & "select count(*) as 人数" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
>    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
>    Set Ms_Rec3 = Ms_Db.OpenRecordset(SQLStr)
>    人数 = Ms_Rec3("人数").Value
>  
>    SQLStr = ""
>    SQLStr = SQLStr & "update 顧客順位テーブル" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "set 表示順位=" & 表示順位 & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>    SQLStr = SQLStr & "合計=" & Ms_Rec2("合計").Value & " "
>    SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
>    Ms_Db.Execute SQLStr
>
>    表示順位 = 表示順位 + 人数
>    Ms_Rec2.MoveNext
>  Loop
> 
>  '表示有無の更新
>  SQLStr = ""
>  SQLStr = SQLStr & "SELECT" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "表示順位" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from 顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県内順位=5" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "and 県名='" & Ms_Rec("県名").Value & "'"
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
> 
>  SQLStr = ""
>  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "顧客順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "set 表示有無='表示'" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県名='" & Ms_Rec("県名").Value & "' "
>  SQLStr = SQLStr & "and 表示順位<=" & Ms_Rec2("表示順位").Value
>  Ms_Db.Execute SQLStr
> 
>  Ms_Rec.MoveNext
>Loop
>
>'次に県順位の判定に必要な情報を組み入れた
>'県順位テーブルを作成します。
>SQLStr = ""
>SQLStr = SQLStr & "SELECT 県名," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "SUM([1]+[2]+[3]+[4]+[5]) AS 県合計点,"
>SQLStr = SQLStr & "SUM(IIF(県内順位=4,合計,0)) AS 四番目合計,"
>SQLStr = SQLStr & "format(SUM(IIF(県内順位=4,生年月日,0)),'YYYY/MM/DD')"
>SQLStr = SQLStr & " AS 四番目誕生日," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "0 AS 県順位" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "INTO 県順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "FROM 顧客順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "WHERE 県内順位<=4" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "GROUP BY 県名;"
>
>Ms_Db.Execute SQLStr
>
>SQLStr = ""
>SQLStr = SQLStr & "select distinct" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "県合計点," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目合計," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目誕生日" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "order by" & Chr(13) & Chr(10)
>SQLStr = SQLStr & "県合計点 DESC," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目合計 DESC," & Chr(13) & Chr(10)
>SQLStr = SQLStr & "四番目誕生日"
>
>Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)
>
>'※2 この3行を追加してみてください。
>If Ms_Rec.RecordCount = 0 Then
>    MsgBox "対策2が必要です。"
>End If
>
>県順位 = 1
>Do While Not Ms_Rec.EOF
>  MsgBox 県順位 & "位の更新をします。"
>  SQLStr = ""
>  SQLStr = SQLStr & "select" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "count(*) as 県数" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "四番目誕生日="
>  SQLStr = SQLStr & "'" & Ms_Rec("四番目誕生日").Value & "' "
>  SQLStr = SQLStr & "and 四番目合計="
>  SQLStr = SQLStr & Ms_Rec("四番目合計").Value
>'※1 この行が抜けてました。
>  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value
>
>  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)
> 
>'※2 この3行を追加してみてください。
>  If Ms_Rec2.RecordCount = 0 Then
>   MsgBox "対策3が必要です。"
>  End If
>
>  県数 = Ms_Rec2("県数").Value
>
>  SQLStr = ""
>  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県順位テーブル" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "set 県順位=" & 県順位 & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
>  SQLStr = SQLStr & "県合計点=" & Ms_Rec("県合計点").Value
>  SQLStr = SQLStr & " and 四番目誕生日="
>  SQLStr = SQLStr & "'" & Ms_Rec("四番目誕生日").Value & "' "
>  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value
>
>  Ms_Db.Execute SQLStr, dbFailOnError
>  県順位 = 県順位 + 県数
>  Ms_Rec.MoveNext
>Loop
>Ms_Rec.Close
>Ms_Rec2.Close
>Ms_Rec3.Close
>Ms_Db.Close
>'※4 この1行を追加。
>MsgBox "4 終わりまで正常に動きました。"
>End Sub

>これでどんなメッセージがでたか教えてください。
 1位の更新をします。2位の更新をします。〜5位の更新をします。
 4終わりまで正常に動きました。のメッセージが出ました。
 
最初の質問の祭、[1]〜[5]で質問したので、[1]〜[5]コードは書かれていますが、
[1]〜[5]だけではなく増えた時は、孫悟空さんの作成したコード内に
書き足せば良いだけでしょうか?

こんな感じで
SQLStr = SQLStr & "[1],[2],[3],[4],[5],[6],[7],[8],[9],
[10]" & Chr(13) & Chr(10)

さらに、最初の質問では、四番目合計、四番目誕生日だけでよかったのですが
急遽、県順位を指定するのに、県別合計が同じ場合

4番目合計、4番目合計が同じ場合は、3番目合計を比較
      3番目合計が同じ場合は、2番目合計を比較
      2番目合計が同じ場合は、1番目合計を比較
      1番目合計が同じ場合は、4番目誕生日を比較

      4番目誕生日がが同じ場合は、3番目誕生日を比較
      3番目誕生日がが同じ場合は、3番目誕生日を比較
      2番目誕生日がが同じ場合は、1番目誕生日を比較
これもコードに書き足せば可能でしょうか?
ここまで親切に回答を頂いといて、いつまでもご迷惑をおかけして
本当に申し訳ありません。
[1]〜[10]までをコード内に追加して、試したのですが出来ませんでした。
Chr(13) & Chr(10) ← ( )内の数字も変更しないと
いけないのでしょうか?

 ───────────────────────────────────────  ■題名 : Re:動きました。  ■名前 : 孫悟空  ■日付 : 03/7/7(月) 21:50  -------------------------------------------------------------------------
   ▼miya さん:
> 更新されました。
コードにミスがありご迷惑をおかけしました。

> 1位の更新をします。2位の更新をします。〜5位の更新をします。
> 4終わりまで正常に動きました。のメッセージが出ました。

やっと正常に動いているようです。
 
>最初の質問の祭、[1]〜[5]で質問したので、[1]〜[5]コードは書かれていますが、
>[1]〜[5]だけではなく増えた時は、孫悟空さんの作成したコード内に
>書き足せば良いだけでしょうか?
>
>こんな感じで
>SQLStr = SQLStr & "[1],[2],[3],[4],[5],[6],[7],[8],[9],
>[10]" & Chr(13) & Chr(10)

一般解では、こんな感じでしょう。
SQLStr = SQLStr & "[1],[2],・,・,・,[N]," & Chr(13) & Chr(10)
SQLStr = SQLStr & "[1]+[2]+・・・・+[N] AS 合計," & Chr(13) & Chr(10)

>さらに、最初の質問では、四番目合計、四番目誕生日だけでよかったのですが
>急遽、県順位を指定するのに、県別合計が同じ場合
>4番目合計、4番目合計が同じ場合は、3番目合計を比較
>      3番目合計が同じ場合は、2番目合計を比較
>      2番目合計が同じ場合は、1番目合計を比較
>      1番目合計が同じ場合は、4番目誕生日を比較
>      4番目誕生日がが同じ場合は、3番目誕生日を比較
>      3番目誕生日がが同じ場合は、3番目誕生日を比較
>      2番目誕生日がが同じ場合は、1番目誕生日を比較
>これもコードに書き足せば可能でしょうか?

まずは県順位テーブルから見直しが必要です。

'次に県順位の判定に必要な情報を組み入れた
'県順位テーブルを作成します。
SQLStr = ""
SQLStr = SQLStr & "SELECT 県名," & Chr(13) & Chr(10)
SQLStr = SQLStr & "SUM([1]+・・・・+[N]) AS 県合計点,"
SQLStr = SQLStr & "SUM(IIF(県内順位=1,合計,0)) AS 一番目合計,"
SQLStr = SQLStr & "SUM(IIF(県内順位=2,合計,0)) AS 二番目合計,"
・・・・・・
・・・・・・
SQLStr = SQLStr & "SUM(IIF(県内順位=N,合計,0)) AS N番目合計,"

SQLStr = SQLStr & "format(SUM(IIF(県内順位=1,生年月日,0)),'YYYY/MM/DD')"
SQLStr = SQLStr & " AS 一番目誕生日," & Chr(13) & Chr(10)
SQLStr = SQLStr & "format(SUM(IIF(県内順位=2,生年月日,0)),'YYYY/MM/DD')"
SQLStr = SQLStr & " AS 二番目誕生日," & Chr(13) & Chr(10)
・・・・・・
・・・・・・
SQLStr = SQLStr & "format(SUM(IIF(県内順位=N,生年月日,0)),'YYYY/MM/DD')"
SQLStr = SQLStr & " AS N番目誕生日," & Chr(13) & Chr(10)

SQLStr = SQLStr & "0 AS 県順位" & Chr(13) & Chr(10)
SQLStr = SQLStr & "INTO 県順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "FROM 顧客順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "WHERE 県内順位<=4" & Chr(13) & Chr(10)
SQLStr = SQLStr & "GROUP BY 県名;"

次に順位の決定ロジックの変更も必要です。
SQLStr = ""
SQLStr = SQLStr & "select distinct" & Chr(13) & Chr(10)
SQLStr = SQLStr & "県合計点," & Chr(13) & Chr(10)
SQLStr = SQLStr & "N番目合計," & Chr(13) & Chr(10)
・・・・・・
・・・・・・
SQLStr = SQLStr & "二番目合計," & Chr(13) & Chr(10)
SQLStr = SQLStr & "一番目合計," & Chr(13) & Chr(10)

SQLStr = SQLStr & "四番目誕生日" & Chr(13) & Chr(10)
・・・・・・
・・・・・・
SQLStr = SQLStr & "二番目誕生日" & Chr(13) & Chr(10)
SQLStr = SQLStr & "一番目誕生日" & Chr(13) & Chr(10)

SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
SQLStr = SQLStr & "order by" & Chr(13) & Chr(10)
SQLStr = SQLStr & "県合計点 DESC," & Chr(13) & Chr(10)
SQLStr = SQLStr & "N番目合計 DESC," & Chr(13) & Chr(10)
・・・・・・
・・・・・・
SQLStr = SQLStr & "二番目合計 DESC," & Chr(13) & Chr(10)
SQLStr = SQLStr & "一番目合計 DESC," & Chr(13) & Chr(10)

SQLStr = SQLStr & "四番目誕生日,"
・・・・・・
・・・・・・
SQLStr = SQLStr & "二番目誕生日,"
SQLStr = SQLStr & "一番目誕生日"

Set Ms_Rec = Ms_Db.OpenRecordset(SQLStr)

県順位 = 1
Do While Not Ms_Rec.EOF
  MsgBox 県順位 & "位の更新をします。"
  SQLStr = ""
  SQLStr = SQLStr & "select" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "count(*) as 県数" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "from 県順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "四番目誕生日="
  SQLStr = SQLStr & "'" & Ms_Rec("四番目誕生日").Value & "' "
  ・・・・・・・・
  ・・・・・・・・
  SQLStr = SQLStr & "and 二番目誕生日="
  SQLStr = SQLStr & "'" & Ms_Rec("二番目誕生日").Value & "' "
  SQLStr = SQLStr & "and 一番目誕生日="
  SQLStr = SQLStr & "'" & Ms_Rec("一番目誕生日").Value & "' "

  SQLStr = SQLStr & "and N番目合計="
  SQLStr = SQLStr & Ms_Rec("N番目合計").Value
  ・・・・・・・
  ・・・・・・・  
  SQLStr = SQLStr & "and 二番目合計="
  SQLStr = SQLStr & Ms_Rec("二番目合計").Value
  SQLStr = SQLStr & "and 一番目合計="
  SQLStr = SQLStr & Ms_Rec("一番目合計").Value

  Set Ms_Rec2 = Ms_Db.OpenRecordset(SQLStr)

  県数 = Ms_Rec2("県数").Value

  SQLStr = ""
  SQLStr = SQLStr & "update" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県順位テーブル" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "set 県順位=" & 県順位 & Chr(13) & Chr(10)
  SQLStr = SQLStr & "where" & Chr(13) & Chr(10)
  SQLStr = SQLStr & "県合計点=" & Ms_Rec("県合計点").Value
  SQLStr = SQLStr & " and N番目誕生日="
  SQLStr = SQLStr & "'" & Ms_Rec("N番目誕生日").Value & "' "
  ・・・・・・・・・・・
  ・・・・・・・・・・・
  SQLStr = SQLStr & " and 二番目誕生日="
  SQLStr = SQLStr & "'" & Ms_Rec("二番目誕生日").Value & "' "
  SQLStr = SQLStr & " and 一番目誕生日="
  SQLStr = SQLStr & "'" & Ms_Rec("一番目誕生日").Value & "' "

  SQLStr = SQLStr & "and 四番目合計=" & Ms_Rec("四番目合計").Value
  ・・・・・
  ・・・・・
  SQLStr = SQLStr & "and 二番目合計=" & Ms_Rec("二番目合計").Value
  SQLStr = SQLStr & "and 一番目合計=" & Ms_Rec("一番目合計").Value

と言う感じで、直してみてください。

>ここまで親切に回答を頂いといて、いつまでもご迷惑をおかけして
>本当に申し訳ありません。
>[1]〜[10]までをコード内に追加して、試したのですが出来ませんでした。

原因は色々あると思いますが推測不可です。
上の参考コードと、ヘルプなんかを見ながら勉強してみてください。

>Chr(13) & Chr(10) ← ( )内の数字も変更しないと
>いけないのでしょうか?

不要です。 & CHR(13) & CHR(10)は、確かラインフィードと
カーソルリターンを意味します。関係ありません。
デバックする際見やすくするのに使っています。

ちょっ長くなりすぎましたのでこの辺で一息しましょう。

 ───────────────────────────────────────  ■題名 : ありがとうございました。  ■名前 : miya <taisei-office@play.pos.to>  ■日付 : 03/7/8(火) 11:15  -------------------------------------------------------------------------
   ▼孫悟空 さん
長いこと、ご迷惑をおかけして申し訳ありませんでした。
このような、面倒な質問にご親切に何度も
回答を頂き、本当にありがとうございました。
心から感謝いたしております。
お忙しい中、お付き合い頂き、誠にありがとうございました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 326