![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
テーブルに「ID」「名称」があり、
lst_1でIDを、txt_1で名称を表示しているとします。
Private Sub lst_1_AfterUpdate()
txt_1.Value=lst_1.column(1)
End Sub
Private Sub txt_1_AfterUpdate()
If (<名称をtxt_1.value1とテーブルで比較> = False ) then
<名称をtxt_1.Valueで更新するクエリ>
End If
End Sub
こんな感じでどうでしょうか?
No.4
- 回答日時:
要は非連結のフォームに既存のレコードを取り出し
そこで入力した値に更新したいということですね
レコードの更新は連結フォームで行うのが簡単なんですが
非連結フォームからやりたいという人も結構いますね
その場合データの整合性チェックなどは全部自分で行わなければいけなくなります
(テーブルに格納できない値を書き込もうとするとコードが止まってしまいます)
その辺はいいのでしょうか?(覚悟はできているのでしょうか?)
後はテーブルに主キーはあるのか
主キーを書き換えることがあるのか
などで難しさが変わってきますね
その辺はどうなんでしょうか
No.3
- 回答日時:
s_husky です。
ErrMessage 関数を使っていました。
同様に下記の回答で紹介しています。
※なお、プログラマではなく単なる素人ですので参考程度に・・・。
No.2
- 回答日時:
次は、フォームに配置された非連結コントロールの値をテーブルに書き込むサンプルコードです。
各コントロールが更新される都度にcmdUpdateRecord_Clickをコールしてもいいです。
が、ネットワークトラフィックの混雑の原因になるのでお勧めしません。
Private Sub cmdUpdateRecord_Click()
Dim StopNow As Boolean
StopNow = Not UpdateRecord(Me, "SELECT * FROM id管理表 WHERE id_name='Test'")
If Not StopNow Then
Message "[id管理表] を更新しました。"
End If
End Sub
UpdateRecord関数は、いわゆる非連結フォームに入力されたデータをデータベースに書き込む関数です。
書き込む表の列とフォームに配置したコントロールとの対応関係は、コントロールの名前で判断します。
もちろん、更新対象を特定する情報も引数として渡す必要があります。
フォーム上の書き込むべきコントロールは field_列名しておきます。
そうすれば、書き込むべきコントロールもテーブルの列名も知ることができます。
非連結フォームを解読してテーブルを更新できる理由です。
Public Function UpdateRecord(ByVal frm As Form, _
ByVal strSQL As String, _
Optional ByVal Echo As Boolean = False) _As Boolean
On Error GoTo Err_UpdateRecord
Dim isOK As Boolean
Dim I As Integer
Dim N As Integer
Dim fldName AS String
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim fld As ADODB.Field
isOK = True
Set cnn = CurrentProject.Connection
' =================
' Begin with: cnn
' -----------------
.Errors.Clear
.BeginTrans ← 最初に書かないとエラートラップでエラーが発生する可能性があります。
' ----------------
' Recordset Open
' ----------------
Set rst = New ADODB.Recordset
rst.Open strSQL, _
cnn, _
adOpenStatic, _
adLockOptimistic
' =================
' Begin With: rst
' -----------------
With rst
IF Not .BOF Then
N = frm.Controls.Count - 1
For Each fld In .Fields
For I = 0 To N
fldName = frm.Controls(I).Name
If Left$(fldName, 6) = "field_" Then
If Mid$(fldName, 7) = fld.Name Then
fld.Value = frm.Controls(I).Value
Exit For
End If
End If
Next I
Next fld
.Update
End If
End With
' ---------------
' End With: rst
' ===============
.CommitTrans
' ---------------
' End With: cnn
' ===============
If Echo Then
MsgBox " 1件のレコードを更新または保存しました。", vbInformation, " お知らせ"
End If
Exit_UpdateRecord:
On Error Resume Next
rst.Close
Set rst = Nothing
UpdateRecord = isOK
Exit Function
Err_UpdateRecord:
isOK = False
If cnn.Errors.Count > 0 Then
ErrMessage cnn.Errors(0), strSQL
cnn.RollbackTrans
Else
MsgBox "プログラムエラーが発生しました。(UpdateRecord)" & Chr$(13) & Chr$(13) & _
"・Err.Description=" & Err.Description & Chr$(13) & _
"・SQL Text=" & strSQL, _
vbExclamation, " 関数エラーメッセージ"
End If
Resume Exit_UpdateRecord
End Function
なお、単一列であれば、
CnnExecute UPDATE文
で事足ります。
CnnExecute 関数に関しては、下記の<リストボックスの値・・・>の回答を参照して下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) テキストボックスの値をテーブルに入力したい 2 2022/06/28 12:08
- Access(アクセス) Accessテキストボックス内に2つのフィールドの値を比較して大きい方の値を表示させる方法 1 2022/09/09 10:50
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Visual Basic(VBA) テキストボックスの値を該当セルに登録する方法 2 2022/11/23 18:47
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
何回やってもうまくいかないことは?
みなさんには、何回やってもうまくいかないことはありますか?
-
あなたの「プチ贅沢」はなんですか?
お仕事や勉強などを頑張った自分へのご褒美としてやっている「プチ贅沢」があったら教えてください。
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
テキストボックスに入れた内容をAccessのテーブルに登録する方法を教えてください。
Visual Basic(VBA)
-
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
-
4
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
5
フォームの値をクエリーに反映したい
その他(Microsoft Office)
-
6
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
7
テキストボックスに入力した値を、次に入れ替えるまで保持させたいのですが、どのような方法があるでしょう
Access(アクセス)
-
8
access テキストボックスの値取得
Access(アクセス)
-
9
アクセスVBAのMe!と[ ]
Access(アクセス)
-
10
access追加クエリ実行時の重複を防ぎたい
その他(コンピューター・テクノロジー)
-
11
access別のテーブルを参照してテキストボックスに値を表示、編集したい
Access(アクセス)
-
12
Access2013。テキストボックスにクエリの値を表示したい。 ①テーブル「受注情報」 フィールド
Access(アクセス)
-
13
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
14
ACCESSのリストボックスで複数選択した値をテーブルに保存するには?
Access(アクセス)
-
15
Accessでフォームから別フォームのテキストボックスの値を設定する
Visual Basic(VBA)
-
16
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
-
17
ACCESSのフォームで次のレコードに移動しない方法を教えてください
その他(データベース)
-
18
ACCESS サブ・メインフォームのリンク方法を教えてください。
Access(アクセス)
-
19
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
-
20
ACCESSのコンボボックスで入力した値がTABLEに反映されずに数字がでます
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスのフォームのビューが...
-
ACCESSのフォームからデータの...
-
Accessのフォーム上にレコード...
-
accessの自動更新処理をできな...
-
Access 別フォームへの再クエ...
-
選択したチェックボックスのみ...
-
アクセスでテーブルの変更内容...
-
ACCESSでのテキストボックスの...
-
ACCESSで入力フォームをHTMLフ...
-
アクセス 0以外をカウントす...
-
Access:サブフォームにクエリ...
-
Access2002 フォームを閉じるた...
-
ACCESS(アクセス):一度の入力で...
-
access レコードソースを選択...
-
access 非連結のサブフォームの...
-
Accessのフォーム画面について
-
入力途中の入力した値をすべて...
-
Accessのハイパーリンクのパス...
-
Accessのフォームで作業領域を...
-
アクセス:フォームを閉じずに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのフォームからデータの...
-
アクセスのフォームのビューが...
-
Accessのフォーム上にレコード...
-
選択したチェックボックスのみ...
-
Access 別フォームへの再クエ...
-
ACCESSで入力フォームをHTMLフ...
-
accessの自動更新処理をできな...
-
Access2002 フォームを閉じるた...
-
アクセスでの項目追加について...
-
アクセスでテーブルの変更内容...
-
ADOでRecordsetオブジェクトを...
-
Accessフォームのテキストボッ...
-
Accessのフォームで作業領域を...
-
アクセス 0以外をカウントす...
-
他フォームのチェックボックス...
-
access レコードソースを選択...
-
Accessのフォームに表示...
-
入力途中の入力した値をすべて...
-
Accessのフォーム画面について
-
ACCESSでのテキストボックスの...
おすすめ情報