アクセスで桁数を増やしたい
従業員のデータベースをアクセスで作成しているのですが、
諸般の事情と従業員の出入りが激しいので桁数を増やしたいのですが、
方法がわかりませんのでお願いします
今現在は、
従業員の個人コードを10001の5桁で管理しておりますが、
それを、7桁にしたいのです。
最初の1は、部署を表し、0001は、個人コードです。
部署 1を11と2桁にし
個人コード0001の4桁を00001の5桁にしたいのです
たとえば
旧個人コード 新個人コード
最初の1を11に 10001 1100001
1を11に 12222 1102222
2を12に 23333 1203333
3を13に 32222 1302222
4を21に 43333 2103333
5を22に 51234 2201234
6を31に 68888 3108888
7を41に 70001 4100001したいのです
このフィールドのデータ型は数値型で主インデックスです
OSはXP
ソフトはオフィス2003です。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
色々方法があります。
VBAでレコードを加工
SQLで加工
関数で
など。
ーーー
VBA,SQLを使わないのがアクセスの主義とすると、DLOOKUP関数でやってみました。
まず変換用のテーブルを作ります。
番号変換T テーブル
内容
ID 先頭桁 加算数
ID先頭桁加算数
111100000
221200000
331300000
442100000
552200000
663100000
774100000
ーーー
クエリで
フィールド1は、もとの番号で
左1桁: Mid([フィールド1],1,1)
右4桁: Right([フィールド1],4)
変換後: [右4桁]+DLookUp("[番号変換T]![加算数]","[番号変換T]","[番号変換T]![先頭桁]=" & [左1桁])
の3つのフィールドを作る(""のつける場所に苦労する。)
ーーー
実行すると
結果
IDフィールド1左1桁右4桁変換後
112222122221102222
223333233331203333
332222322221302222
443333433332103333
551234512342201234
668888688883108888
770001700014100001
入院しておりまして、お礼が大変遅れましてどうもすみません。
当方の技量は、はじめてシリーズの程度なのでよくわかりませんが、書かれていることが理解
できるように本を探してみます。
ありがとうございました。
No.2
- 回答日時:
いろいろ方法はあります。
Select Caseを使う方法もありますが、一応以下で。
DAOを使っています。参照設定でDAOの設定を
確認してください。
なお、主キーとなっているようなので
一旦、主キーを解除してください。
一応確認のため、テーブルは別名で保存して
おいてください。
Sub test()
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("tデータ", dbOpenDynaset)
rs.MoveFirst
Do Until rs.EOF
If Left(rs!個人コード, 1) = 1 Then
rs.Edit
rs!個人コード = Replace(Left(rs!個人コード, 1), "1", "11" & Right(rs!個人コード,
4))
rs.Update
End If
If Left(rs!個人コード, 1) = 2 Then
rs.Edit
rs!個人コード = Replace(Left(rs!個人コード, 1), "2", "22" & Right(rs!個人コード,
4))
rs.Update
End If
If Left(rs!個人コード, 1) = 3 Then
rs.Edit
rs!個人コード = Replace(Left(rs!個人コード, 1), "3", "13" & Right(rs!個人コード,
4))
rs.Update
End If
If Left(rs!個人コード, 1) = 4 Then
rs.Edit
rs!個人コード = Replace(Left(rs!個人コード, 1), "4", "21" & Right(rs!個人コード,
4))
rs.Update
End If
If Left(rs!個人コード, 1) = 5 Then
rs.Edit
rs!個人コード = Replace(Left(rs!個人コード, 1), "5", "22" & Right(rs!個人コード,
4))
rs.Update
End If
If Left(rs!個人コード, 1) = 6 Then
rs.Edit
rs!個人コード = Replace(Left(rs!個人コード, 1), "6", "31" & Right(rs!個人コード,
4))
rs.Update
End If
If Left(rs!個人コード, 1) = 7 Then
rs.Edit
rs!個人コード = Replace(Left(rs!個人コード, 1), "7", "41" & Right(rs!個人コード,
4))
rs.Update
End If
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
End Sub
No.1
- 回答日時:
式の確認(実行)はしていませんが、
更新クエリで簡単に直ります。
ただし、主インデックスデータということで、
新しいフィールドを作って、そこへ作成してから、
コピーしたほうがいいかと思いますが・・・
簡単に更新してしまいますので、ちょっと注意を・・・
下記がSQL式です。
テーブル1はあたりのテーブル名です。
UPDATE テーブル1
SET テーブル1.個人コード
= Switch(
[個人コード]>70000,([個人コード]-70000)+4100000,
[個人コード]>60000,([個人コード]-60000)+3100000,
[個人コード]>50000,([個人コード]-50000)+2200000,
[個人コード]>40000,([個人コード]-40000)+2100000,
[個人コード]>30000,([個人コード]-30000)+1300000,
[個人コード]>20000,([個人コード]-20000)+1200000,
[個人コード]>10000,([個人コード]-10000)+1100000);
このあとは、おわかりですよね??
入院しておりまして、お礼が大変遅れましてどうもすみません。
当方の技量は、はじめてシリーズの程度なのでよくわかりませんが、書かれていることが理解
できるように本を探してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのifで 4 2023/05/16 14:21
- その他(Microsoft Office) エクセルで1行の長いデータを指定の桁数で分割する方法が知りたいです。 4 2022/05/20 21:55
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Ruby 英数字を含む文字列(0-9,A-Z)の桁数圧縮をするには 5 2022/06/28 18:15
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
- Excel(エクセル) Excelの操作方法を教えてください!頭文字2~8文字で特定の値に返す方法 8 2022/07/14 11:26
- Visual Basic(VBA) 3個のfileのセルデータを1個のfileのセルに貼り付けるVBAコードですが。 1 2023/02/20 09:21
- スーパー・コンビニ マスクについて。最近マスクつけないで歩いてる人も増えましたが、スーパーなど店員、従業員がマスクなしで 4 2023/05/28 16:07
- 飲食業・宿泊業・レジャー メモできないオーダーの覚え方 まず流れとして注文からレジまでの流れを大まかに説明します。わかりづらか 1 2023/02/13 00:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
JavaScriptの定数名が取り消し...
-
フィルターかけた後、重複を除...
-
pythonで同じコード内で複数の...
-
マクロ 連続印刷
-
変数名「cur」について
-
c言語 入力した二つの数字の足...
-
VBA リストボックス(複数条件...
-
UWSCでMOUSEORG関数が上手く処...
-
欠番の抽出について
-
VBAで一つのファンクションの中...
-
ユーザーフォームに2つのコン...
-
おすすめのPHPフレームワークは?
-
(再質問) .NETでエクセル解...
-
演算子(+=)について
-
Exel VBA 別ブックから該当デ...
-
sinカーブの表示のさせ方
-
レイヤー(?)、z-index(?)...
-
VBA 現在のセル番地を記憶、復...
-
特定行の背景色を変えたいのですが
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1、Rstudioで回帰直線を求める...
-
1日に1人がこなせるプログラム...
-
access2003 クエリSQL文に...
-
エクセルVBAコードで教えて下さ...
-
Exel VBA 別ブックから該当デ...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
access2021 VBA メソッドまたは...
-
PreviewKeyDownイベントが2回...
-
JANコードとPOSコードは同じ?
-
過剰なオブジェクト指向脳から...
-
特定行の背景色を変えたいのですが
-
ACCESSユニオンクエリでORDER B...
-
変数名「cur」について
-
Nullの使い方が不正です。
-
◾️Excel VBA 統合について Cons...
-
欠番の抽出について
-
VBA リストボックス(複数条件...
-
ACCESSで、履歴事項を管理する...
おすすめ情報