Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Paulemeister am Mai 08, 2015, 14:17:11

Titel: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: Paulemeister am Mai 08, 2015, 14:17:11
Servus zusammen,

Ich habe folgendes Problem. Ich würde gerne tagesbezogen angezeigt bekommen, wie oft eine Kundenfirma vorkommt. Als Beispiel zum Bild:

Ich würde gern, das neben den Kundenfirmen in der Spalte die jeweilige Anzahl erscheint. Bei "B" eine 3, bei "A" eine 6, usw.

Dies muss aber tagesbezogen klappen, da sich die Anzahl von Tag zu Tag ändert.

Ich brauche die Anzahl für eine spätere bedingte Formatierung.

Danke Schon mal

Gruß

Paulemeister
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: MaggieMay am Mai 08, 2015, 14:21:26
Hi,

das kannst du ganz einfach mit einer gruppierten Abfrage hinbekommen:

Select dat_Aktiv, KDF_AktivSchluessel, Count(*) As anz_Aktiv
From tabelle
Group By dat_Aktiv, KDF_AktivSchluessel
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: Paulemeister am Mai 08, 2015, 14:33:09
Ja in der Gruppierten Abfrage kann ich aber keine Eintragungen mehr vornehmen.

Ich müsste mir die Anzahl anzeigen lassen können und trotzdem Änderungen in der Abfrage vornehmen dürfen.

Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: MaggieMay am Mai 08, 2015, 14:44:40
Dann versuche es mal hiermit:

Select dat_Aktiv, KDF_AktivSchluessel, DCount("*","","dat_Aktiv=" & CDbl(dat_Aktiv) & " AND KDF_AktivSchluessel='" & KDF_AktivSchluessel & "'") As anz_Aktiv
From tabelle


Das liefert aber wieder jeden einzelnen Datensatz.
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: DF6GL am Mai 08, 2015, 17:15:43
Hallo,
Zitat
Ich müsste mir die Anzahl anzeigen lassen können und trotzdem Änderungen in der Abfrage vornehmen dürfen.

Was ist der Sinn davon ?


(Traue nie einer Statistik, die du nicht selber gefälscht hast.)
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: Paulemeister am Mai 18, 2015, 09:15:12
Servus ihr Zwei,

Sorry war eine Woche im Urlaub und konnte dort nicht antworten. Also hier meine neusten Fortschritte:

@MaggieMay:
Dein Vorschlag verursacht leider einen Ausdruck "#Fehler". Ich habe dir mal eine gezipte Beispieldatenbank angehangen. Wie gesagt ich möchte gerne angezeigt bekommen, wie oft am 11.05.2015 die jeweiligen Buchstaben vorkommen, wie oft am 12.05.2015 die Buchstaben vorkommen usw.
Danke Schon mal.

@DF6GL:
Ich möchte gerne eine bedingte Formatierung über die Abfrage legen, die sagt, wenn der Buchstabe mehr als vier mal vorkommt, bilde ihn bitte in kursiver Schrift ab, damit der Nutzer eine andere Eingabe tätigt, als wenn die Anzahl kleiner gleich vier wäre. Also eine Art visuelle Unterstützung für den Anwender. Er muss aber trotzdem Eingaben in der Abfrage vornehmen können.

Gruß
Der Paulemeister
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: Wurliwurm am Mai 18, 2015, 09:51:48
Zitat von: Paulemeister am Mai 08, 2015, 14:33:09Ich müsste mir die Anzahl anzeigen lassen können und trotzdem Änderungen in der Abfrage vornehmen dürfen.

Das geht aber nicht. Außer vielleicht Du kopierst die Abfragedaten in eine neue Tabelle.

Warum nimmst Du nicht Excel dafür?
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: DF6GL am Mai 18, 2015, 10:14:23
Hallo,

es ist so wie so nicht zielführend, bzw. unsinnig , in einer Tabelle/Abfrage Eingaben zu tätigen und Anzeige-Formatierungen einbauen zu wollen.


Nimm ein Formular zur Anzeige/Pflege und baue dort eine Bedingte Formatierung ein.
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: Paulemeister am Mai 18, 2015, 10:50:30
@DF6GL:

Ja das mache ich doch über Formulareigenschaften --> Datensatzquelle usw. Das ist doch aber nichts anderes als ein Abfragegenerator, oder? Jedenfalls fragt mich MS-Access bei der Einstellung der Datensatzherkunft, ob ich den Abfrage-Generator starten will.

Eine separate Abfrage verwende ich dafür nicht, aber bei der Einstellung für das Formular wäre ein Feld nicht verkehrt, die mir die oben erwähnte Anzahl anzeigen würde, damit ich die Bedingte Formatierung drüberlaufen lassen kann. Oder kann ich in der bedingten Formatierung schon sagen, dass tagesbezogen die Kundenfirmen gezählt werden sollen?

Gruß

Paulemeister
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: MaggieMay am Mai 18, 2015, 11:15:25
Hi,
Zitat von: Paulemeister am Mai 18, 2015, 09:15:12Dein Vorschlag verursacht leider einen Ausdruck "#Fehler".
sorry, ich hatte vergessen, den Tabellennamen beim 2. Parameter von DCount einzufügen.

Zitat von: Wurliwurm am Mai 18, 2015, 09:51:48
Zitat von: Paulemeister am Mai 08, 2015, 14:33:09Ich müsste mir die Anzahl anzeigen lassen können und trotzdem Änderungen in der Abfrage vornehmen dürfen.
Das geht aber nicht.
Bei meinem Vorschlag geht das durchaus.
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: DF6GL am Mai 18, 2015, 11:55:51
Hallo,
der Abfragegenerator (Abfrageentwurf) erzeugt nur eine Abfrage, bzw. SQL-String für die Datenherkunft des Forms. Es bleibt aber nach wie vor eine Abfrage, und die muss aktualisierbar sein (wenn die Daten im Form editierbar sein sollen), was bei einer Gruppierung oder Berechnung in der Abfrage nicht mehr der Fall ist.

Die Dcount()-Funktion ist durchaus in der Bedingten Formatierung ("Ausdruck ist..") zur Berechnung der Anzahl verwendbar. Die Performance bei einer solchen Methode lassen wir jetzt mal außer Acht..
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: Paulemeister am Mai 18, 2015, 12:57:56
@MaggieMay:

Es funktioniert. Ich danke dir vielmals. Das mit dem Tabellennamen hätte ich auch sehen müssen, aber meine SQL-Fähigkeiten sind echt beschränkt. Könntest du mir zum Verständnis kurz erläutern, was ich mit dem Code vorgebe?

Also ich sage ihm mit DCount, dass er in einer Domäne zählen soll, oder wie? Und mit dem ersten übergebenen Parameter "*" sage ich, bitte suche in der gesamten Datenbank? Kann ich da auch was anderes einsetzen als "*"? Weil das kostet doch bestimmt viel Leistung, die gesamte Domäne durchsuchen zu lassen?
Der zweite Parameter erschließt sich mir nicht ganz. Ist das eine Art Spezifizierung, in welcher "Unterdomäne" gesucht werden soll?
Der dritte und letzte Parameter ist natürlich am spannendsten. beschreibe ich damit ein Kriterium? Und wenn ja, wo ist der Unterschied zwischen dem ausgeschriebenem AND und dem &?? Und am meisten verwirren mich die '. Die kenne ich nur zum Auskommentieren bei VBA.

Sorry für die viele Fragerei, aber ich würde gerne wissen, was ich da so treibe.

@DF6GL:

Da meine zu entwickelnde Datenbank mit vielen Daten arbeiten muss, wird die Performance-Frage irgendwann eine Rolle spielen. Wie könnte ich den unter besseren Performanceaussichten mein Problem deiner Meinung nach beheben? Ich bin immer offen für neues, auch wenn es jetzt reibungslos klappt.

Grüße

Paulemeister
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: MaggieMay am Mai 18, 2015, 13:22:32
Ich will mal versuchen die vielen Fragen zu beantworten...
Zitat von: Paulemeister am Mai 18, 2015, 12:57:56Also ich sage ihm mit DCount, dass er in einer Domäne zählen soll, oder wie?
Kann man so sagen, wobei unter Domäne (=2. Parameter) eine Tabelle oder Abfrage zu verstehen ist.
ZitatUnd mit dem ersten übergebenen Parameter "*" sage ich, bitte suche in der gesamten Datenbank?
Nein, nur in der ganzen Tabelle oder Abfrage.
ZitatKann ich da auch was anderes einsetzen als "*"?
Du könntest auch einen Feldnamen angeben, aber "*" ist beim Zählen völlig OK.
ZitatDer zweite Parameter erschließt sich mir nicht ganz.
s.o.
Zitatbeschreibe ich damit ein Kriterium?
So ist es, das hätte man aber auch in der Access-Hilfe erfahren können.
Zitatwo ist der Unterschied zwischen dem ausgeschriebenem AND und dem &?
Das AND ist ein Konnektor für mehrere Kriterien, entsprechend der Syntax im Kriterium (=WHERE-Part) einer SQL-Abfrage.
Das "&" ist ein String-Konnektor, wie er auch im VBA-Code eingesetzt wird.
ZitatUnd am meisten verwirren mich die '.
Die Hochkommata kann man innerhalb eines SQL-Strings ersatzweise für Gänsefüßchen einsetzen.
Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: DF6GL am Mai 18, 2015, 13:30:20
Hallo,


zu der an mich gestellten Frage:

--Indizierung der Tabellenfelder optimieren.
--Die Dcount()-Funktion durch eine eigengeschriebene Funktion ersetzen, die einen Recordset mit "Select Count(*) from tblTabelle where....." verwendet.

--Am Besten auf solchen "Spielereien" (Kursive Schrift) mit der Bedingten Formatierung , zumindest in Endlosforms verzichten.

Titel: Re: tagesbezogen Anzahl von Kundenfirmen zählen
Beitrag von: ebs17 am Mai 18, 2015, 23:32:05
Zitataber ich würde gerne wissen, was ich da so treibe
Nun, etwas begleitendes Eigenstudium (Access-Hilfe, VBA-Hilfe, Bücher, Tutorials, Google-Recherchen) würde nicht schaden.

Ergänzend zur Antwort von Franz: Es ist ein Grundfehler, mit einem Formular / einer Abfrage alles lösen zu wollen. Erbe aus Excel? Dort kann man in einem Blatt eintragen, ändern, rechnen, ansehen, formatieren und auch gleich ausdrucken.

Datenbank geht ein wenig anders. Dafür ist es in Access sehr simpel, ein (zusätzliches) Formular oder eine zusätzliche Abfrage zu erstellen und diesen dann eben spezielle andere Aufgaben zu geben.