Access2000を使用しています。
以下のようなテーブルを作成し、町内毎に
実施したアンケートを集計しようと思います。
***************************************
「アンケートテーブル」
---------------------------------------
町内 テキスト 3バイト
入力連番 数値 4バイト
設問1 テキスト 1バイト
(主キー= 町内+入力連番(7バイト))
****************************************
これに対し入力用のフォームを作成しました。
非連結のテキストボックスに町内名を入れると自動的に
町内ごとの入力連番の最終番号を取得し、「町内」と「入力連番」
のテキストボックスに町内名と入力連番(の最終番号)を表示させ
「設問1」のテキストボックスにフォーカスを移動させたいのですが
主キーが2つ以上のフィールドを組み合わせてできている場合の最終
番号の取得のやり方とテキストボックスに表示させるやり方がよく
分かりません。
Dmaxを駆使すればよいのだと思いますが、どなたか解説していただけ
ばありがたいのですが・・・・。
どうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは。
maruru01です。新規レコードの入力連番に、既存データの最大値+1を自動でセットしたいということでしょうか。
そうと仮定して書きます。
非連結のテキストボックス[町内名入力]と、コマンドボタン[入力連番セット]を配置して、このコマンドボタンのクリックイベントに記述することにします。
Private Sub 入力連番セット_Click()
Me!町内.Value = Me!町内名入力.Value
If DCount("入力連番", "アンケートテーブル", "町内 = '" & Me!町内名入力.Value & "'") = 0 Then
'既存にない町内名の場合は、1を表示
Me!入力連番.Value = CStr(1)
Else
'存在する場合は、最大値+1を表示
Me!入力連番.Value = CStr(DMax("入力連番", "アンケートテーブル", "町内 = '" & Me!町内名入力.Value & "'") + 1)
End If
Me!設問1.SetFocus
End Sub
ちなみに、[町内名入力]が未入力の状態でコマンドボタンをクリックすると、エラーになるので、対処して下さい。
No.3
- 回答日時:
サンプルコードです。
こんなもので如何でしょうか?解説するまでもありませんので省略させて頂きます。
AccessのヘルプでDmax関数の解説をご覧ください。
町内名を入力するテキストボックス等の「更新後処理」イベントに
次のように記述します。
Private Sub 町内名入力_AfterUpdate()
Dim MaxVal As Variant
DoCmd.GoToRecord acForm, "アンケートテーブル", acNewRec
Me.町内.Value = Me.町内名入力.Value
MaxVal = DMax("[入力連番]", "アンケートテーブル", _
"[町内]='" & Me.町内名入力.Value & "'")
If IsNull(MaxVal) Then
Me.入力連番.Value = 1
Else
Me.入力連番.Value = MaxVal + 1
End If
Me.設問.SetFocus
End Sub
フォームの「レコード移動時」のイベントに次のように記述します。
Private Sub Form_Current()
Me.町内名入力.SetFocus
Me.町内名入力.Value = Null
End Sub
No.1
- 回答日時:
DAOを使用してテーブルの最終のレコードのフィールドの値をテキストボックスに代入すればよいのではと思います。
具体的には、下記の通り。1.まずフォームを新規作成します。元になるテーブルクエリは無しで結構です。
2.ツールボックスからボタンとテキストボックスを1つずつ作ります。ボタンは最終番号取得、テキストボックスは最終番号表示としておきます。
3.ボタン最終番号取得のプロパティのイベントのクリック時で次のコードを記述します。
**********************************************
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("アンケートテーブル", dbOpenTable)
rs.MoveLast
Me!最終番号表示 = rs!町内 & rs!入力連番
rs.Close
db.Close
*************************************************
Dmaxを使用したやり方ではありませんが一度試してみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- JavaScript HTMLでJavaScriptを使用してプログラムを作ります。 入力されたパスワードを取得して、パス 2 2022/10/18 01:05
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Access(アクセス) Access DTPickerの初期表示月を変えたい 1 2022/08/02 08:55
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
passwordが入れられません・・・・
-
ACCESSのテキストボックスの連...
-
アクセス コンボボックスのリ...
-
フォームで入力しても反映されない
-
Excelで入力したデータを自動的...
-
入力規則違反-任意のエラーメ...
-
Access2007、フォームのテキス...
-
ファイルメーカーの入力値の制限
-
EXCELのユーザーフォームで入力...
-
アクセスのテキストボックスの...
-
ファイルメーカー 一ヵ月後の...
-
Access レポート印刷するときに...
-
レコードを保存するコード ア...
-
YahooのIDがロックされてしまい...
-
Word縦書きで左から右への行
-
エクセルVBA オプションボタ...
-
クエリで出来た表にチェックボ...
-
ACCESS フォームをそのまま印刷...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
Excelで入力したデータを自動的...
-
Access(office)のマクロの「値...
-
アクセスのテキストボックスの...
-
ユーザーフォームで数字にカン...
-
このオブジェクトに値を代入す...
-
入力規則違反-任意のエラーメ...
-
Accessで西暦の年だけ表示したい
-
Accessで小数の入力について
-
アクセス コンボボックスのリ...
-
ACCESS 時間の入力方法
-
Access2007 textboxに入力でき...
-
Access2007、フォームのテキス...
-
ファイルメーカー 一ヵ月後の...
-
日付のテキストボックスに(例...
-
sqlldrの使用方法について
-
Accessで主キーの最終番号を取...
おすすめ情報