No.1
- 回答日時:
質問内容は、クエリで抽出したデータをフォームで表示する際に、連番をつけたい。
という捕らえ方でいいのでしょうか?(違っていたらごめんなさい)
フォームのつくり方によるのですが、表形式のフォームだったらできますよ。
たとえば、詳細セクションに連番がふりたい場合。
1・非連結コントロール(テキストボックス)を詳細セクションあたりにつくります。つくると「ラベル○○」と言う文字の入った「ラベル」部分と、白い箱で非連結と言う文字の入った「テキストボックス」部分ができます。
2・ラベル部分をページヘッダセクションに移動して、「番号」とか名前を変えます。
3・テキストボックス(詳細セクション内にある)をダブルクリックして、プロパティを出します。
4・データタブをクリックし、[コントロールソース]に半角文字で、=1と入力し、[集計実行]を全体にします。
5・非連結のテキストボックス(今は、=1の文字がある)の書式をきれいに整えます。
6・ビューを切り替えると、連番で表示されると思います。
的外れでないといいのですが。
No.2
- 回答日時:
レポートの場合は、No.1の方の方法で簡単にできますが、
残念ながらフォームで作成したテキストボックスでは、[集計実行]できませんね。
フォームで行おうとすると、自分であれば下記のようにします。(表形式のフォームを既に作成済みの前提です。)
(1)クエリの元になっているテーブルにフィールドを追加(例えば”フォーム連番”(データの型は数値型)
(2)クエリに”フォーム連番”の表示を追加
(3)フォームにテキストボックスを追加して、そのテキストボックスの名前を”フォーム連番”、レコードソースを”フォーム連番”とする。
(4)VBAで処理を追加。例えば下記は、連番セットというコマンドボタンを作成し、これをクリックすることで、連番を入力するものです。
Private Sub 連番セット_Click()
On Error GoTo Err_連番セット_Click
Dim レコード数 As Integer
Dim i As Integer
レコード数 = DCount("フォーム連番", "クエリの名前")
DoCmd.GoToRecord , , acFirst
For i = 1 To レコード数 + 1
Me.フォーム連番 = i
DoCmd.GoToRecord , , acNext
Next i
Exit_連番セット_Click:
Exit Sub
Err_連番セット_Click:
MsgBox Err.Description
Resume Exit_連番セット_Click
End Sub
ご参考になれば幸いです。m(__)m
この回答への補足
回答ありがとうございます。
試してみたところ、
「このレコードセットは更新できません」
とでるのですが、どうすれば回避できるでしょうか?
おしえていただけるとありがたいです。
No.3
- 回答日時:
(1)まずVBAのコードの一部が間違ってました。
(^^ゞFor i = 1 To レコード数 + 1
は、
For i = 1 To レコード数
です。
(修正前ですと、新規レコードに移動してしまい、エラーとなります。)
(2)このフォームのレコード自体が更新できないようになっている場合(元になっているクエリのレコード自体が更新できないようになっている場合)には、エラーとなります。
No.2の回答で、(2)あるいは(3)まで作成していたとして、”フォーム連番”に数値を入力して、レコードが保存できるか確認してください。
さしつかえなければ、作成したクエリのSQL文がどうなっているかわかれば、回答しやすいんですけど。・・・
朝早くからの回答ありがとうございます。
No3の回答のようにやってみたのですが、やっぱりできません。
できればSQLを公開して解決したいのですが、開発中のソフトであるため
公開はできないです。申し訳ございません。
No.4ベストアンサー
- 回答日時:
クエリ自体が更新できないレコードソースであれば、このままではできませんね。
ちょっと難しくなりますが、クエリと同じフィールドと、フォーム連番フィールドを持つ新しいテーブルを作成しておいて、フォームのデータをその新しいテーブルに書き込み、フォームのレコードソースを新しいテーブルに置き換える処理では、どうでしょうか?(新しいフォームを開くことでも結構ですけど)
処理の流れとしては、
(1)新しいテーブルの初期化
(2)データの転送処理
(3)レコードソースを新しいテーブルにする。(Me.RecordSource = "新しいテーブル名")
(4)フォームの再表示(Me.Requery)
となります。
参考に(1)新しいテーブルの初期化と(2)データの転送処理モジュールの例を記載しておきます。
Public Sub テーブル初期化処理(strテーブル As String)
Dim rst As New ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open strテーブル, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Do Until rst.EOF
rst.Delete
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Sub
Public Sub データ転送処理(strテーブル As String)
Dim rst As New ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open strテーブル, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Dim レコード数 As Integer
Dim i As Integer
レコード数 = DCount("フォーム連番", "クエリ1")
DoCmd.GoToRecord , , acFirst
For i = 1 To レコード数
rst.AddNew
rst![フォーム連番] = i
rst![項目1] = Me![項目1]
rst![項目2] = Me![項目2]
rst.Update
DoCmd.GoToRecord , , acNext
Next i
rst.Close
Set rst = Nothing
End Sub
なお、はじめからフォームのレコードソースをこのような更新できるレコードソース(ワークテーブル?)にしておく手もありますね。
ご参考になれば幸いです。m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessクエリで年月フィールドを年のみで抽出する方法について 2 2022/08/29 18:10
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- Access(アクセス) アクセスで教えてください。 クエリで2日前を抽出する計算式を 入力して表示させると ちゃんとyyyy 1 2023/06/08 21:05
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです 1 2023/02/08 13:29
- Access(アクセス) accessの日付フィールドから前年度だけを取り出したい 3 2022/04/13 23:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access データのないフォーム...
-
レコードを保存するコード ア...
-
ACCESS起動時に所定フォームを...
-
アクセスの自動保存解除はでき...
-
Access 帳票フォームでカレント...
-
レコード削除時に(サブ)フォー...
-
Accessで上の行を自動でコピー...
-
Accessのサブフォームで、次の...
-
Accessでフォーム上に 直前の...
-
アクセス フォーム テーブルを...
-
AccessVBA RecordSourceのリセ...
-
アクセスでの警告について教え...
-
ACCESS「ンボ ボックスで選択し...
-
アクセスのフォームで立ち上げ...
-
フィルタ後のフォームの件数の...
-
アクセス2000で在庫管理ファイ...
-
ACCESSでフォームを使って、テ...
-
Access レポート印刷するときに...
-
YahooのIDがロックされてしまい...
-
エクセルVBA オプションボタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
アクセスでフォームビューがみ...
-
ACCESSでフォームを使って、テ...
-
新規レコード行を非表示にしたい
-
フィルタ後のフォームの件数の...
-
Accessでレコードの保存をせず...
-
Accessでフォーム上に 直前の...
-
Accessで上の行を自動でコピー...
-
AccessVBA RecordSourceのリセ...
-
レコード削除時に(サブ)フォー...
-
アクセスの自動保存解除はでき...
-
Accessで新しいレコードに規定...
-
ACCESS起動時に所定フォームを...
-
Access 「このレコードを保存す...
-
Access:フォームプロパティ「...
-
Access2010、値を入力したら自...
-
レコードをダブルクリックする...
-
アクセス データの競合を非表...
-
ACCESSのクエリで抽出したデー...
-
Accessでのデータ消滅に...
おすすめ情報