2016-04-26 8 views
1
  • Access 2003 auf Windows 7

enter image description hereWie Abschnitt in Access 2003 unterdrücken, wenn 2 berechnete Felder beide Null sind?

Ich habe einen Bericht von Verkäufer gruppiert dann Kunden. Im Kundengruppenfuß zeigen wir den Kundennamen, den Umsatz für das erste Quartal 2015 (berechnetes Feld) und den Umsatz für das erste Quartal 2016 (berechnetes Feld) an. Die 2 berechneten Felder heißen txtQ1a und txt Q1b.

Wenn sowohl txtQ1a als auch txtQ1b leer oder null sind, möchte ich diesen Kunden ausblenden. Hier ist, was ich versucht habe, obwohl es jetzt auskommentiert ist.

Private Sub grpCustName_Format(Cancel As Integer, FormatCount As Integer) 

'Me.grpCustName.Visible = (Nz(txtQ11Amt.Text) = 0) And (Nz(txtQ12amt.Text) = 0) 
'Me.grpCustName.Visible = (Nz(txtQ11Amt) = 0) And (Nz(txtQ12amt) = 0) 
'Cancel = (Nz(txtQ11Amt.Text) = 0) And (Nz(txtQ12amt.Text) = 0) 

End Sub 

Ich habe mehrere Dinge ausprobiert, bekomme aber immer einen "ungültigen Prozeduraufruf", bevor mein Code überhaupt ausgeführt wird. Der "ungültige Prozeduraufruf" markiert in gelb den Funktionskopf, der mit "Private grpCustName_Format ..." beginnt.

Habe ich vergessen, eine Bibliothek oder etwas zu verknüpfen? Was könnte hier falsch sein?

Vielen Dank.

EDIT: Meine Formel in jedem Q1 2015 Verkaufs-Box: =DSum("[sls_amt]","tblSalesLastYear","[sls_amt] <> 0 and [billed_dt] >= 20150101 and [billed_dt] <= 20150331 and [cus_no] = [txtCustno] "). Gleiche Formel in Q1 2016 Verkaufsbox, aber Termine sind unterschiedlich.

+0

Was ist der Zweck von 'Cancel' arg ist? Und zeigen Sie, wie Sie Ihre Sub anrufen –

+0

Dies ist objektorientierte Programmierung. Das System, nicht der Programmierer, ruft tatsächlich Private Sub grpCustName_Format auf und sendet die Parameter ein. – Bulrush

+0

Haben Sie den Abschnitt "cus_name Footer" manuell in "grpCustName" umbenannt? Wenn dies der richtige Abschnittsname ist, ist die Syntax korrekt und die Ereignisprozedur sollte funktionieren. Eine Dekompilierung kann dazu beitragen, dass es funktioniert: http://StackOverflow.com/a/3268188/3820271 – Andre

Antwort

0

sollte dies tun:

Private Sub grpCustName_Format(Cancel As Integer, FormatCount As Integer) 

    Me.grpCustName.Visible = (Nz(txtQ11Amt.Value, 0) = 0 And Nz(txtQ12amt.Value, 0) = 0) 

End Sub 

Alternative Syntax:

Me!grpCustName.Visible = (Nz(Me!txtQ11Amt.Value, 0) = 0 And Nz(Me!txtQ12amt.Value, 0) = 0) 

Korrigiert für Nicht sichtbar:

Me!grpCustName.Visible = Not (Nz(Me!txtQ11Amt.Value, 0) = 0 And Nz(Me!txtQ12amt.Value, 0) = 0) 
+0

Ich bekomme immer noch einen "ungültigen Prozeduraufruf" -Fehler. Ich vermute immer noch, dass ich die falsche Bibliothek benutze, aber ich habe keine Ahnung, welche. Früher gab es einen Bereich, in dem man das, was sie "Referenzen" nennen, abhakte, aber ich sehe es nirgendwo. – Bulrush

+0

das ist sowieso ein guter Haken und du solltest deinen Code trotzdem anpassen, denn 'NZ()' wird mit deinen Strings und Textboxen standardmäßig eine _zero-length string_ und nicht eine '0' wie erwartet liefern. Was deine Antwort in meinem anderen Kommentar betrifft, würde ich gerne sehen, wie du dein Submitglied nennst, es ist egal, ob es OO ist oder nicht. Die Erklärung könnte da sein und nicht hier. Wenn Sie ein Referenzproblem hatten, würden beim Kompilieren Fehler auftreten. Es sieht so aus, als ob der Fehler zur Laufzeit auftritt und ich habe das Gefühl, dass es etwas mit deinen Argumenten zu tun hat. –

+0

Sie können die alternative Syntax versuchen, die ich hinzugefügt habe. _Referenzen_ finden Sie unter Menü Extras in den Codefenstern. – Gustav