Microsoft Access 掲示板

キーブレイク処理(クエリにて) / 15

23 コメント
views
4 フォロー
15
はづき 2024/06/19 (水) 14:49:39 07832@267c5 >> 14

[在籍期間No]をひとつずらして結合させるところができずにいます。

通報 ...
  • 18

    サンプルを載せておきます

    最初に SetSequenceNumber関数 をデータベースにインポートして
    利用可能な状態にしておきましょう

    グループ毎連番を自動入力する関数
    クエリで連番を表示する場合、DCount関数やサブクエリを利用する方法はあちこちで紹介されています。 しかし、この方法は自分より前のレコード件数をカウントするというロジックなのでレコード件数が多くなると幾何級数的に重くなります。また、グループ毎に連番を振るという仕様になると、条件式も複雑になってきます。 クエリは使わずにテーブルに連番フィールドを持たせて、そこに VBA で連番を書きこむようにすると高速...
    fc2

     
    ■DDL

    CREATE TABLE アクションテーブル (
          氏名     VARCHAR(50) NOT NULL
        , 発令日   DATETIME    NOT NULL
        , 組織名   VARCHAR(30) NOT NULL
        , GSeq日付 INT
        , GSeq組織 INT
        , CONSTRAINT pk_action PRIMARY KEY ( 氏名, 発令日 )
    );
    

     
    ■データ例 (連番付与前)

    氏名発令日組織名GSeq日付GSeq組織
    山田 花子2022/01/01営業
    山田 花子2023/04/01経営企画
    山田 花子2023/09/01営業
    山田 花子2024/01/01営業
    山田 花子2024/04/01総務
    青山 太郎2014/04/01人事
    青山 太郎2014/05/26人事
    青山 太郎2014/06/01人事
    青山 太郎2015/04/01経営企画
    青山 太郎2017/10/01法務
    青山 太郎2018/04/01法務
    青山 太郎2020/01/01法務
    青山 太郎2021/04/01人事
    青山 太郎2022/04/01総務

     
    ■グループ連番の付与

    Sub set_number()
        Call SetSequenceNumber("GSeq日付", "アクションテーブル", "氏名", "発令日")
        Call SetSequenceNumber("GSeq組織", "アクションテーブル", "氏名,組織名", "発令日")
    End Sub
    

     
    ■データ例 (連番付与後)

    氏名発令日組織名GSeq日付GSeq組織
    山田 花子2022/01/01営業11
    山田 花子2023/04/01経営企画21
    山田 花子2023/09/01営業32
    山田 花子2024/01/01営業43
    山田 花子2024/04/01総務51
    青山 太郎2014/04/01人事11
    青山 太郎2014/05/26人事22
    青山 太郎2014/06/01人事33
    青山 太郎2015/04/01経営企画41
    青山 太郎2017/10/01法務51
    青山 太郎2018/04/01法務62
    青山 太郎2020/01/01法務73
    青山 太郎2021/04/01人事84
    青山 太郎2022/04/01総務91