Acces VBA कोड संयोजन काम नहीं कर रहा है, निकास उप के साथ समस्या? [बन्द है]


0

मैं VBA में बहुत नया हूं और मैं इस समस्या का समाधान नहीं कर सकता। ऐसा लगता है कि इसे ठीक करने के लिए एक आसान समस्या होनी चाहिए, मुझे नहीं पता कि कैसे।

तो कोड क्या करता है: मुख्य रूप में एक रिकॉर्ड है। यह रिकॉर्ड प्रपत्र पर एक बटन दबाने वाली दूसरी तालिका bij में कॉपी किया जाएगा। प्रतिलिपि शुरू होने से पहले, कोड पहले जांचता है कि क्या उप-प्रपत्र में um OMnummer ’भरा गया है। यदि नहीं, तो एक संदेश बॉक्स यह कहते हुए दिखाई देता है कि उपयोगकर्ता को सबफॉर्म में भरना चाहिए और कोड चलना बंद हो जाएगा।

दूसरी बात यह है कि यदि कोड पहले से ही दूसरी तालिका में मौजूद है तो कोड जांचता है। यदि ऐसा है, तो एक संदेश बॉक्स प्रकट होता है और रिकॉर्ड की प्रतिलिपि नहीं बनाई जाएगी। यदि नहीं, तो रिकॉर्ड को अन्य तालिका में कॉपी किया जाएगा।

कोड के दोनों टुकड़े ठीक से काम करते हैं। हालांकि, जब मैं एक ही निजी उप में दोनों टुकड़ों को शामिल करने की कोशिश करता हूं, तो केवल पहला काम करता है। यह 'एक्जिट सब' कोड के साथ कुछ हो सकता है या मैं इफ - फिर सही का उपयोग नहीं कर रहा हूं।

क्या आपसे मुझे मदद मिल सकती है! मोनिका

Private Sub KnopProjectVersturen_Click()
On Error GoTo ErrProc

If IsNull(Me!Subform_OMnummers.Form!Omnr) Then
 If MsgBox("Vul het OMnummer in. Je kan het project niet exporteren zonder OMnummer.")     Then
      Exit Sub


   DoCmd.OpenQuery "Qry_Depo_ControleAanwezig"
 If DCount("Deponering.projectnummer", "Qry_Depo_ControleAanwezig") = 0 Then
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "Qry_projectnaarDepot"
         DoCmd.OpenQuery "Qry_ToevoegProjectDepot"
        DoCmd.OpenForm "Depot_uitvoer", , , "[Projectnummer] = '" & Me![Projectnummer] & "' And [subID]=[subID]"
    Me.Status = 8
    DoCmd.Close acQuery, ("Qry_Depo_ControleAanwezig")
    DoCmd.SetWarnings True

Else
        MsgBox "Dit project bestaat al in de Depot_Uitvoer, verander de status in het projectformulier", vbInformation, "Example"
        DoCmd.Close acQuery, ("Qry_Depo_ControleAanwezig")



 End If
 End If
 End If



'Als er fouten zijn laat deze code een messagebox zien met het nummer en de melding.
 ExitProc:
 Exit Sub
 ErrProc:
    Select Case Err.Number
    Case Else
        MsgBox Err.Number & "--" & Err.Description
        Resume ExitProc
        End Select
End Sub

एक्ज़िट सब के बाद का कोड कभी भी निष्पादित नहीं होता है, जाँच करें कि आपने एंड- इफेकेटमेंट कहाँ रखा है !

आपके उत्तर के लिए धन्यवाद AKDADEVIL! मैं अंत के बयानों पर पढ़ता हूँ यदि कथन और उसके अनुसार मेरे कोड में सुधार करते हैं। पता ही नहीं चला कि प्लेसमेंट एक मुद्दा था।

कोड इंडेंटिंग के लिए इसका उपयोग करें - यह आपको स्तर दिखाएगा और मिलान करेगा यदि / एंडिफ और अन्य जैसे निर्माण आसान है। यह Office 2007 और 2010 में काम करता है, लेकिन वेबसाइट उन लोगों को नहीं दिखाती
SeanC

जवाबों:


0

ifसंदेश बॉक्स के साथ उस सूत्र के लिए कोई शर्त नहीं है । इसे आजमाइए-

If IsNull(Me!Subform_OMnummers.Form!Omnr) Then
 if msgbox("foo",vbAbort,"error") = 3 then
 exit sub
 end if
end if

या, ifसंदेश बॉक्स लाइन पर उपयोग न करें

If IsNull(Me!Subform_OMnummers.Form!Omnr) Then
 MsgBox("Vul het OMnummer in. Je kan het project niet exporteren zonder OMnummer.")
 Exit Sub
end if

प्रिय सब, आपके उत्तर के लिए बहुत बहुत धन्यवाद और मुझे क्रॉसपोस्टिंग के लिए बहुत खेद है। मुझे नहीं पता था कि दो फ़ॉरे जुड़े हुए थे। Raystafarian, आपके कोड के लिए धन्यवाद। मैंने कोशिश की, लेकिन यह काम नहीं किया। संदेश बॉक्स लाइन में यदि इसके बिना काम किया: Matzone ने मेरे लिए कोड निर्धारित किया है जहां मैं क्रॉसपोस्ट किया गया: stackoverflow.com/questions/17830433/… । तो आप सभी को धन्यवाद! मेरा दिन बचा लिया :) मैं वास्तव में क्रोधी हो रहा था।
मोनिका

@ मोनिका को आपको end ifपहले कोड स्निपेट में दो की आवश्यकता होगी । आपको उन दोनों को बंद करने की आवश्यकता है, मैंने अभी पहले वाले को वहां शामिल नहीं किया था, इसलिए मैंने इसे बंद नहीं किया। मैंने इसे शामिल करने के लिए संपादित किया है, यदि आप उपयोगकर्ता को संकेत देना चाहते हैं।
रायस्टाफ़ेरियन

1

इतना यकीन नहीं है .. लेकिन आप यह कोशिश कर सकते हैं ..

Private Sub KnopProjectVersturen_Click()
On Error GoTo ErrProc


'This is the first part of the code checking if the subform has been filled in

If IsNull(Me!Subform_OMnummers.Form!Omnr) Then
  MsgBox("Vul het OMnummer in. Je kan het project niet exporteren zonder OMnummer.")
  Exit Sub
End If    


'This is the second part of the code, checking if the record exists in the other table and then copying part of the record

DoCmd.OpenQuery "Qry_Depo_ControleAanwezig"
If DCount("Deponering.projectnummer", "Qry_Depo_ControleAanwezig") = 0 Then
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "Qry_projectnaarDepot"
    DoCmd.OpenQuery "Qry_ToevoegProjectDepot"
    DoCmd.OpenForm "Depot_uitvoer", , , "[Projectnummer] = '" & Me![Projectnummer] & "' And [subID]=[subID]"
    Me.Status = 8
    DoCmd.Close acQuery, ("Qry_Depo_ControleAanwezig")
    DoCmd.SetWarnings True

Else
    MsgBox "Dit project bestaat al in de Depot_Uitvoer, verander de status in het projectformulier", vbInformation, "Example"
    DoCmd.Close acQuery, ("Qry_Depo_ControleAanwezig")

End If    


'Als er fouten zijn laat deze code een messagebox zien met het nummer en de melding.
 ExitProc:
 Exit Sub
 ErrProc:
 Select Case Err.Number
 Case Else
    MsgBox Err.Number & "--" & Err.Description
    Resume ExitProc
    End Select
 End Sub

प्रिय Matzone, धन्यवाद कि एक सपने की तरह काम करता है! इसलिए अगर मैं सही ढंग से समझूं, तो समस्या पहले स्टेटमेंट बॉक्स के साथ आईएफ स्टेटमेंट में है?

@ user2613982 .. हाँ, यह आपके IFब्लॉक में है .. इसलिए,
डाउनवोट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.