
いつも大変お世話になっております。m(_ _)m
(1)以下の設定で自動採番させた管理No.を主キーとし、テーブルを作りました。
データ型:オートナンバー型
書式:"ABC-"000
これで、ABC-から始まる3ケタの連番が自動採番されます。
(2)関連テーブルを作りました。
関連テーブルの「管理No.」は、上記と同じ設定をすると「オートナンバー」でデータが競合するのでは?と思い、テキスト型としました。
(1)を元にフォームを作成しました。
サブフォームを挿入し、(2)のデータを表示させました。管理No.でリンクする作りとなっています。
(1)の情報が1に対して、(2)の情報は複数あります。
管理No.がオートナンバーでない場合、上記のようなフォームを作って、(1)に情報を入力し、(2)に詳細情報として複数のデータを入力すると、(2)の「管理No.」は入力しなくても自動的に同じものがふられていきます。
しかし、今回は(2)に管理No.がふられないだけでなく、ページ内でエラーが発生し、フォーム自体もきちんと表示されません。
原因は、テーブルの作りにあるんでは?と思っています。
この場合、どのように作成すればいいのか教えてください。
やりたいことは、(2)のテーブルに同じ管理No.をいくつも入力しなくても済むように、管理No.でリンクしたサブフォームを作り、必要な情報(管理No.でない情報)を入力すれば、自動的に管理No.がふられるようにしたいのです。
いつもはできます。今回だけできません。
質問の内容が分かりにくい場合は補足します。
大至急の回答をよろしくお願い致します。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
#5の方法はスタンドアロンで使用するなら問題ないですが、複数同時にアクセスするとうまく動きません。
複数同時にアクセスされることを考慮する場合、一番確実な自動採番はオートナンバーです。
オートナンバーを併用する例
管理No.をテキスト型に
「ID」という名前のフィールドを増やし、オートナンバーに
フォームの更新前処理を下記のようにする
Private Sub Form_BeforeUpdate(Cancel As Integer)
Me![管理No.] = "ABC-" & Right(Str(Nz(Me![ID], 0) + 1000), 3)
End Sub
スタンドアロン環境ならどちらの方法でもいいと思います。
No.5
- 回答日時:
>挑戦してみたいと思いますが・・・
>できるでしょうか?
簡単なプログラムも複雑なプログラムも
入力して走らせるという手順は同じです
入門書などを読んで簡単なプログラムを作成して走らせられるようになってください
あとはWEBで検索するだけでも有用なプログラムはいくらでも見つかります
それらをヘルプを駆使して理解していけばレパートリーが増えて
そのうち自分でも有用なものを作成できるようになるでしょう
レコードを削除時番号を再計算
Private Sub Form_AfterDelConfirm(Status As Integer)
Me.管理No.DefaultValue = "'" & "ABC-" & Format(Nz(Right(DMax("管理No", "テーブル名"), 3), 0) + 1, "000") & "'"
End Sub
レコード挿入時番号を再計算
Private Sub Form_AfterInsert()
Me.管理No.DefaultValue = "'" & "ABC-" & Format(Nz(Right(DMax("管理No", "テーブル名"), 3), 0) + 1, "000") & "'"
End Sub
フォームを開いたとき番号をセット
Private Sub Form_Open(Cancel As Integer)
Me.管理No.DefaultValue = "'" & "ABC-" & Format(Nz(Right(DMax("管理No", "テーブル名"), 3), 0) + 1, "000") & "'"
End Sub
No.4
- 回答日時:
>自動採番できたとしても、その後、関連テーブルとの関係などで問題もありそうですし・・・
番号を発生させるのは番号を主キーとするテーブルにおいてのみです
関連テーブルはそれを参照するだけですから問題が発生するわけがありません
自動発生でない場合と同じことです
>ただ記述するだけでOKな簡単な内容であればトライできますが・・・
コードの見本をアップすることは出来ますが
どこに書くのかとか、どのように走らせるのかというような
VBAの一般的知識は本でも読んで勉強していただくことになります
何度もお返事ありがとうございます。
コード見本をアップしていただけますか?
挑戦してみたいと思いますが・・・
できるでしょうか?
No.3
- 回答日時:
>きちんとデータとして「ABC-001」などと自動採番させるには、
>どのような手段が有効なのでしょうか??
そのような文字列を新規レコード入力時に代入するか、
フォームを開く時とレコード追加後にフィールドの既定値にセットしてやります
VBAが必要です
トライしますか?
お返事が遅くなってすみません。回答ありがとうございました。
VBAですか・・・(^^;)
ただ記述するだけでOKな簡単な内容であればトライできますが・・・
どうなんでしょうか?(すみません。)
しかも、自動採番できたとしても、その後、関連テーブルとの関係などで問題もありそうですし・・・
不明な点があるたびに質問させていただくかもしれませんが・・・
よろしいのでしょうか?
No.2
- 回答日時:
>管理No.がオートナンバーでない場合、上記のようなフォームを作って、
>(1)に情報を入力し、(2)に詳細情報として複数のデータを入力すると、
>(2)の「管理No.」は入力しなくても自動的に同じものがふられていきます
オートナンバーでも同じです
そうならないのは
(2)のオートナンバーが(1)と同じものでないからです
リレーションシップを結ぶフィールドは同じ型でないと駄目です
つまり
>関連テーブルの「管理No.」は、上記と同じ設定をすると
>「オートナンバー」でデータが競合するのでは?と思い、テキスト型としました。
これが原因です
競合を心配する必要は全くありません
とうか(1)と同じものを入力するのでないと関連づけが出来ませんよ
別件ですが
オートナンバーを書式で
>"ABC-"000
のように表示させるのは、いい方法といえませんね
格納されているデータは数値だけですから見る人に誤解を与えるだけですよ
返答ありがとうございました。お返事が遅くなりすみません。
上記のアドバスとおりやってみたいと思います。
ところで、
別件ですが
オートナンバーを書式で
>"ABC-"000
のように表示させるのは、いい方法といえませんね
格納されているデータは数値だけですから見る人に誤解を与えるだけですよ
↑これについてですが、これは数字データのみ格納されているということですね?きちんとデータとして「ABC-001」などと自動採番させるには、どのような手段が有効なのでしょうか??
No.1
- 回答日時:
>データ型:オートナンバー型
>書式:"ABC-"000
書式の設定で文字列のように見えますが、中身は「数値型」の「長整数型」のデータです。
>関連テーブルの「管理No.」は、上記と同じ設定をすると「オートナンバー」でデータが競合するのでは?と思い、テキスト型としました。
「テキスト型」ではなく「数値型」の「長整数型」にしてみて下さい。
この回答への補足
補足ですみません。できました。ありがとうございました。
No.2の方のアドバイスで、オートナンバーにしようかと思いましたが、このテーブルには、別にオートナンバーが設定されていたため設定ができず、数値型としたら問題は解決しました。ありがとうございました。
回答ありがとうございました。返事が遅くなってすみません。
やはり、同じデータ型にしないとだめなんですね。
やってみます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- その他(データベース) accessでのフォームの連携について 2 2022/06/14 00:45
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
前のレコードの値を自動で入れたい
-
access別のテーブルを参照して...
-
インデックスまたは主キーにはn...
-
Accessでデータを更新したらそ...
-
Accessフォーム上の値を条件と...
-
ACCESS フォームで入力データ...
-
入力した値をコンボボックスに...
-
アクセスのフォームの必須項目...
-
「バリアント型でない変数に Nu...
-
Accessフォームが入力できません。
-
Accessで、最後(更新)にエラ...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
ExcelのComboboxでマウスのスク...
-
ACCESS フォームのサイズ調整
-
access サブフォームにリストを...
-
X-Ripperというフリーウェアに...
-
ACCSESS2013VBA フォームのレコ...
-
エクセルで色の付いたセルを抽...
-
コンボボックスで選択実行後、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
前のレコードの値を自動で入れたい
-
Accessでデータを更新したらそ...
-
インデックスまたは主キーにはn...
-
access別のテーブルを参照して...
-
入力した値をコンボボックスに...
-
ACCESS フォームで入力データ...
-
Accessでフォームに自動入力し...
-
Accessフォームが入力できません。
-
テキスト型のフィールドでハイ...
-
アクセスでコードを入れると名...
-
AccessVBAの値によっ...
-
アクセスで自動でレコードを増やす
-
ACCESSでフォームのチェックボ...
-
Accessで、最後(更新)にエラ...
-
Accessフォーム上の値を条件と...
-
ACCESS2000の帳票フォームでテ...
-
Accessのフォームでデータ入力...
-
Accessのフォーム入力をしても...
-
「バリアント型でない変数に Nu...
-
エクセル フィルタの抽出結果...
おすすめ情報