アクセスで桁数を増やしたい
従業員のデータベースをアクセスで作成しているのですが、
諸般の事情と従業員の出入りが激しいので桁数を増やしたいのですが、
方法がわかりませんのでお願いします
今現在は、
従業員の個人コードを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を探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSCでMOUSEORG関数が上手く処...
-
なぜシフトJISにロシア語がある...
-
PreviewKeyDownイベントが2回...
-
Nullの使い方が不正です。
-
フィルターかけた後、重複を除...
-
QRコードの印刷
-
ワークシートチェンジで曜日を...
-
1日に1人がこなせるプログラム...
-
1、Rstudioで回帰直線を求める...
-
MIPSコードへの変換
-
ゲームのアルゴリズム
-
変数名「cur」について
-
JavaScriptの定数名が取り消し...
-
Objective-Cの繰返しアニメーシ...
-
access2021 VBA メソッドまたは...
-
VBA:テキストファイルの抽出に...
-
ACCESSユニオンクエリでORDER B...
-
木偏に「久」
-
sinカーブの表示のさせ方
-
アクセスで桁数を増やしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JANコードとPOSコードは同じ?
-
1日に1人がこなせるプログラム...
-
sinカーブの表示のさせ方
-
access2003 クエリSQL文に...
-
access2021 VBA メソッドまたは...
-
変数名「cur」について
-
JavaScriptの定数名が取り消し...
-
1、Rstudioで回帰直線を求める...
-
Exel VBA 別ブックから該当デ...
-
Excel VBA素人です。VBAで図形...
-
ACCESSユニオンクエリでORDER B...
-
VBAでファイルオープン後にコー...
-
Nullの使い方が不正です。
-
COBOLの文法
-
PreviewKeyDownイベントが2回...
-
SQL
-
VB6のComboBox関連の書き方をVB...
-
【VB6】実行ファイルとした後、...
-
エクセルに見えない文字(JISX0...
おすすめ情報