Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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 - Komplexe Abfragen mittels Formular aus mehreren Tabellen

Frage Microsoft Microsoft Office

Mitglied: sollicitator

sollicitator (Level 1) - Jetzt verbinden

17.01.2012, aktualisiert 16:18 Uhr, 14327 Aufrufe, 8 Kommentare

Als Access Neuling habe ich trotz Suche in mehreren Foren und langes rumprobieren noch keine eigene Lösung für folgendes Problem erarbeiten können. Daher würde ich mich über jedweden Hinweis, der mir bei der Lösung hilft, freuen.

Folgendes zur Projektbeschreibung:
Ausgangslage:
Eine Exeltabelle, in der in der jeweilgen Spalte bestimmte Werte eingegeben werden
Spalte A - das Datum zu den entsprechenden Werten
Spalte B - eine Identifikationsnummer der Maschine
Spalte C - eine Identifikationsnummer der Person
Spalte D - die produzierte Stückzahl

Es kann vorkommen, dass pro Datum eine Maschine mehrfach benutzt wird
Es kann vorkommen, dass pro Datum eine Person mehrfach genannt wird

Ziel soll sein:
Eine Abfrage, die es ermöglicht Wochenweise folgende Werte zu filtern und anzuzeigen:
- Bei ausgewählter Identifikationsnummer der Person und der entsprechenden Kalenderwoche soll die gesamte (also summiert) von der Person produzierte Stückzahl ausgegeben werden
- Bei ausgewähltem Maschinenbereich und der Kalenderwoche soll die gesamte (ebenfalls summiert) produzierte Stückzahl des entsprechenden Manschinenbereiches ausgegeben werden

Folgendes habe ich bisher erarbeitet:
- eine Tabelle (in Access) die jedem Datum die entsprechende Kalenderwoche zuordnet
- eine Tabelle (in Access) die der jeweilgen Kalenderwoche wieder einen entsprechenden Datumsbereich zurück gibt (als Textfeld)
- eine Tabelle (in Access), die die Identifikationsnummer der Person mit Namen und Vornamen in Verbindung bringt
- eine Tabelle (in Access), die die Identifikationsnummer der Maschine einem jeweiligen Maschinenbereich zuweist.

Folgende Beziehungen der Tabellen habe ich hergestellt:
- Tabelle Kalenderwoche in Datumsbereich (Primärschlüssel = Kalenderwoche) ist verbunden mit der Tabelle Datum in Kalenderwoche (Primärschlüssel = Datum) verknüpft ist hierbei jeweils die Kalenderwochenspalte)
- Tabelle Datum in Kalenderwoche mit verknüpfter Ursprungsexceltabelle (Spalte Datum)
- Tabelle Identifikationsnummer der Person (Primärschlüssel = Identnr.) mit Ursprungsexceltabelle (Spalte Identnr. der Person)
- Tabelle Identnr. der Maschine (Primärschlüssel = Identnr. der Maschine) mit Ursprungsexceltabelle (Spalte Identnr der Maschine)


Soweit zur Theorie.

Was ich bisher geschafft hab war, dass ich eine Kalenderwoche eingeben konnte und mir der entsprechende Datumsbereich in einem weiteren Formularfeld zurückgegeben worden ist.
Aber das war eher ein Zufallstreffer - der Hintergrund (also warum das plötzlich so funktioniert) erschloss sich mir leider nicht.

Wie muss ich das Formular gestalten um oben beschriebenes Abbildern zu können?

Ergänzungen:
Verwendet wird zur Erstellung Access 2010 es soll aber auch unter Access 2007 bearbeitbar bleiben.

Zu den Beziehungen:
7121436940d1764135914a87631cadba - Klicke auf das Bild, um es zu vergrößern

Die Tabelle "Schichtbuch" ist die importierte Tabelle, die regelmäßig aktualisiert wird.
Relevant sind dabei nur die verknüpften Spalten.
Die Berechnung soll aus der Spalte "Stückzahl Kopie" erfolgen.

So stelle ich mir am Ende das Formular vor:
1ff993a24f741f4f76f2cc84d422f78e - Klicke auf das Bild, um es zu vergrößern

Im Feld Kalenderwoche soll eine Zahl eingegeben werden können (Meinetwegen auch als Rollbalkenmenü)
Dann soll angekreuzt werden, ob anch Mitarbeiter oder Bereich gefiltert werden soll (muss aber nicht unebdingt sein, wenn es nicht erforderlich ist)
Unter Mitarbeiter oder Bereich soll jeweils mit einem Rollbalkenmenü aus der Tabellenauswahl ausgewählt werden können (Also Personalliste und Bereiche)

Und im Feld Stückzahl soll dann das Ergebnis aufleuchten.
Mitglied: RockNRolla69
17.01.2012 um 15:56 Uhr
Poste mal bitte ein Pic von deinen Beziehungen. Gefühlt fehlt mir noch eine Tabelle Produktion oder Auftrag oder sowas.
Aber poste erst mal pic pls. Bitte die Upload funktion aus dem Froum verwenden.
Bitte warten ..
Mitglied: sollicitator
17.01.2012 um 16:20 Uhr
Die von dir geforderten Ergänzungen wurden am Ende des Startbeitrages angefügt.
Bitte warten ..
Mitglied: NetWolf
17.01.2012 um 17:05 Uhr
Moin Moin,

die Tabellen Kalenderwoche und KW kannst du dir sparen, die sind überflüssig. Aus dem Datum bekommst du alle diese Informationen auch ohne Tabellen heraus. In der Tabelle "Bereiche" ist der Typ des Feldes Maschine hoffentlich eine Zahl?

Eigentlich hätte ich dir einen Bericht vorgeschlagen, um die Daten auszuwerten. Da du aber nur einzelne Werte benötigst, geht das mit der Funktion Dsum.
Es fehlt ein Button der die Berechnung ausführt. Alternativ kannst du bei Verlassen eines Feldes die Berechnung auch ausführen lassen.

DSUM hat den Syntax: DSUM("Felddassummiertwerdensoll","Tabellenname","Kriterien")

Also [Stückzahl Kopie] soll summiert werden, aus der Tabelle "Schichtbuch" und deine Kriterien kennst du ja.

01.
Private Sub Wenn_Button_geklickt_wird (oder beim Verlassen eines jeden Feldes) 
02.
Dim Kriterien as String 
03.
 
04.
'######### Kriterien zusammenbauen ######### 
05.
Kriterien = "" 
06.
if Me.Kalenderwochenfeld > 0 then 
07.
Kriterien = Kriterien & "Format([Datum fortlaufend], "ww", vbMonday) = " & Me.Kalenderwochenfeld  
08.
end if 
09.
 
10.
if len(Me.Mitarbeiterfeld) > 0 then 
11.
Kriterien = Kriterien & iif(len(Kriterien)>0," and ","") & "Personalnummer fortlaufend = " & Me.Mitarbeiterfeld  
12.
endif  
13.
 
14.
'usw. für alle deine Kriterien 
15.
  
16.
    Me.Summenfeld =  DSUM("Stückzahl Kopie","Schichtbuch",Kriterien) 
17.
 
18.
end Sub
Für Mitarbeiter und Bereich solltest du ein Pulldownfeld nutzen, dass die ID und nicht den Namen zurück gibt.
D.h. die Datenquelle für das Pulldownfeld ist z.B. Mitarbeiter.
Die erste Spalte ist gebunden (die Personalnummer) und hat eine Breite von 0 (damit sie unsichtbar ist)
Die zweite Spalte (Anzahl Spalten = 2) nutzt du dann für den Mitarbeiternamen, der dann angezeigt und ausgewählt werden kann, mit einer Breite von 3-5 cm.

Generell solltest du reservierte Begriffe wie NAME oder DATUM nicht als Feldbezeichnungen verwenden!!
Feldnamen mit Leerstellen können auch Probleme bereiten, also einen Unterstrich verwenden, das macht vieles einfacher.

Viel Spaß beim Basteln.

Grüße aus Rostock
Wolfgang
(Netwolf)

Tipp: Access ohne VBA ist wie Autofahren ohne Räder
Bitte warten ..
Mitglied: sollicitator
17.01.2012 um 17:23 Uhr
Danke für den Hinweis, ich werde mich gleich mal dran setzen und es ausprobieren.

Ich hatte die ganzen Abfragen ursprünglich komplett im Excel aufgebaut und auch eine entsprechende Tabelle zustande gekriegt, die mir die benötigten Werte ausgab (Unter Verwendung von SUMMENPRODUKT und WENN Funktionen). Allerdings lastete die so geschriebene Tabelle meinen hochwertigen Rechner schon mit 100% aus, so dass eine andere Lösung gefunden werden muss. Woraufhin mir ein Freund riet "mach es doch mit Access" - was mich vor oben geschildertes Problem stellte, da ich dieses Programm zum letzten mal vor... 10 Jahren oder mehr verwendet hab (Dies nur kurz zur Vorgeschichte)

Kurz noch zu deinen Rückfragen:
- Die Bezeichnung der Maschinen erfolgt leider mittels Text.
Da ich allerdings in der eingebundenen Exceltabelle auch die Spalten "Kalenderwoche fortlaufend" bis "Stückzahl Kopie" entsprechen errechnenlassen habe, könnte ich auch als Zwischenschritt die Maschinenbezeichnung in einen Zahlenwert umwandeln lassen - und dann eben später eine Aufschlüsslung MaschinenID (Zahl) in Bereich (Text) vornehmen lassen. -> Wenn dies eine Bedingung ist, damit es anschließend funktioniert
Bitte warten ..
Mitglied: NetWolf
17.01.2012 um 18:22 Uhr
nein, das ist keine Bedingung, sondern sauberes Programmieren. Daten sollen eindeutig zu identifizieren sein. Dafür nutzt man i.d.R. ein Zahl.

Btw ist mir aufgefallen, dass du ja nur einen Wert berechnen lässt. Warum dann eine Sortierung, die sowieso keinen Zweck hätte?
Bitte warten ..
Mitglied: sollicitator
18.01.2012 um 12:27 Uhr
Da ich mit den Daten arbeiten muss, die ich zur Verfügung stehen habe, kann ich leider nicht so sauber programmieren, wie ich es gerne wollen würde (mal abgesehen davon, dass ich kein Programmierer im eigentlichen Sinne bin )
Deinen Nachsatz kann ich so nicht ganz zuordnen. Ich will doch diverse Werte in unterschiedlichen Abhängigkeiten ausgeben lassen?!
- Eine schnell Ansicht für einzelne Mitarbeiter/Maschinen mittels Formular
- eine Jahresübersicht, die die Wochenwerte aller Mitarbeiter in einer Tabelle ausgibt (hier dann wohl mittels Bericht - aber das ist dann erst der nächste Schritt. Immer einen nach dem anderen in neuen Gebieten habe ich mir als Credo zugelegt )
Bitte warten ..
Mitglied: RockNRolla69
20.01.2012 um 22:10 Uhr
hey,

imo würde ich die Tabellen nicht so stehen lassen.

tbl Kalenderwoche löschen und mit tbl Maschinen und Mitarbeiter 1:n beziehungen mit referenzieller Integrität bilden.

ArbeitsplatzNr im Schichtbuch = Primärschlüssel mit dublikate
PersonalNr im Schichtbuch = Primärschlüssel mit dublikate

netter link zu dem Thema

http://support.microsoft.com/kb/510037/de

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: NetWolf
21.01.2012 um 16:03 Uhr
Stimmt, wer lesen kann .... ich hatte nur dein Feld "Stückzahl" auf deinem Formular gesehen und war so von falschen Voraussetzungen ausgegangen.

Also noch mal von vorne:
- lösche die Tabellen KW und Kalenderwoche (weil überflüssig)
- erstelle eine Abfrage (Datenbasis = Schichtbuch)
- Die Kriterien für das jeweilige Feld werden in der Zeile [Kriterien] eingetragen (bedenke: nebeneinander = AND // untereinander = OR Verknüpfung)

Die Werte für die Kriterien holst du aus dem Formular. Beispiel:
Spalte: Bereich
Kriterium: = Formulare.Formularname.Bereich

Grüße aus Rostock
Wolfgang
(Netwolf)
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Microsoft Office
Access Verknüpfte Tabellen Passwort ändern

Frage von mijacd zum Thema Microsoft Office ...

Microsoft Office
gelöst Access 2007 (2)

Frage von Everest zum Thema Microsoft Office ...

Microsoft Office
Access ein Script alle X Minuten ausführen und bei Bedarf stoppen (5)

Frage von thomas1972 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...