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, 10736 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

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 ...

Datenbanken

Access Checkbox mit Kombifeld und dann filtern

Frage von atomas42Datenbanken

Hallo, ich habe ein Kalkulationsprogramm unter Access geschrieben, was auch so weit für uns gut funktioniert. Ich würde jetzt ...

Neue Wissensbeiträge
Exchange Server

EDB to PST Konverter - Nicht Gratis aber mit vollem Umfang

Tipp von PixL86 vor 1 StundeExchange Server4 Kommentare

Hallo zusammen, da ich nun ca. eine gefühlte Ewigkeit für einen gratis Konverter (EDB => PST) gesucht habe, möchte ...

Erkennung und -Abwehr
Trendmicro WFBS 10 ist in deutsch verfügbar!
Tipp von VGem-e vor 4 StundenErkennung und -Abwehr

Servus Kollegen, downloadbar unter

Windows Update

MS Patchday Juni 2018 - BSOD, obwohl noch kein Patch freigegeben

Erfahrungsbericht von diemilz vor 4 StundenWindows Update4 Kommentare

Hallo zusammen, wir hatten hier letzte Woche ein massives Problem. Alles begann damit, dass ein Mitarbeiter kurz vor Feierabend ...

Microsoft
Shadow Defender
Tipp von Hyrule vor 16 StundenMicrosoft

Ich denke viele kennen es: Ein Update oder ein neues Programm und vieles funktioniert nicht mehr wie gewünscht. Die ...

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
ASUS P5W DELUXE startet nur manchmal und nur mit 2 GraKas
Frage von Windows10GegnerCPU, RAM, Mainboards11 Kommentare

Hallo, ich habe das o.g. Motherboard erhalten. Egal ob C2D 8400, Pentium D 945 oder P4 670, das teil ...

Virtualisierung
Virtuelle Maschinen langsam unabhängig vom Hypervisor
gelöst Frage von HyruleVirtualisierung10 Kommentare

Hallo, ich möchte gerne zwei bis drei virtuelle Maschinen virtualisieren, darauf sollen jeweils Windows 10 und diverse etwas größere ...

Exchange Server
Outlook 2016 fordert ständige Authentifizierung an
gelöst Frage von zeroblue2005Exchange Server8 Kommentare

Hallo Zusammen, ich habe ein kleines Netzwerk erichtet, bei einer Firma, die sich stark verkleinert haben (4 Client). Diese ...

Rechtliche Fragen
Vorlage "private Nutzung dienstlicher Mobiltelefone"
Frage von linos2Rechtliche Fragen8 Kommentare

Hallo zusammen, ich bin auf der Suche nach einer Vorlage für die private Nutzung von dienstlichen Mobiltelefonen. Unsere Firma ...