
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
教えて!gooグレードポイントがdポイントに変わります!
dアカウント連携を行っていただくと、グレードに応じて「dポイント」が進呈されるようになります。
-
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
テキストボックスに入れた内容をAccessのテーブルに登録する方法を教えてください。
Visual Basic(VBA)
-
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
4
access テキストボックスの値取得
Access(アクセス)
-
5
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
6
Access フォーム上でのテキストボックスとテーブルの連結
Access(アクセス)
-
7
access別のテーブルを参照してテキストボックスに値を表示、編集したい
Access(アクセス)
-
8
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
9
AccessのフォームのテキストボックスにLOOKUPで表示したい
Access(アクセス)
-
10
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
11
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
12
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
13
「データベースまたはオブジェクトは読み取り専用なので、更新できません」エラーについて
その他(データベース)
-
14
アクセスのレポートに、フォームで算出した数字を表示させたい
Access(アクセス)
-
15
Access コンボボックスの値をクリアしたい。
PowerPoint(パワーポイント)
-
16
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
17
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
18
アクセスVBAのMe!と[ ]
Access(アクセス)
-
19
ACCESS フォームをそのまま印刷について
その他(データベース)
-
20
アクセスで#エラーを表示させない方法は?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ACCESSのフォームからデータの...
-
5
アクセスでテーブルの変更内容...
-
6
Accessフォームのファイル名を...
-
7
「メソッドまたはデータメンバ...
-
8
アクセス 0以外をカウントす...
-
9
ACCESSの表形式で、レコードを...
-
10
accessの自動更新処理をできな...
-
11
ACCESSで入力フォームをHTMLフ...
-
12
Access2000 テキストボックス...
-
13
ACCESSのVBAでのサブルーチンへ...
-
14
写真入りデータベースの作成
-
15
ACCESSでのテキストボックスの...
-
16
Accessフォームのテキストボッ...
-
17
ACCESS レポートへの表示・非表示
-
18
入力途中の入力した値をすべて...
-
19
Access2002 フォームを閉じるた...
-
20
ACCESSで、フォームのレコード...
おすすめ情報
公式facebook
公式twitter