DomAnzahl

…ich werd porös !

Hallo Leute,

Ich benutze Access 2003 und erstelle einen Bericht.
In diesem Bericht soll die Anzahl der Monate erscheinen, die in der Tabelle Ordervolumen in der Spalte Orderanzahl nicht 0 haben und In der (Text-)Spalte Monat einen der Einträge 'Januar 2011;'Februar 2011…;‚Dezember 2011‘") haben.

Ich habs versucht mit:
=DomAnzahl("[Orderanzahl]";„Ordervolumen“;"[Monat] = ‚Januar 2011‘;'Februar 2011;‚März 2011‘;‚April 2011‘;‚Mai 2011‘;‚Juni 2011‘;‚Juli 2011‘;‚August 2011‘;‚September 2011‘;‚Oktober 2011‘;‚November 2011‘;‚Dezember 2011‘")

Das war aber ein Schuß in den Ofen…
Kann jemand helfen ?

Gruß Christian

Hallo Christian,

…ich werd porös !

Deine DB is eher porös, um nicht zu sagen löchrig…

Willst Du wirklich nicht das Ding von Grund auf kurieren? Sonst wirst Du Dein Leben lang an den Symptomen herumdoktern…

Sorry, aber ich habe so langsam Angst um Deine Nerven… :wink:

Ich benutze Access 2003 und erstelle einen Bericht.

In diesem Bericht soll die Anzahl der Monate erscheinen, die
in der Tabelle Ordervolumen in der Spalte Orderanzahl nicht 0
haben und In der (Text-)Spalte Monat einen der Einträge
'Januar 2011;'Februar 2011…;‚Dezember 2011‘") haben.

hier müßte man eher sagen:
die Anzahl der Datensätze , die in Orderanzahl nicht 0 (Wert 0 oder auch „leer“ ?? ) und in Feld „Monat“ eine der angegebenen „Monatsangaben“ beinhalten.

Warum in Gottes Namen eine TEXT-Spalte mit einem „Monat“ und dazu auch noch die Jahreszahl??

Was machst Du spätestens Anfang nächsten Jahres damit?

Ich habs versucht mit:

=DomAnzahl("[Orderanzahl]";„Ordervolumen“;"[Monat] = ‚Januar
2011‘;'Februar 2011;‚März 2011‘;‚April 2011‘;‚Mai 2011‘;‚Juni
2011‘;‚Juli 2011‘;‚August 2011‘;‚September 2011‘;‚Oktober
2011‘;‚November 2011‘;‚Dezember 2011‘")

Das war aber ein Schuß in den Ofen…

Naja, dem kann ich nicht widersprechen…

(Bei „Februar 2011“ fehlt ein Hochkomma
„Monat“ als Tabellenname , weil reserviertes Wort, DRINGEND vermeiden!)

etwa so:

=DomAnzahl("*";„Ordervolumen“;"[Monat] in (‚Januar
2011‘;‚Februar 2011‘;‚März 2011‘;‚April 2011‘;‚Mai 2011‘;‚Juni
2011‘;‚Juli 2011‘;‚August 2011‘;‚September 2011‘;‚Oktober
2011‘;‚November 2011‘;‚Dezember 2011‘) and nz(Orderanzahl,0) 0 ")

Viele Grüße vom Bodensee
Franz, DF6GL

PS: was ist eigentlich aus dem „VBA-Klick auf die Schaltfläche“ geworden??

Hallo Christian,

Hallo Franz

Deine DB is eher porös, um nicht zu sagen löchrig…

stimmt !

Willst Du wirklich nicht das Ding von Grund auf kurieren?
Sonst wirst Du Dein Leben lang an den Symptomen
herumdoktern…

ist eigentlich gar nicht meine Aufgabe. Wenn der Chef mal Geld in die Hand nehmen würde, gibt es Leute wie Dich die sich über einen neuen Auftrag freuen. :wink:

So lange soll der Chef die Fr… halten !

Sorry, aber ich habe so langsam Angst um Deine Nerven… :wink:

Danke für die Fürsorge

hier müßte man eher sagen:

die Anzahl der Datensätze , die in Orderanzahl nicht 0 (Wert
0 oder auch „leer“ ?? ) und in Feld „Monat“ eine der
angegebenen „Monatsangaben“ beinhalten.

stimmt genau ! - (Wert 0 oder „leer“)

Warum in Gottes Namen eine TEXT-Spalte mit einem „Monat“ und
dazu auch noch die Jahreszahl??

Da soll der Anwender nur eine Eingabe machen daher gebe ich Monat vor !

Was machst Du spätestens Anfang nächsten Jahres damit?

gut erkannt ! Wir haben sozusagen „Anfang nächsten Jahres“ !
deswegen musste auch gaaanz schnell die Jahreszahl dazu.

(Bei „Februar 2011“ fehlt ein Hochkomma

hab ich nachgesetzt !

„Monat“ als Tabellename , weil reserviertes Wort, DRINGEND
vermeiden!)

Ok ! - umbenannt in „Zeitraum“

sieht jetzt so aus:

=DomAnzahl("*";„Ordervolumen“;"[Zeitraum] in (‚Januar
2011‘;‚Februar 2011‘;‚März 2011‘;‚April 2011‘;‚Mai 2011‘;‚Juni
2011‘;‚Juli 2011‘;‚August 2011‘;‚September 2011‘;‚Oktober
2011‘;‚November 2011‘;‚Dezember 2011‘) and nz(Orderanzahl,0) 0 ")

da passt aber etwas noch nicht ! - magst Du noch einmal drüberschauen ?

PS: was ist eigentlich aus dem „VBA-Klick auf die
Schaltfläche“ geworden??

ganz einfach: ich habe sämtlichen Code aus dem Sub auf dem anderen Formular einfach rüberkopiert und in dieses Formular einfach nochmals eingesetzt.

nu funktionierts !

Gruß aus Kuddewörde (bei Büttenwarder ums Eck)

Christian

Hallo,
naja, kann ja nur über die Syntax schauen, und da fällt mir nichts weiter auf…

PS: doch: ein Semikolon muß bei nz(Orderanzahl ; 0) stehen…

unter der Voraussetzung, dass:

– „Zeitraum“ ein Feld mit Datentyp Text in der Tabelle „Ordervolumen“ ist
– in „Zeitraum“ genau einer der Monatsbezeichnungen (und auch genauso geschrieben!) steht
– Orderanzahl ein Feld mit Datentyp Long in Tabelle „Ordervolumen“ ist

WO steht denn der Ausdruck?

Der Ausdruck steht auf einem Access Bericht in einem Textfeld und gilt dort als Devisor um einen durchschnitt zu ermitteln.

Ich brauche also die Anzahl der Monate wo bereits eine Angabe über die Orderanzahl existiert, um eine Quote zu errenen.

bisher steht dort immernoch: „Fehler#“

obwohl ich schon die Zeitraum Bezeichnungen (‚Januar 2011‘;…)alle mit kopie an paste überschrieben habe um bei der Schreibweise keine Fehler zu machen.

Das mit dem Format meinst Du sicherlich als Long integer - oder ?

Christian

Hallo,

Der Ausdruck steht auf einem Access Bericht in einem Textfeld
und gilt dort als Devisor um einen durchschnitt zu ermitteln.

in welchem Bereich?

Ich brauche also die Anzahl der Monate wo bereits eine Angabe
über die Orderanzahl existiert, um eine Quote zu errenen.

bisher steht dort immernoch: „Fehler#“

obwohl ich schon die Zeitraum Bezeichnungen (‚Januar
2011‘;…)alle mit kopie an paste überschrieben habe um bei
der Schreibweise keine Fehler zu machen.

Das mit dem Format meinst Du sicherlich als Long integer -
oder ?

Nein, ich meine DATENTYP Long Integer. (Format und Datentyp sind zwei eklatant unterschiedliche Dinge.)

Erstell mal für den Bericht eine Ereignisprozedur „Beim Öffnen“ und schreib dort hinein (nur Msgbox…)

Sub Report_Open (…)

Msgbox DCout("*",„Ordervolumen“,"[Zeitraum] in (‚Januar
2011‘,‚Februar 2011‘,‚März 2011‘,‚April 2011‘,‚Mai 2011‘,‚Juni
2011‘,‚Juli 2011‘,‚August 2011‘,‚September 2011‘,‚Oktober
2011‘,‚November 2011‘,‚Dezember 2011‘) and nz(Orderanzahl,0) 0 ")

End Sub

Neben Msgbox setzt Du einen Haltepunkt.

Wenn der Bericht geöffnet wird, bleibt der Code bei der Msgbox stehen.

Im Direktfenster könntest Du nun auch „spielen“ und mit

?DCout("*",„Ordervolumen“,"[Zeitraum] in (‚Januar
2011‘,‚Februar 2011‘,‚März 2011‘,‚April 2011‘,‚Mai 2011‘,‚Juni
2011‘,‚Juli 2011‘,‚August 2011‘,‚September 2011‘,‚Oktober
2011‘,‚November 2011‘,‚Dezember 2011‘) and nz(Orderanzahl,0) 0 ")

(Fragezeichen beachten!)

den Rückgabewert de Dcount-Funktion testen. Dabei würde ich erste das Kriterium entfernen und nacheinander wieder aufbauen, um die eigentliche Ursache zu finden:

?DCout("*",„Ordervolumen“)

sollte die Anzahle der DS insgesamte liefern

?DCout("*",„Ordervolumen“,"[Zeitraum] in (‚Januar
2011‘))

und dises nur die, die Januar 2011 im Feld Zeitraum aufweisen.

Viele Grüße vom Bodensee
Franz, DF6GL

…meine Rumprobiererei hat ergeben,

daß zwar die erste Bedingung funktioniert, aber die zweite nicht:

=DomAnzahl("*";„Ordervolumen“;„nz(Orderanzahl,0)> 0“)

funktioniert !

=DomAnzahl("*";„Ordervolumen“;"[Orderanzahl] 0" Und „[Zeitraum] =(‚Januar 2011‘;‚Februar 2011‘)“)

ergibt aber nicht zwei !- sondern alle Einträge !

Vielleicht hilft das ja ?

Christian

in welchem Bereich?

im Detail-Bereich

Nein, ich meine DATENTYP Long Integer. (Format und
Datentyp sind zwei eklatant unterschiedliche Dinge.)

hab ich verstanden - und ist wo einzustellen ?

Erstell mal für den Bericht eine Ereignisprozedur „Beim
Öffnen“ und schreib dort hinein (nur Msgbox…)

Erledigt !

Neben Msgbox setzt Du einen Haltepunkt.

soweit so gut

Wenn der Bericht geöffnet wird, bleibt der Code bei der
Msgbox stehen.

Jooop !

Im Direktfenster könntest Du nun auch „spielen“ und mit

Nein ! - Meldung: Sub oder Funktion nicht definiert !

(Fragezeichen beachten!)

mach ich !

den Rückgabewert de Dcount-Funktion testen. Dabei würde ich
erste das Kriterium entfernen und nacheinander wieder
aufbauen, um die eigentliche Ursache zu finden:

Verstehe, also langsam Kriterium für Kriterium aufbauen und schauen wo´s hackt !

?DCout("*",„Ordervolumen“)

Sub oder Funktion nicht definiert !

Christian

Hi Christian,

?DCout("*",„Ordervolumen“)

Sub oder Funktion nicht definiert !

das ist ein Tippfehler und soll DCount heißen.

In solchen Fällen einfach mal auf die F1 trampeln und „Dcout“ Zeichen für Zeichen eingeben, dann füllt sich das Fenster mit den gefundenen Begriffen.

Gruß Ralf

Hallo,

das Ding heißt DCount…

sorry für den Tippfehler…

=DomAnzahl("*";„Ordervolumen“;"[Orderanzahl] **0 AND [**Zeitraum] IN (‚Januar 2011‘;‚Februar 2011‘)")

Hallo,

vielen Dank. hab ich versucht, läuft trotzdem nicht.

Was aber Läuft, ist folgendes:

=DomAnzahl("[Orderanzahl]";„Ordervolumen“;"[Zeitraum] = 'Januar 2011’and nz(Orderanzahl,0) 0 ")

und liefert „1“.

es muss doch möglich sein, weitere Argumente einzupflanzen
wie ‚Februar 2011‘

das sollte dann 2 liefern. Tut es aber nicht !

Sondern es liefert #Fehler

wie kann das sein ?

Christian

Hallo,

habe doch gesagt, dass die ganze Konstruktion Murks ist…

Syntaktisch so (und wie gehabt):

=DomAnzahl**("*";„Ordervolumen“;"[Zeitraum] IN (‚Januar 2011‘,‚Februar 2011‘)** and nz(Orderanzahl,0) 0 ")

wegen mir auch:

=DomAnzahl("*";„Ordervolumen“;"([Zeitraum] = ‚Januar 2011‘ OR [Zeitraum]=‚Februar 2011‘ OR [Zeitraum]=‚März 2011‘ OR …) and nz(Ord eranzahl,0) 0 ")

wenn in „Zeitraum“ jeweils nur
Januar 2011
oder
Februar 2011
usw. steht

Hallo Franz,

vielen, vielen Dank mal wieder ich hab es mit ein wenig „rumprobiererei“ und Deiner Steilpass-Vorlage hinbekommen.

Jetzt ist es genau so, wie ich es brauche !

Der Code lautet nun wie folgt:

=DomAnzahl("[Orderanzahl]";„Ordervolumen“;"([Zeitraum] = ‚Januar 2011‘ OR [Zeitraum] = ‚Februar 2011‘ OR [Zeitraum] = ‚März 2011‘ OR [Zeitraum] = ‚April 2011‘ OR [Zeitraum] = ‚Mai 2011‘ OR [Zeitraum] = ‚Juni 2011‘ OR [Zeitraum] = ‚Juli 2011‘ OR [Zeitraum] = ‚August 2011‘ OR [Zeitraum] = ‚September 2011‘ OR [Zeitraum] = ‚Oktober 2011‘ OR [Zeitraum] = ‚November 2011‘ OR [Zeitraum] = ‚Dezember 2011‘) and nz(Orderanzahl,0) 0 ")

Hartnäckigkeit zahlt sich eben doch aus.

Viele liebe Grüße aus Kuddewörde (bei Büttenwarder um´s Eck)
Christian

Hallo Ralf,

auch Du hast Deinen Teil zur Lösung des Problems beigetragen.
Dafür gebührt Dir ebenfallst mein ausdrücklicher Dank.
Vielen, vielen Dank mal wieder ich hab es mit ein wenig „rumprobiererei“ hinbekommen.

Jetzt ist es genau so, wie ich es brauche !

Der Code lautet nun wie folgt:

=DomAnzahl("[Orderanzahl]";„Ordervolumen“;"([Zeitraum] = ‚Januar 2011‘ OR [Zeitraum] = ‚Februar 2011‘ OR [Zeitraum] = ‚März 2011‘ OR [Zeitraum] = ‚April 2011‘ OR [Zeitraum] = ‚Mai 2011‘ OR [Zeitraum] = ‚Juni 2011‘ OR [Zeitraum] = ‚Juli 2011‘ OR [Zeitraum] = ‚August 2011‘ OR [Zeitraum] = ‚September 2011‘ OR [Zeitraum] = ‚Oktober 2011‘ OR [Zeitraum] = ‚November 2011‘ OR [Zeitraum] = ‚Dezember 2011‘) and nz(Orderanzahl,0) 0 ")

Hartnäckigkeit zahlt sich eben doch aus.

Viele liebe Grüße aus Kuddewörde (bei Büttenwarder um´s Eck)
Christian