2016-04-02 21 views
1

自分のジョブを追跡するAccessデータベースにテーブルがあります。私は、このテーブルに基づいてクエリに基づいてフォームを持っています。私のテーブルには[file_path]というフィールドがあります。これはフォーム上のWebブラウザを制御するフィールドです。コンパイルエラーが無効な外部プロシージャ

私のフィールド[customer_Id]をフォームに更新すると、[File_path]が更新されます。顧客名をファイルパスとともに反映するように更新する必要があります。 C:\Users\Windows8\Documents\Projects\Doe John

フィールド[file_path]の文字列に[Customers]![Last_Name][Customers]![first_name]を挿入するにはどうすればよいですか?

私はVBAコードを使用する必要があると思いますが、どうしたらよいかわかりません。私はこれから始まった:

Private Sub Customer_AfterUpdate() 
Me.File_path = Me.Last_Name 
End Sub 

私はこれが微弱な始まりであることを知っています。誰かが私を助ける方法を知っていますか?私の質問がはっきりしないかどうか教えてください。

上記以外のコードは、無効な外部手順Private Sub Customer_AfterUpdate()に戻ります。どうして?

+0

Me.File_path = Me.Last_Name& ""&me.First_name。あなたのフォームには、この名前の3つのフィールドが必要です。 – Xilmiki

+0

私はここで新しいです。私はコメントがこれを置くための適切な場所ではないことを知っています。 (またはそれがある?) – wesp

+0

は、今私は 'この – wesp

答えて

0

Meは、その形態を指す。あなたはMeを使用することがベストプラクティス(スピード、コーディングの容易さなど)であることは間違いありませんが、私が始めていたときや複雑なアプリケーションであっても、書き留めたいときには少しミスしないように思いますこの。あるいは、あなたの記憶が私の記憶よりも優れているかもしれません。その場合は、無視して読んでください。

[file_path]がテーブルにあるため、テーブルにアクセスする必要があります。あなたのコードはフォーム内でそれを探し、それがMeの中にないことを認識し、このエラーをスローします。

私はあなたのための良い出発点であるべきである下の行の行を与えますが、私はあなたの呼び出しイベントを調べる必要があるかもしれないと思います。 AfterUpdateは、自動的に発生するように見えるので、涼しいですが、「顧客」フォームが更新されるたびにフィールドを更新する必要はありません。特定のテキストボックスが常に最後に更新されている場合(last_name?)、代わりにそのテキストボックスを試すことができますが、更新された最後のテキストボックスであることを常に忘れないように心がけています...私は、ある日、私が誤ってcustomer_idの前に名前を付けてしまったら、後で自分の手に重大な混乱を招くでしょう。代わりにClickイベントを使用してコマンドボタンを提案することはできますか?

実際にどのイベントを使用しても、イベント内には1行のコードしか必要ありません。これを行う方法はたくさんあります。 CurrentDb.Execute "update " & myAwesomeTableNameHere & " set file_path='"C:\Users\Windows8\Documents\Projects\" & forms("customers").controls("last_name").text & " " & forms("customers").controls("first_name").text & "' where customer_id='" & forms("customers").controls("customer_id").text & "'"

現在、データは貴重で美しいものです。あなたに支払う人々の名前はもっとそうです。フォーム上のテキストボックスに自由に入力することで、事前に設定されたテーブルのデータを変更すると、災害が私に起こるのを待っているように聞こえる。それが私の場合、私は1)バックアップを非常に頻繁に行う(easist)、または2)テーブルに何かを書き込む前に複数の方法でエントリを検証するかのいずれかです。

関連する問題