私はデータベースです//アクセスnoob、だから私に同行してください。私は、コンサルタントとそのベンダーを技術コンサルティング会社に追跡するためのデータベースを用意しています。一部のコンサルタントは独自のベンダーであり、一部のコンサルタントは契約を処理する第三者ベンダーがあります。コンサルタントが自分のベンダーでもある場合、連絡先情報は両者で同じです。 Contact Infoは、ConsultantID(ConsultantTのプライマリキー)とVendorID(VendorTのプライマリキー)のプライマリキーContactIDと外部キーフィールドを持つ別のテーブルに格納されています。combobox.columnプロパティは、vbaでnullの無効な使用を返します
フォームの1つに関連する連絡先情報が既に入力されている場合、既存の連絡先情報レコードを選択して、データベースに他の外部キーIDフィールドを既存のメインフォームのレコードに基づいてレコードを作成します。たとえば、コンサルタントフォームを使用してコンサルタントAの連絡先情報を入力した場合、コンサルタントAのベンダーを追加するためにベンダーフォームを開くと、コンサルタントから「コンサルタントA」を選択し、その情報を入力するオプションが必要ですVendorFのContact InfoフォームにVendorIDを追加しました。
私はほとんどそれを取り組んだと思いますが、最後のことに固執しています。今、私は既存のContactInfoレコードを選択するためのポップアップフォーム(ChooseConsultantInfoF)を持っています。そのフォームでは、既存のレコードを選択するための検索コンボボックス(SelectConsultantCombo)と、ContactInfoTを更新してVendorsFの現在のレコードからVendorIDを既存のレコードに追加するようにコーディングしたコマンドボタン(SaveConsultantbtn)がありますContactInfoで
Option Compare Database
Option Explicit
Private Sub SaveConsultantbtn_Click()
Dim stupid As Long
stupid = SelectConsultantCombo.Column(0)
DoCmd.RunSQL "UPDATE ContactInfoT SET VendorID = (Forms!VendorsF!VendorID) Where ContactInfoID = " & stupid & ";"
End Sub
Private Sub SelectConsultantCombo_AfterUpdate()
Dim rst As DAO.Recordset
Set rst = Me.RecordsetClone
rst.FindFirst "ContactInfoID = " & Me!SelectConsultantCombo
Me.Bookmark = rst.Bookmark
leave:
Me!SelectConsultantCombo = Null
If Not rst Is Nothing Then Set rst = Nothing
Exit Sub
End Sub
私は行動にそれを置くしよう
が、私はエラー94を得る:ここでは、ポップアップフォームのコードのすべてがあるのNullの無効な使用とそれがstupid = SelectConsultantCombo.Column(0)
私が知っているプルアップコードブロックは、それとは別に動作します - 私の代わりに、変数の数値で一度クリックしてイベントを試してみました:
Private Sub SaveConsultantbtn_Click()
DoCmd.RunSQL "UPDATE ContactInfoT SET VendorID = (Forms!VendorsF!VendorID) Where ContactInfoID = 1 ;"
End Sub
問題なく、その問題は、コンボボックスの列を呼び出すことでなければなりません。
私はまた、ヌルを許可するのNzで変数を定義しようとした:
stupid = Nz(Me.SelectConsultantCombo.Column(0), 0)
、それはまた、作業コードを取得しますが、まだContactInfoT内のレコードに私のベンダーIDを保存しません。コンボボックスのどの列にもNull値は含まれていません(とにかく見つけることはできません)。これは便利ですが、コンボボックスの行ソースがある場合は知らん:
SELECT ContactInfoT.ContactInfoID, ConsultantT.ConsultantID, ConsultantT.FirstName, ConsultantT.LastName FROM ConsultantT INNER JOIN ContactInfoT ON ConsultantT.ConsultantID = ContactInfoT.ConsultantID ORDER BY ConsultantT.[LastName], ConsultantT.[FirstName];
アクセスが私のcombobox.columnプロパティを認識しない理由を誰もが知っていますか?または、このエラーを回避するためにVBAでこれを記述する別の方法がありますか?
バインドされた列はContactInfoIDに設定されていますが、これは正しいです。私は「Me」で既存のコードを試しました。また、 'Stupid = Me.SelectConsultantCombo'と' stupid = Me.SelectConsultantCombo.Value'( 'Me.'の有無にかかわらず試してみました)を試したが、まだエラー94:デバッガでその行をプルアップするNullの無効な使用:\ – AliG
"Me!SelectConsultantCombo = Null'ここでNullに設定しています。あなたがnullにリセットする前にクエリの値を実際に使用するまで待つ必要があります。その行をSaveConsultantbtn_Clickサブに移動するか、あなたのコードは、選択が行われるたびにコンボボックスがnullにリセットされます。 – SunKnight0