- ベストアンサー
Access 特定のフィールドを一発で0にするには?
Access+VB です フォームで特定のフィールドを一発で全て0にする方法はありませんか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
下記のSQLを UPDATE テーブル1 SET テーブル1.フィールド1 = 0, テーブル1.フィールド2 = 0; これでテーブル1にあるフィールド1とフィールド2は全て0になります。 これをフォーム上のコントロールの何かのイベントにいれる。
その他の回答 (2)
- postmanchu
- ベストアンサー率0% (0/1)
こんな感じで 良いと思いますよ Private Sub ボタン_Click Set Mrdb = CurrentDb Set Mrtbl = Mrdb.OpenRecordset("テーブル名") 'テーブル名には0にするフィールドのテーブル名を記入 Mrtbl = MoveFirst Do Until Mrtbl.EOF Mrtbl.Edit Mrtbl!フィールド名 = 0 'フィールド名には 0にするフィールド名を記入 Mrtbl.Update Mrtbl.MoveNext Loop End Sub
補足
試して見ましたが、私の書き方ヘボだったのか無限ループに入ってしまったみたいです。 今は下の方法でやってますが DoCmd.GoToRecord , , acLast k = Me.CurrentRecord For i = k To 1 Step -1 フィールド名 = 0 If Me.CurrentRecord = 1 Then Exit For DoCmd.GoToRecord , , acPrevious Next とても時間がかかります。 postmanchuさんの方法だと、瞬時に終わりますか?
- O_cyan
- ベストアンサー率59% (745/1260)
>フォームで特定のフィールドを一発で全て0にする方法は・・ ボタン等のコントロールに0を代入するようにするのではどうですか 例えば0にするフィールドのテキストボックス名をText1・Text2としてボタンをBtn1とした場合 Btn1のクリック時のイベントに Private Sub Btn1_Click() Me!Text1 = 0 Me!Text2 = 0 End Sub とすればボタンBtn1をクリックした時にText1とText2は0になります。 ボタンではなく他のコントロールのイベントに入れても出来ます。 こういう事でなければゴメンなさい。
補足
ありがとうございます。 でも、この方法ではフォーカスのあるレコード一個だけのフィールドしか代入できません。 説明が不足で申し訳なかったです。 フォーカスのあるレコード分だけでなく、全てのレコードの特定フィールドに代入したいのですが・・・
お礼
Dim db As DAO.Database をなくしたらできました。 ありがとうございました。
補足
Public Function ippatu() Dim db As DAO.Database Dim test As String Set db = CurrentDb test = "UPDATE TB_name SET filed_name = 0" db.Execute test End Function と、しましたが Dim db As DAO.Databaseで「ユーザー定義型は定義されてません」とエラーになります。 基礎知識が乏しくて悲しいです。