Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Frage Entwicklung Datenbanken

Mitglied: manuel-r

manuel-r (Level 3) - Jetzt verbinden

05.10.2006, aktualisiert 09.10.2006, 10678 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
gelöst Access 2010 Filter zurücksetzen (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
Access Datenbank wie am einfachsten Datensätze aufbereiten (5)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Access 2010 SQL Tabellen Datensätze einfügen (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Neue Wissensbeiträge
Windows Installation

Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen

(8)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Datenschutz

Gefährdeter Datenschutz: Firefox löscht lokale Datenbanken nicht

Information von BassFishFox zum Thema Datenschutz ...

Firewall

PfSense OpenVPN beschleunigen

Tipp von Dobby zum Thema Firewall ...

Utilities

CCleaner 5.33 mit Malware infiziert

(27)

Information von SeaStorm zum Thema Utilities ...

Heiß diskutierte Inhalte
Utilities
CCleaner 5.33 mit Malware infiziert (27)

Information von SeaStorm zum Thema Utilities ...

Festplatten, SSD, Raid
gelöst Problem mit DELL 815R Server und Windows Bluescreen (24)

Frage von Leo-le zum Thema Festplatten, SSD, Raid ...

Windows Systemdateien
Windows bootet nicht mehr Fehlermeldung 0xc0000098 (19)

Frage von franzgoerlich zum Thema Windows Systemdateien ...

Windows Netzwerk
Dateien mit Intelligenz per GPO ins Programmverzeichnis (14)

Frage von erwin.t zum Thema Windows Netzwerk ...