Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1914 / 2272 ツリー ←次へ | 前へ→

【4647】各県別に担当者を均等に割り振る方法 かめ 05/3/18(金) 14:09 発言[未読]
【4649】Re:各県別に担当者を均等に割り振る方法 hatena 05/3/18(金) 15:23 回答[未読]
【4650】Re:各県別に担当者を均等に割り振る方法 かめ 05/3/18(金) 17:00 お礼[未読]
【4652】Re:各県別に担当者を均等に割り振る方法 かめ 05/3/18(金) 17:25 質問[未読]
【4657】Re:各県別に担当者を均等に割り振る方法 YU-TANG 05/3/18(金) 20:58 発言[未読]
【4658】Re:各県別に担当者を均等に割り振る方法 かめ 05/3/18(金) 22:02 お礼[未読]

【4647】各県別に担当者を均等に割り振る方法
発言  かめ  - 05/3/18(金) 14:09 -

引用なし
パスワード
   お世話になります・
−−−−−−−−−−−−−−−−−−−−−
県  顧客名   電話番号     担当
−−−−−−−−−−−−−−−−−−−−−
愛知 A     000-000-0000
京都 B     000-000-0000
愛知 C     000-000-0000
奈良 D     000-000-0000

上記の様な顧客テーブルがあるとします。
レコード数は何百とします。
4人の担当者がいて担当を割振りたいのですが、
各県に均等に割振りたいのです。
愛知が20レコードだとすると5レコードずつ、
京都が10レコードだとすると3,3,2,2レコードずつ
奈良が9レコードだとすると3,2,2,2レコードずつ
null値の担当者の項に自動で4人の担当者名を更新(入力)して
いくよい方法はないでしゃうか。

県別でソートして4人の名前を順次入力していけばよいと思うのですが、
これをVBAやクエリを利用して自動で出来ないでしょうか。
最終的に担当者別の受持件数は同じでなくてもいいんですが(数件の
違いはOK)。

どなたかよろしくお願いします。

【4649】Re:各県別に担当者を均等に割り振る方法
回答  hatena  - 05/3/18(金) 15:23 -

引用なし
パスワード
   > 県別でソートして4人の名前を順次入力していけばよいと思うのですが、
> これをVBAやクエリを利用して自動で出来ないでしょうか。
> 最終的に担当者別の受持件数は同じでなくてもいいんですが(数件の
> 違いはOK)。

クエリでもできますが、この場合は、VBAの方が簡単かな。

DAO を使う場合の例

Dim rs As DAO.RecordSet
Dim tantou(4) As String
Dim i As Integer

tantou(0) = "ああ"
tantou(1) = "いい"
tantou(2) = "うう"
tantou(3) = "ええ"

Set rs = CurrentDB.OpenRecordSet("SELECT 担当 FROM テーブル名 ORDER BY 顧客名")
i = 0
Do Until rs.EOF
 rs.Edit
 rs!担当 = tantou(i)
 rs.MoveNext
 If i < 3 Then
  i = i + 1
 Else
  i = 0
 End If
Loop

担当が4人という事なので配列に入れましたが、
担当がテーブルにはいっているなら、それもレコードセットとして
開いて使用すればいいですね。

【4650】Re:各県別に担当者を均等に割り振る方法
お礼  かめ  - 05/3/18(金) 17:00 -

引用なし
パスワード
   >クエリでもできますが、この場合は、VBAの方が簡単かな。
>
>DAO を使う場合の例
>
>Dim rs As DAO.RecordSet
>Dim tantou(4) As String
>Dim i As Integer
>
>tantou(0) = "ああ"
>tantou(1) = "いい"
>tantou(2) = "うう"
>tantou(3) = "ええ"
>
>Set rs = CurrentDB.OpenRecordSet("SELECT 担当 FROM テーブル名 ORDER BY 顧客名")
>i = 0
>Do Until rs.EOF
> rs.Edit
> rs!担当 = tantou(i)
> rs.MoveNext
> If i < 3 Then
>  i = i + 1
> Else
>  i = 0
> End If
>Loop
>
>担当が4人という事なので配列に入れましたが、
>担当がテーブルにはいっているなら、それもレコードセットとして
>開いて使用すればいいですね。

hatena さん 早速のレスありがとうございます。
配列を使うのですね。
気がつきませんでした。
なにしろ初心者なもので。
早速やってみます。

ありがとうございました。

【4652】Re:各県別に担当者を均等に割り振る方法
質問  かめ  - 05/3/18(金) 17:25 -

引用なし
パスワード
   ▼hatena さん:

>クエリでもできますが、この場合は、VBAの方が簡単かな。
>
>DAO を使う場合の例
>
>Dim rs As DAO.RecordSet
>Dim tantou(4) As String
>Dim i As Integer
>
>tantou(0) = "ああ"
>tantou(1) = "いい"
>tantou(2) = "うう"
>tantou(3) = "ええ"
>
>Set rs = CurrentDB.OpenRecordSet("SELECT 担当 FROM テーブル名 ORDER BY 顧客名")
>i = 0
>Do Until rs.EOF
> rs.Edit
> rs!担当 = tantou(i)
> rs.MoveNext
> If i < 3 Then
>  i = i + 1
> Else
>  i = 0
> End If
>Loop
>
>担当が4人という事なので配列に入れましたが、
>担当がテーブルにはいっているなら、それもレコードセットとして
>開いて使用すればいいですね。


すみません。
上記のとうりに書いて実行したのですが、書込みをしません。
なぜでしょうか?
よろしくお願いします。

【4657】Re:各県別に担当者を均等に割り振る方法
発言  YU-TANG WEB  - 05/3/18(金) 20:58 -

引用なし
パスワード
   こんばんは、YU-TANG です。

横レス失礼します。

> rs.Edit
> rs!担当 = tantou(i)
rs.Update
> rs.MoveNext

# 私もよく落とします。(^ ^;)

【4658】Re:各県別に担当者を均等に割り振る方法
お礼  かめ  - 05/3/18(金) 22:02 -

引用なし
パスワード
   >こんばんは、YU-TANG です。
>
>横レス失礼します。
>
>> rs.Edit
>> rs!担当 = tantou(i)
>rs.Update
>> rs.MoveNext
>
># 私もよく落とします。(^ ^;)

YU-TANG さんありがとうございました。
出来ました。

感謝です。

1914 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078251
(SS)C-BOARD v3.8 is Free