Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Access 2003: In Unterabfrage Ergebnisse filtern mit Wert aus aktuellem Datensatz

Mitglied: manuel-r

manuel-r (Level 3) - Jetzt verbinden

05.10.2006, aktualisiert 09.10.2006, 10774 Aufrufe, 7 Kommentare

In Datensatzherkunft (SELECT...FROM...WHERE) auf einen Wert im aktuellen Datensatz verweisen

Ich erstelle gerade eine Access Datenbank. Darin gibt es eine Tabelle PERSONAL, eine Tabelle FIRMEN und eine Tabelle STUNDEN.
PERSONAL hat den (vereinfachten) Aufbau PersNr,Firma,Name,Vorname
FIRMEN hat den (vereinfachten) Aufbau Firma, Anschrift, Kontakt
STUNDEN hat den (vereinfachten) Aufbau Datum,Firma,PersNr,Tätigkeit,Stunden

Soweit so gut. In STUNDEN kann im Datensatz über eine Unterabfrage also die betreffende Firma ausgewählt werden. Für die Auswahl der Personalnummer soll jetzt eine Unterabfrage auf die Tabelle PERSONAL so gefiltert werden, dass als Rückgabewerte aus der Gesamtmenge nur diejenigen vorkommen, die ebenfalls den Wert von Firma beinhalten.
Hintergrund ist der, dass es in den zu erfassenden Firmen und Mitarbeitern durchaus identische Personalnummern geben kann.

Wenn ich die Abfrage fest verdrahtet als SELECT Personal.Personalnummer, Personal.Name, Personal.Vorname FROM Personal WHERE Firma="FIRMENNAME" ORDER BY [Name], [Vorname], [Personalnummer] eingebe, dann funktioniert dass einwandfrei. Aber anstelle von FIRMENNAME soll dort ja der Wert gesetzt werden, den ich (beim erfassen einen Satzes) ein Feld vorher unter Firma eingesetzt habe.

Kann mir da jemand vielleicht auf die Sprünge helfen? Danke.
Mitglied: AndreasHoster
05.10.2006 um 16:13 Uhr
Äh, schwierig, weil mir nicht klar ist, wie Du was machen willst.
Was ist bei Dir eine Unterabfrage? Ein Unterformular in einem Formular?
Und Dein SQL Beispiel geht nur auf eine Tabelle. Was meinst Du mit Feld vorher?

Also wenn Du in einer Abfrage die zwei Tabellen verknüpft haben willst, kann man das so machen:
SELECT Personal.PersNr, Personal.Firma, Personal.Name, Stunden.Datum, Stunden.Stunden
FROM Personal INNER JOIN Stunden ON (Personal.PersNr = Stunden.Persnr) AND (Personal.Firma = Stunden.Firma)
Damit wird so verknüpft, daß sowohl die Firma als auch die Personalnummer übereinstimmen muß.
Falls Du was anderes wissen willst, versuchs nochmals zu beschreiben.
Bitte warten ..
Mitglied: manuel-r
07.10.2006 um 17:59 Uhr
Ok, ich versuche mal etwas genauer/ausführlicher zu werden (sorry, dass ich erst jetzt poste)

Ich habe also die drei Tabellen FIRMEN, PERSONAL und STUNDEN in dem oben genannten Aufbau. Beispieldaten könnten jeweils so aussehen:

Tab FIRMEN:
ABC,ABC GmbH,12345,Dumsbach
DEF,DEF OhG,23456 Dödelsdorf
GHI,GHI GbR,34567 Irgendwo

Tab PERSONAL
1000,ABC,Müller,I.
1001,ABC,Schmidt,H.
1000,DEF,Meier,C.
1000,GHI,Mayer,X.
1001,GHI,Mueller,M.
1002,GHI,Schmitz,A.

Jetzt kommt die komplizierte Tabelle STUNDEN. Dort soll also ein Datensatz erfasst werden. Es wird also im ersten Feld das Datum eingegeben (bspw. 07-10-2006) und dann im zweiten Feld die jeweilige Firma ausgewählt. Die geschieht mit einer Verknüpfung/Beziehung zur Tabelle FIRMEN (im Entwurf unter <Nachschlagen>). Als Beispiel soll GHI eingegeben werden. Bis hierhin alles kein Problem. Aber:
Im nächsten Feld (PersNr) sollen nur noch diejenigen Personen eingegeben bzw. vorgeschlagen werden, die in der PERSONAL-Tabelle mit Firma GHI gekennzeichnet sind. Im Beispiel also 1000,Mayer,X. 1001,Mueller,M. und 1002,Schmitz,A. Nicht auftauchen darf bspw. 1000,Müller,I.
Auch hierzu habe ich diverse Versuche mittels Entwurfsansicht und unter Nachschlagen dann diverse SQL-Abfragen unternommen.
Inzwischen bin ich dahinter gekommen, dass es so ohne weiteres nicht funktioniert, da der eben eingegebene Wert GHI noch nicht in der DB verewigt wurde. Ergo müsste der Sprung aus dem Feld Firma heraus in das Feld PersNr hinein zum automatischen Aktualisieren der DB führen.

Ich hoffe, dass war jetzt etwas eindeutiger.
Manuel
Bitte warten ..
Mitglied: Biber
07.10.2006 um 19:06 Uhr
Moin manuel-r,

dass es so ohne weiteres nicht funktioniert, da der eben eingegebene Wert GHI noch nicht in der DB verewigt wurde.
Das ist aber ein hausgemachtes Problem. Nichts spricht dagegen, den FIRMA-Datensatz mit "GHI" zu speichern, bevor Du das STUNDEN-Eingeben erlaubst bzw. beginnst.

Warum sollte keine Firma in der Datenbank existieren dürfen ohne Mitarbeiter oder kein Mitarbeiter ohne bereits erfasste Stunden?
Natürlich sollte der übergeordnete DS schon gespeichert sein.

Eine Integritätsbedingung "es darf kein DS in MA existieren, wenn keine dazugehörigen STUNDEN-Datensätze existieren" wäre doch DB-technisch und auch rein vom gesunden Menschenverstand her Unsinn.

Gruß
Biber
Bitte warten ..
Mitglied: manuel-r
07.10.2006 um 20:52 Uhr
Wir missverstehen uns.
In den Tabellen PERSONAL und FIRMEN ändert sich ja eigentlich nur sehr wenig. Nämlich nur dann, wenn es neues Personal oder neue Firmen gibt. Regelmäßige Erfassungen passieren nur in STUNDEN.
dass es so ohne weiteres nicht funktioniert, da der eben eingegebene Wert GHI noch nicht in der DB verewigt wurde
Dieser Satz bezog sich auf den aktuell in Bearbeitung befindlichen Datensatz in der Tabelle Stunden. Es geht einfach darum, dass ich in dem DS in einem Feld eine Angabe mache, die im nächsten Feld Filterbedingung für die möglichen Werte sein soll, wobei die möglichen Werte über Nachschlagen (also per SQL) aus einer Tabelle (PERSONAL) kommen.

Manuel
Bitte warten ..
Mitglied: Biber
07.10.2006 um 22:07 Uhr
Hm, manuel,
dann lass uns nochmal auf AndreasHosters Fragen zurückkommen: Wird das ganze denn in einem Formular mit Unterformular und Unter-Unterformular auf den Bildschirm gebracht oder versuchst Du, die Anzeige (und Neuerfassung) in einer Tabellenansicht, die auf einem SELECT-Statement basiert, abzufackeln?

Wenn Unterformulare und wenn dann in einigen Feldern "eingeschränkte Wertebereiche" (wie im Feld PERSNR in Abhängigkeit von FIRMA), dann:
wie sieht denn dann die ListBox aus? Irgendwas muss doch da schon vorhanden sein?

Gruß
Biber
Bitte warten ..
Mitglied: manuel-r
08.10.2006 um 13:52 Uhr
So, getreu dem Motto 'Ein Bild sagt mehr als 1000 Worte' habe ich jetzt mal einige Screenshots gemacht. Vielleicht wird jetzt klarer, wo ich hin will.

Hier die Entwurfsansicht von STUNDEN mit Details für Feld Firma...
http://www.fam-reindorf.de/misc/access-problem/acs-prob-2.jpg

...und hier mit Details für Feld Personalnummer
http://www.fam-reindorf.de/misc/access-problem/acs-prob-3.jpg

Bei der Eingabe von Datensätzen sieht das dann so aus für Firma...
http://www.fam-reindorf.de/misc/access-problem/acs-prob-4.jpg

...und so für Personalnummer
http://www.fam-reindorf.de/misc/access-problem/acs-prob-5.jpg

Beim Blick auf das letzte Bild wird jetzt vielleicht deutlich, was ich will. Es sollen hier nämlich nur die Personen aufgeführt werden, die als Merkmal die im Feld vorher gewählte Firma haben, dh. es dürfen nur die mit GHI möglich sein.

Manuel
Bitte warten ..
Mitglied: AndreasHoster
09.10.2006 um 09:43 Uhr
So wird das nicht gehen.
In der Tabellenansicht kannst Du nicht auf noch nicht gespeicherte Werte zugreifen.
In einem Formular mit etwas Programmierung ist es machbar, da kann man auf den Wert im Formular, selbst wenn er noch nicht gespeichert ist, zugreifen.
Im Moment habe ich nur nicht die Zeit es genauer auszuführen, wie man es in einem Formular macht. Poste ich später noch.
Bitte warten ..
Ähnliche Inhalte
Datenbanken

TSQL - Die Unterabfrage hat mehr als einen Wert zurückgegeben

Frage von CreamyCewieDatenbanken4 Kommentare

Hallöchen. Ich habe in meiner SQL-DB eine Select-Abrafe, in welcher ich eine Unterabfrage enthalten habe. Der Code sieht folgend ...

Datenbanken

MySQL - Aktuellste Datensätze aus Tabelle ermitteln

Frage von mabue88Datenbanken4 Kommentare

Hallo, ich habe eine Tabelle "aktionen_log" mit den folgenden Spalten In der Tabelle werden Aktionen von Benutzern abgelegt. Das ...

Datenbanken

Datensatz hinzufügen, nicht überschreiben Access

gelöst Frage von Dr.CornwallisDatenbanken19 Kommentare

Liebe Gemeinde, ich habe folgenden Code (bei Button klick): Wähle ich mit diesem Code einen anderen Wert im Kombifeld ...

Datenbanken

Access 2010 Filter zurücksetzen

gelöst Frage von Dr.CornwallisDatenbanken6 Kommentare

Liebe Gemeinde, wieder mal ein Access/VBA Problem: ich habe eine Abfrage, SQL Code: Diese Abfrage ist mit einem Formular ...

Neue Wissensbeiträge
Router & Routing

Endlich: Reines Kabel-TV Modem in D erhältlich !

Information von aqui vor 1 TagRouter & Routing9 Kommentare

Mit dem Technicolor TC4400-EU Modem sind nun auch Breitband Router ohne integriertes Modem oder Firewalls wie z.B. die pfSense ...

Netzwerkgrundlagen
The Illustrated TLS Connection
Information von Lochkartenstanzer vor 2 TagenNetzwerkgrundlagen

Moin, Unter findet man eine gelungene Erläuterung von TLS. Fördert sehr das verständnis darüber, was da passiert. lks

Windows 10

Zuverlässiger Remove-AppxProvisionedPackage Ausführen in W10-1803

Tipp von NetzwerkDude vor 4 TagenWindows 104 Kommentare

Moin, Remove-AppxProvisionedPackage hat in 1709 recht zuverlässig funktioniert, in 1803 ist es leider so das es gerne mail failed ...

LAN, WAN, Wireless
Erfahrung mit dem tplink eap115-wall
Erfahrungsbericht von fisi-pjm vor 4 TagenLAN, WAN, Wireless

Die Hintergründe Als ausgebildeter Fisi und ambitionierter "Hobby ITler" bin ich Netzwerktechnisch immer auf der Suche nach "schönen" Lösungen ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Netzwerklaufwerk verbinden nicht möglich
gelöst Frage von SteiniMNetzwerkmanagement13 Kommentare

Hallo Leute, ich bin neu hier und brauche eure Hilfe. Danke schon mal im Voraus. Ich habe folgendes Problem: ...

Apache Server
Webserver überlastet - wie entlasten?
Frage von coltseaversApache Server13 Kommentare

Hi ho, ich hoste aktuell für nen Kunden eine Webseite basierend auf Wordpress. Die Seite liegt auf einem Debian ...

Router & Routing
Endlich: Reines Kabel-TV Modem in D erhältlich !
Information von aquiRouter & Routing9 Kommentare

Mit dem Technicolor TC4400-EU Modem sind nun auch Breitband Router ohne integriertes Modem oder Firewalls wie z.B. die pfSense ...

Windows 10
Backup von NAS auf externe Festplatte in verschiedenen Räumen
Frage von kvnbucherWindows 109 Kommentare

Guten Tag Ich habe vor kurzem ein Synology NAS DS218+ installiert und sämtliche Daten von meinen Computern auf das ...