2017-02-09 3 views
0

オーダーIDの目的を果たすテーブルにオートナンバーがあります。この注文IDの広告申込情報をその表に入力するフォームを作成しました。私は「注文ボタンを追加」ボタンをクリックする機能が必要です。注文を完了するまで、すべてのレコードに同じ注文IDを使用し続けます。私はon_clickサブの私のレコードの追加ボタンを試してみました。 me.txt_Orderid = me.txt_OrderId - 1でも当然動作しません。私はかなりアクセスしてアクセスvbaが私を踏み入れるようにアクセスしています。アイデア?アクセスvbのオートナンバーフィールドを参照して計算に使用する方法

答えて

1

複数のレコードが必要な場合は、フィールドにオートナンバーを使用しないでください。代わりに新しいフィールドを作成し、それをあなたのオーダーIDに使用してください。あなたが新しい注文を作成するときには、そのフィールドの最大値を取得し、1つを追加します。下記を参照してください...

On Error Resume Next 
DoCmd.GoToRecord , "", acNewRec 
If (MacroError <> 0) Then 
    Beep 
    MsgBox MacroError.Description, vbOKOnly, "" 
End If 

'This is where you assign new order numbers. 
Me.OrderIDFormControl = (DMax("OrderIDField", "OrderTable") + 1) 

これは同じ結果を達成しますが、これは優れています。そしてあなたはそれを複製することができます。

IDを修正したら、OrderLine Itemを追加するたびに注文のIDを取得して新しいレコードに割り当てます。

+0

ありがとう!これは私がやろうとしていることです。 – Casey

+0

問題ありません。私は最初に自動番号フィールドの真の目的を理解することに苦労し、後で私はそれがすべて間違っていたことを知るだけでした。自動番号は行の識別にのみ使用してください。彼らは、あなたのデータに関連する何らかの意味を持つべきではありません。あなたに他の質問がある場合は、私に知らせてください。最初はアクセスが少し難しいです。 –

0

注文のマスターテーブルとなる2つのテーブルtblOrderがあります。この表では、OrderIDを自動番号として使用できます。そして2番目のテーブルはtblOrderItemsであり、これは2つ以上のOrder ItemsのOrderIDの重複値を持つディテールテーブルです。

tblOrderにバインドするフォームfrmOrderを作成し、tblOderItemにバインドする別のフォームを作成します。デザインモードでOrderフォームを開き、F11キーを押してデータベース内の他のフォームを表示し、作成中のfrmOrderItemをドラッグアンドドロップします。このフォームはメインのOrderフォーム内のサブフォームになります。 サブフォームのプロパティ、[マスター]フィールド、[子フィールド]プロパティを設定します。関連するフィールドを設定するように求められますが、両方のテーブル/フォームからのOrderIDとなります。

tblOrderItemにデータを挿入するときにOrderIDを取得するようにコードする必要はありません。アクセスはあなたの価値を引き出し、追加します。

何らかの理由でコードにOrderIDを持たせたい場合や、非バインドフォーム/サブフォームをコーディングする場合は、 frmOrderフォームからOrderIDの値を取得できます。このtbOrderIDテキストボックスコントロールをfrmOrderのコードのどこにでも参照する場合は、tbOrderID.valueを使用できますが、サブフォームのテキストボックスを参照する場合は、フォーム名を参照するか、サブフォームのParentプロパティから取得することを忘れないでください例えばForms![frmOrder] .tbOrderID.value Parentと一緒に使いたい場合など。 Me.Parent.form.tbOrderID.value

+0

ご協力いただきありがとうございます。 – Casey

関連する問題