2016-06-23 4 views
0

2013年アクセスフォームのボタンに問題があります。アクセス2013年VBA:対応エラー:メソッドまたはデータメンバーが見つかりません

上位レベル:私はいくつかの規制フォームを作成しています.1つはサービスリクエスト、もう1つは申し立てリクエストです。 サービス要求がサービスコールごとに開かれます。コールが部品交換用でない場合は、一般的なクレーム要求も生成されます。

私は、techsが情報を記入する場所である "service_request_form"のフォームを持っています。このフォームには、このサービスフォームからすべてのデータをコピーしてクレームリクエストレコードを生成するボタンがあります。そこからすべてのウィンドウが閉じられ、当社の紙記録に基づいて2つのカスタムレポートが印刷されます。

問題:私は「コンパイルエラー:メソッドまたはデータメンバが見つかりません」recieving午前ライン上

Private Sub GenerateComplaint_Click()

これは、VBAでの私の最初の試みですので、私と一緒に負担してください、私は開発者ではありませんよ。以下は

ボタンにVBAです:

Private Sub GenerateComplaint_Click() 
If IsNull([txtAddress]) Or IsNull([txtCity]) Or IsNull([txtCompany]) Or IsNull([txtContact]) Or IsNull([txtDescription]) Or IsNull([txtEmail]) Or IsNull([txtPhoneNumber]) Or IsNull([txtPartNumberOrModel]) Or IsNull([txtSerialNumber]) Or IsNull([txtService Request Date]) Or IsNull([txtState]) Or IsNull([txtZip]) Then 
MsgBox "Somethings not right" 

Else 
DoCmd.Save 
Dim Prompt As Integer 
Prompt = InputBox("Are you Sure you would like to create a Complaint Record? Type 1 for yes, 0 for No") 
    If Prompt = 1 Then 
     DoCmd.OpenForm "Complaint Request Form", , , , acFormAdd 
     Forms![Complaint Request Form].Form.Company = Me.txtCompany 
     Forms![Complaint Request Form].Form.Address = Me.txtAddress 
     Forms![Complaint Request Form].Form.Contact = Me.txtContact 
     Forms![Complaint Request Form].Form.Phone = Me.txtPhone 
     Forms![Complaint Request Form].Form.Email = Me.txtEmail 
     Forms![Complaint Request Form].Form.ProductNumber = Me.txtPartNumberOrModel 
     Forms![Complaint Request Form].Form.SerialNumber = Me.txtSerialNumber 
     Forms![Complaint Request Form].Form.City = Me.txtCity 
     Forms![Complaint Request Form].Form.State = Me.txtState 
     Forms![Complaint Request Form].Form.Zip = Me.txtZip 
     Forms![Complaint Request Form].Form.Description = Me.txtDescription 
     Forms![Complaint Request Form].Form.CusDescription = Me.txtCusDescription 
     Forms![Complaint Request Form].Form.ServiceRequestNumber = Me.ServiceRequestDate 
     Forms![Complaint Request Form].Form.ComplaintRequestDate = Me.txtService_Request_Date 

     Dim SN As Long 
     SN = Me.ServiceRequestNumber 
     DoCmd.Close acForm, "Complaint Request Form", acSaveYes 
     DoCmd.Close acForm, "Service_Request_sub", acSaveYes 
     'DoCmd.OpenTable "Complaint_Request", , acReadOnly 
     'DoCmd.Close acTable, "Complaint_Request", acSaveYes 
     DoCmd.OpenReport "ComplaintRequestReport", acViewPreview, , "[Complaint_Request]![ServiceRequestNum]=" & SN 
     'DoCmd.OpenReport "ServiceRequestReport", acViewPreview, , "[Service_Request]![ServiceRequestNumber]=" & SN 
     'Below line works, I think there is a data type issue, ServiceRequest!ServiceRequestNumber is an autonumber, Where complaintRequest!ServiceRequestNum is autonumber 
     DoCmd.OpenReport "ServiceRequestReport", acViewPreview, , "[Service_Request]![ServiceRequestNumber]=" & SN 
     'DoCmd.Close acForm, "Service_Request_sub" 
    ElseIf Promp = 0 Then 
    'do nothing' 
    Else 
    Prompt = InputBox("Are you Sure you would like to create a Complaint  Record? Type 1 for yes, 0 for No") 
    End If 




End If 

End Sub 

はうまく動作し

Private Sub GenerateComplaint_Click() 
If IsNull([txtAddress]) Or IsNull([txtCity]) Or IsNull([txtCompany]) Or IsNull([txtContact]) Or IsNull([txtDescription]) Or IsNull([txtEmail]) Or IsNull([txtPhoneNumber]) Or IsNull([txtPartNumberOrModel]) Or IsNull([txtSerialNumber]) Or IsNull([txtService Request Date]) Or IsNull([txtState]) Or IsNull([txtZip]) Then 
MsgBox "Somethings not right" 
End if 
を実行します。

+1

が見える...私は意味、それは*右* [コンパイラ]苦情を生成しますか? '' ...ハイライトされた行がメソッドの*シグネチャ*ですか?最初に私はそれが起こっていると聞きました... –

+1

これらの 'Set'キーワードはすべて、コンパイルして実行するとランタイムエラーが発生すると言われています。 'Set'はオブジェクト参照*を割り当てるためのもので、あなたは* values *を割り当てています。そこに 'Set'を削除してください。 –

+0

@ Mat's Mug私はGenerateComplaintという新しい "空白"ボタンを作成しました。 最初のIfステートメントを貼り付け、ボタンが期待どおりに機能しました。ボタンはVBAによって作成されました –

答えて

0

は、各モジュールの上部にOption Explicitを置きます。
コンパイル時に変数宣言を強制し、宣言されていない変数やスペルミスを報告します。

新しいモジュールでこれを自動的に使用するには、VBAエディタでRequire Variable Declarationオプションを設定します。

そして読み:それが動作するようにDebugging VBA Code

0
Forms![Complaint Request Form].Form.Phone = Me.txtPhone 

はあなたの時間を無駄にして申し訳ありません

Forms![Complaint Request Form].Form.Phone = Me.txtPhoneNumber 

されている必要があります。将来の参照のため

関連する問題