Access VBA質問箱 IV

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

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


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

【3907】連番 ハッピー 04/11/26(金) 21:25 質問[未読]
【3911】Re:連番 Chou 04/11/27(土) 16:16 回答[未読]
【3919】Re:連番 ハッピー 04/11/28(日) 11:34 発言[未読]
【3921】Re:連番 Chou 04/11/28(日) 16:18 回答[未読]

【3907】連番
質問  ハッピー  - 04/11/26(金) 21:25 -

引用なし
パスワード
   氏名  日付    番号
タケシ 2004/11/25
ツヨシ 2004/11/04
タケシ 2004/08/15
タケシ 2004/12/24
ツヨシ 2004/06/30

次のようなテーブルで、氏名ごとに日付順の連番を振りたいのですが、どうすればいいでしょうか?

氏名  日付    番号
タケシ 2004/11/25 2
ツヨシ 2004/11/04 2
タケシ 2004/08/15 1
タケシ 2004/12/24 3
ツヨシ 2004/06/30 1

【3911】Re:連番
回答  Chou E-MAIL  - 04/11/27(土) 16:16 -

引用なし
パスワード
   レコード数はどれ位有るのですか?。
氏名、日付、番号のフィールドは同一テーブルに
有るのでしょうか?。
ADO若しくはDAOを利用すれば可能かと思いますが、
問題無いですか?。

【3919】Re:連番
発言  ハッピー  - 04/11/28(日) 11:34 -

引用なし
パスワード
   Chouさん、ご回答ありがとうございました。
よろしくお願いします。

>レコード数はどれ位有るのですか?。
約1000件です。

>氏名、日付、番号のフィールドは同一テーブルに
>有るのでしょうか?。
あります。

>ADO若しくはDAOを利用すれば可能かと思いますが、
>問題無いですか?。
ADOとかDAOとかの意味が分からないためお答えできません。
すみません!!

【3921】Re:連番
回答  Chou  - 04/11/28(日) 16:18 -

引用なし
パスワード
   では、ADOから。
フォームのコードモジュール画面のツールバーの
ツール→参照設定をクリックして出てきたWindowsの
中からMicrosoft ActiveX Data Object 2.x(最新版)
Libraryにチェックが入っているか確認下さい。
チェックが入っていなければチェックを入れて
OKを押してください。
これでADOが利用可能となります。

次に、動作確認の為に適当なフォーム(新規でも可)に
コマンドボタンを追加してこのコマンドボタンのプロパティー
からクリック時のイベントでコードモジュール画面を
開いて下記のコードをCopy若しくは入力下さい。

  Dim cn As New ADODB.Connection
    Set cn = CurrentProject.Connection
  
  Dim rst As New ADODB.Recordset
  Dim Num As New ADODB.Recordset

    (テーブルの名前は仮に「連番」と致しましたので
    正規のテーブル名に変更願います。
    又、フィールド名の実際の名前に変更下さい)

    rst.Open "Select 氏名 From 連番 Group By 氏名", cn
  
  Dim str_Name As String
  Dim strSQL As String
  Dim intX As Integer
  
    Do Until rst.EOF
      str_Name = rst!氏名
        strSQL = "Select * From 連番 Where 氏名 = '" & str_Name & "' Order By" _ (strSQLからここまで一行です)
            & " 日付 ASC"
        Num.Open strSQL, cn, adOpenStatic, adLockOptimistic
        
        intX = 1
        
          Do Until Num.EOF
            Num!番号 = intX
            Num.Update
              intX = intX + 1
            Num.MoveNext
          Loop
          
        Num.Close
        Set Num = Nothing
        strSQL = ""
        
      rst.MoveNext
      
    Loop
    
    rst.Close
    Set rst = Nothing

フォームのこのコマンドボタンをクリックすれば
上記のコードが走ります。
結果は下記の通りです。
氏名    日付    番号
ツヨシ    2004/6/30    1
タケシ    2004/8/15    1
ツヨシ    2004/11/4    2
タケシ    2004/11/25    2
タケシ    2004/12/24    3

以上ですが、分からない処があれば質問下さい。

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