1

したがって、特定の情報フィールドでテーブルを更新するために使用する入力フォームがあります。レコードのIDがテキストボックスに自動的に表示されます。ボタンクリックでテーブルに追加する必要のあるテキストボックスが3つあります(IDを除く)。

名前
日にち
方法

フィールド名です。

As_Name
As_Date
As_Method

テキストボックスの名前です

テーブル名は、、 POCIDはPOC_ID(自動番号)です。

したがって、これらのオブジェクト(テキストボックス)をテーブルにバインドする必要はありません。これは、テーブルのフォームから派生した少し別個の「ポップアップ」フォームであり、入力をPOC_IDに相対させるだけであるためです。これは、元のフォームですでに選択されています。

では、このためのvbaを1)レコードがまだ存在しないことを確認する方法を教えてください.... 2)テキストボックス(上記)からのデータ入力でフィールド(上記)を更新します。ボタンクリックで使えるようにしたい…。


編集:

実際には、2つではなく1つのテーブルです。同じテーブルに情報を送信できるようにしたい2つのフォームがあります(ただし、異なる情報です)。このデータベースはすでに他の誰かによって作成されており、私がそれを引き継ぐために堕落していることを知っています。

新しい要件に基づいて追加情報を追加するために、2つ目の小さなポップアップフォームを追加する必要があります(文字通り、これを他の場所に配置する場所はありません)。私はすでにそれを行っており、提案されたオブジェクトアプローチを使用して、最初のフォーム(この2番目の「ポップアップ」フォームが発生する)を参照して、相対IDフィールドを追加しました。これで、3つの値(上記の値)を入力するように求められた、この2番目の小さなポップアップフォームができました。

テキストボックスをフィールドにリンクする方法がわからないので、ユーザーが情報を入力したら、[保存]をクリックすると、そこにあるTripID(上記の1つ)に関連するテーブルに情報が保存されます。テキストボックスを取得してデータをテーブルに保存する方法を知っている唯一の方法は、新しいものを作成するときにビルダー/ウィザードを使用することです。

フォーム上のオブジェクト(テキストボックス、cmb、リスト)などを「クリック時」メソッドを使用してテーブルにリンクし、保存ボタンを使用できるようにする方法を学びたいと思います。基本的にはそれだけです!

4

2 に答える 2

2

DoCmdのOpenFormメソッドでは、WhereやOpenargsなどのいくつかの引数を使用できます。これらを利用することができます。

ただし、2つのテーブルに同じ情報を保持しているように見え、理由が明記されていないという点で、テーブルの設計にかなり問題があるようです。http://www.r937.com/relational.htmlを読んだことがありますか?

必要な設計には、メインテーブルへの外部キーである数値フィールドPOC_IDのみが含まれている可能性があります。

于 2009-09-23T13:35:32.323 に答える
1

あなたの状況はまだわかりませんが、答えの概要を説明させていただきます。アウトラインが十分に近づいていない場合は、どこを迷ったのか説明してください。

親フォームfrmParentには、子フォーム(frmChild)を開くコマンドボタン(cmdMoreFields)があり、frmParentに現在表示されているレコードの3つの追加フィールドに値を入力します。ユーザーがfrmChildにこれらの値を入力した後(As_Name、As_Date、およびAs_Methodという名前のテキストボックスコントロールに)、コマンドボタン(cmdSave)をクリックして、これらの値をテーブルPOCのフィールド(Name、Date、およびMethod)に格納します。 frmChildを閉じます。また、frmParentには、現在のレコードの主キー(テーブルPOCのフィールドpk_field)の値を保持するテキストボックス(txtPk_field)が含まれています。

ただし、txtPk_fieldに使用しているフィールド/コントロールがわからないため、現在のレコードがまだ保存されていない場合に値が使用できるかどうかは疑問です。したがって、cmdMoreFieldsの「クリック時」イベントに次のコードを提案します。

If Me.Dirty Then Me.Dirty = False
DoCmd.OpenForm "frmChild"

cmdSave(frmChild上)の「クリック時」イベントで、次のようなコードを試してください。

Dim strSql As String
strSQL = "UPDATE POC SET [Name] = """ & Me.As_Name & """, [Date] =#" _
    & Me.As_Date & "#, Method = """ & Me.As_Method & """ WHERE pk_field = " _
    & Forms!frmParent.txtPk_field & ";"
Debug.Print strSql
CurrentDb.Execute strSql, dbFailOnError
DoCmd.Close

そのアプローチが機能する場合は、Remouが提案したように、Openargsを使用してpk_field値をfrmChildに渡すことを検討してください。

注:Nameのデータ型はテキスト、Dateは日付/時刻、Methodはテキストであると想定しました。データ型が私の推測と異なるフィールドのUPDATEステートメント区切り文字を変更する必要があります。

于 2009-09-23T21:55:20.087 に答える