PDA

Vollständige Version anzeigen : Anzahl Datensätze mit Bedingung


heimon
26.10.2003, 09:32
Guten Tag, ich habe eine Frage, die mich zur Verzweiflung treibt, für Euch aber vielleicht ein Anfängerproblem ist. Ich benutze Acess 2000 und habe eine Kontakt-Datenbank erstellt. Eine Tabelle enthält die Kunden, eine andere die Kontakte. Nun möchte ich in dem Formular, mit dem man neue Kontakte eingeben kann, ein Feld, in dem die Anzahl der bisherigen Kontakte dieses einen Kunden (also eine Teilmenge der Kontakttabelle) angezeigt wird. Ich habe eine Abfrage erstellt (die erste meines Lebens!), die auch tatsächlich diese Berechnung anstellen kann. Wenn ich aber nun das entsprechende Formularfeld im Formular "Kontakt-Eingabe" auf diese Abfrage beziehen möchte, erscheint eine Fehlermeldung. Was mache ich falsch? Vielen Dank!

Pianeur
26.10.2003, 09:36
Was für eine Fehlermeldung ist das? Es gibt sehr viele... (leider) :-(

heimon
26.10.2003, 09:45
Ich habe das Problem, dass ich im Büro nicht auf MOF zugreifen kann, daher muss ich die Fehlermeldung aus dem Kopf zitieren, aber sinngemäß heißt es, dass Formular und Abfrage auf den gleichen Daten beruhen würden und dass deshalb dies nicht zulässig sei... Tut mir leid, morgen könnte ich den genauen Text der Fehlermeldung nachliefern.

Jürgen32
26.10.2003, 09:54
hallo heimon,
ich würde ein Listenfeld auf Basis deiner Abfrage zur Errechnung der bereits Vorhanden Kontakte erstellen.
Dann würde ich in dem Eingabeformular, im Feld, in dem du die Namen der Kunden eingibst, nach aktualisierung den code

me.listenfeld_mit_den_bisherigen_Kontakten.requery

eingeben .
dann solltest es klappen

mfg

Jürgen

Johnny Loser
26.10.2003, 10:23
Also, wenn ich Dich richtig verstehe, willst Du ausschließlich "ein" Feld, in dem die "Anzahl" der Kontakte dargestellt wird, oder?

Hierfür eignet sich am besten die DCount-Funktion.

Erstelle ein TextFeld und schreibe als Steuerelementinhalt (an Deine Tabellen- und Feldnamen angepaßt):

=DCount("*"; "TabelleKontakte"; "KundenNr=" & Me!KundennummerFeld)
TabelleKontakte: Der Name der Tabelle, wo Deine Kontakte drinstehen
KundenNr: Der Name des Feldes in der Tabelle, welches die Kundennummer enthält
Me!KundennummerFeld: Das Feld in Deinem Formular, welches die Kundennummer enthält

heimon
26.10.2003, 13:00
Ersmal vielen Dank! Ich werde morgen alles ausprobieren und dann berichten. Euer Heimon

heimon
27.10.2003, 20:37
Ich habe mal einen Screenshot der betreffenden Datenbank bzw. des Formulars angehängt. Die Kunden sind Patienten und die Kontakte sind "Verlaufsdaten". Man soll nun im Unterformular bei "Kontakt-Nr" die Anzahl der bisherigen Verlaufsdatensätze sehen, also z.B. dass jemand schon 12x in der Praxis war. Die sichtbaren Daten sind frei erfunden ;-))
Warum kann ich hier nicht einfach das Ergebnis der Abfrage anzeigen, die aus Pat-Nr und Verl-Nr die Verlaufsdatensatzanzahl korrekt berechnet?

Muchas Gracias!

Johnny Loser
27.10.2003, 21:01
So sollte es eigentlich gehen:

=DCount("*"; "TabelleKontakte"; "[Pat-Nr]=" & Me.Parent.PatNrFeld])

TabelleKontakte: Der Name der Tabelle, wo Deine Kontakte drinstehen
Pat-Nr: Der Name des Feldes in der Tabelle, welches die Patientennummer enthält
Me.Parent.PatNrFeld: Das Feld in Deinem Formular, welches die Patientennummer enthält

heimon
28.10.2003, 21:36
...und wo muss ich diesen Code einfügen?

MfG,

Heimon

Johnny Loser
29.10.2003, 06:01
In die Eigenschaft "Steuerelementinhalt" Deines Textfeldes im Unterformular...

heimon
29.10.2003, 20:45
Hi,

ich habe alles entsprechend eingefügt und erhalte die Fehlermeldung: "Objekt falsch definiert oder, oder (...) oder Anführungszeichen vergessen" Habe den Code aber identisch eingefügt. Kann es daran liegen, dass "Pat-Nr" in der Tabelle "Verlaufsdaten" wiederum Daten aus einer anderen Tabelle, nämlich "Stammdaten", bezieht (mittels Nachschlageassistent definiert)?

Gruß,


Heimon

Johnny Loser
29.10.2003, 20:53
Um die Sache schneller zum Ende zu bringen, könntest Du Deine DB - auszugsweise - hier einstellen?

Falls zu groß oder zu kompliziert findest Du meine mail-Adresse unter meinem Namen...