Hallo
Ich soll für meinen Arbeitgeber ein kleines Tool mit Access entwickeln was uns bei der Arbeit den Alltag etwas erleichtern soll. Unter anderem haben hat bei uns jede Woche jemand anderes Bereitschaft und das anfordern eines Arbeiters in Bereitschaft gehört auch zu meinen Pflichten. Der Arbeiter mit Bereitschaft wird regelmässig von unserer Personalabteilung in einer schier endlosen Exceltabelle aufgeführt. Nun wollte ich in meinem Accessformular ein Textfeld einbauen welches mir automatisch den Arbeiter azeigt welcher laut Exceltabelle gerade Bereitschaftsdienst hat, eventuell sofort mit der passenden Telefonummer, welche schon in meiner Datenbank in der selben Accesstabelle steht wie der Name des Arbeiters.
Leider weiss ich von Access auch nur das was ich mir in den letzten Tagen und Wochen selbst beigebracht habe und dieses Wissen reicht nicht aus um mein Problem auf Anhieb zu lösen denke ich.
Ich hoffe ich habe mich jett halbwegs verständlich ausgedrückt und ihr könnt mir bei meinem Problem helfen.
Hallo,
die erste Frage ist doch, wie du den Arbeiter mit Bereitschaft in der Excel-Tabelle finden kannst - wie ist sie aufgebaut, wonach kann man suchen?
Die Exceltabelle besteht aus mehreren Blättern, eins für jeden Standort der Firma. Spalte D enthält das Datum und Spalte H den dazugehörigen Arbeiter.
Zusätzlich wäre da noch zu erwähnen dass immer nur die Bereitschaft der kommenden Woche in der Tabelle steht, es reischt also nicht sie einmal in Access zu importieren. Genau darin liegt auch mein Problem. Sie müsste theoretisch bei jedem Aufruf meines Tools überprüft werden ob sie keine neuen Daten enthält
Du kannst in einer Abfrage direkt auf eine Excel-Tabelle zugreifen.
Beispiel:
Select * FROM [excel 8.0;DSN=TestText;imex=2;DATABASE=X:\Datei.xls].[Tabelle1$]
Gibt es denn keine Spaltenüberschriften, die dann als Feldnamen fungieren könnten?
Hallo,
Zitat
... Der Arbeiter mit Bereitschaft wird regelmässig von unserer Personalabteilung in einer schier endlosen Exceltabelle aufgeführt. ...
Die Wurzel des Übels sollte bekämpt werden, nicht seine Auswirkungen ... Wenn die PA bereits die Daten in einer vernünftigen Datenbank vorhielte, wären alle Verrenkungen obsolet. Vielleicht kannst du ja deinen Chef überzeugen da anzufangen ;).
Zitat von: el_gomero am Februar 05, 2016, 12:42:36
Vielleicht kannst du ja deinen Chef überzeugen da anzufangen ;).
Ich denke eher nicht, wir sind ein Betrieb mit rund 4000 Mitarbeitern wovon meine Abteilung vielleicht 10% ausmachen und meine Region davon noch mal 10%, ich hab da keinen grossen Einfluss auf die Firmenpolitik, bin nur ein kleines Würmchen ;) Hätte mein Tool aber in meinem kleinen Bereich einen gewissen Erfolg würden vielleicht auch andere mitziehen. Bis auf weiteres muss ich also leider wie gehabt verfahren :) Allerdings befürchte ich jetzt schon dass ich nicht einmal Zugriff auf die Datei selbst erhalte werde, diese befindet sich in unserem Firmennetzwerk und kann momentan auch nur über einen Link im Intranet zugreifen...
Zitat von: MaggieMay am Februar 05, 2016, 12:37:47
Du kannst in einer Abfrage direkt auf eine Excel-Tabelle zugreifen.
Beispiel:
Select * FROM [excel 8.0;DSN=TestText;imex=2;DATABASE=X:\Datei.xls].[Tabelle1$]
Gibt es denn keine Spaltenüberschriften, die dann als Feldnamen fungieren könnten?
Ich habe jetzt frei bis Sonntag Abend, werde dann die Abfrage sofort versuchen sobald ich meinen Dienst übernommen habe, zu Hause arbeite ich nur mit Mac also nichts mit Access;)
Also ich habe jetzt etwas herum gespielt aber mehr als #Name? wird in meiner Textbox nicht angezeigt... Ich habe jetzt erstmal versucht den Wert aus der Zelle H771 auszulesen, aber, wie schon gesagt, leider ohne Erfolg.
Wo muss ich diesen Code genau eingeben? Und wie definiere ich darin die Zelle?
Ich hatte jetzt allerdings noch eine andere Idee, ich habe eine mit der Exceldatei verknüpfte Tabelle erstellt, so konnte ich alle Werte der Exceltabelle schon mal in meine Accesstabelle kopieren. Nur macht mir jetzt das auslesen Probleme das die Exceldatei mit einem ganz anderen Datumsformat arbeitet wie ich, nämlich [Wochentag, Monat Tag, Jahr], jetzt macht mir das Kopfzerbrechen. Wäre es nicht irgendwie möglich jetzt alle Daten aus der verlinkten Tabelle in eine neue Tabelle automatisch zu kopieren in der ich dann mein eigenes Datumsformat verwende?
Hallo,
wie steht's denn nun mit Spaltenüberschriften in deiner Excel-Tabelle und mit darüber ansprechbaren Feldern? Diese Frage hast du noch nicht beantwortet.
Und dann zeige doch bitte den SQL-Code der Abfrage mit der du versucht hast die Daten auszulesen, damit wir eine gemeinsame Grundlage haben.
PS:
Stichwort "Datumsformat": Entscheidend ist, was tatsächlich in der Excel-Tabelle gespeichert ist und nicht das Format mit dem die Daten dargestellt werden.
Spaltenüberschriften gibt es keine besonderen in der Tabelle, ich bräuchte die Spalte D, in ihr steht das Datum, und die Spalte H, in ihr befindet sich der entsprechende Arbeiter. Die Tabelle selbst heisst "Astreintes chc L1".
Zur Abfrage haben ich den Code
=[Select * FROM [excel 8].[0;DSN=TestText;imex=2;DATABASE=C:\data\godfchr30\Desktop\Astreinte EI 2015.xlsm].[Astreintes chc L1$H771]
verwendet.
Wo befindet sich der Code, was hat es mit dem Gleichheitszeichen auf sich? :?
SQL-Code ist der Inhalt einer gespeicherten Abfrage - versuche es mal auf diesem Wege.
Und dann fehlt ja auch noch ein Kriterium, denn du willst ja den Wert aus einer bestimmten Zeile ermitteln, die mit einem bestimmten Datum übereinstimmt.
Ich habe diesen Text in meine Textbox geschrieben, wie gesagt, bin in diesem Bereich noch ziemlich grün hinter den Ohren
OK, dann erstelle mal eine neue Abfrage, wähle keine Tabelle aus und gehe anschließend auf die SQL-Ansicht und gib dort den Code ein. So kannst du zunächst einmal ausprobieren, ob das bei dir funktioniert bzw. was dabei herauskommt.
Wenn ich dich richtig verstanden habe, musst du den Eintrag zu einem bestimmten Tag suchen, d.h. die Abfrage muss nach Datum gefiltert werden. Der Zugriff auf eine bestimmte Zelle macht keinen Sinn, da du den Bezug ja ständig ändern müsstest - wenn es denn so überhaupt funktioniert. Möglich, dass du die Spalten bei fehlenden Überschriften mit F1 bis Fn ansprechen musst, einfach mal ausprobieren.
Ok die Abfrage hat jetzt funktioniert und habe jetzt alle Werte in Access aus der entsprechenden Tabelle. Das Filtern nach Datum in Spalte F4 ist allerdings nicht möglich, da er die Spalte nicht als Datum erkennt. Mir ist dazu allerdings jetzt noch ein zusätzliches Problem eingefallen, der Bereitschaftsdienst bei uns geht nicht von 0:00 - 23:59 sondern von 12:00 bis 11:59 am Folgetag.
Wir wissen nicht, wie du das nun gelöst hast, also kann man dir auch schlecht einen Änderungsvorschlag machen.
Wie sieht der Inhalt der Excel-Tabelle aus? Zeige doch bitte mal ein Beispiel.
So ich hatte jetzt Wochenende, deshlab hat es solange gedauert.
Die Abfrage habe ich nun so gemacht wie du es gesagt hast, mit dem SQL Code einfach. Anbei ein Screenshot der Exceltabelle, der Name steht in Spalte H und das Datum in Spalte D
Hallo,
ist das der Inhalt des Feldes oder kommt die Anzeige nur durch die Datums-Formatierung zustande? Evtl. könntest du das Format ändern?
Was den Zeitbereich betrifft, wie ist dann die Tabelle zu lesen? Wird der Bereitschaftsdienst für den 10.2.2016, 12:00 bis 11:59 Uhr, dann unter dem 10.2. oder dem 11.2. eingetragen? Wie auch immer, du musst halt die Uhrzeit bei der Suche nach dem Bereitschaftsdienst berücksichtigen. Ist es vor 12 Uhr schaust du bspw. beim gestrigen Eintrag nach und ab 12 Uhr beim heutigen Datum.
Also laut Excel handelt es sich bei Spalte D um ein Datum, Access scheint dies allerdings nicht so zu sehen...
Die Bereitschaftszeiten gehen wie du schon gesagt hast von 12:00 vom angegeben Tag bis 11:59 am darauffolgenden
So das Thema hat sich nun sowieso erledigt, die Personalabteilung verweigert mir den direkten Zugriff auf die Exceldatei...