![]() |
Datenbank: Access • Zugriff über: noch gar nicht
Benötige Hilfe beim erstellen einer Access Datenbank
Hallo zusammen,
Also ich will eine Datenbank erstellen, und dann ein Programm schreiben mit dem man auf die DB zugreifen kann. Ich hab noch nie mit Microsoft Access gearbeitet, habe also noch nicht wirklich Ahnung davon (bisschen Tutorials gelesen hab ich schon, und auch bisschen rumprobiert). Eine einfache Datenbank erstellen sollte kein Problem sein denke ich, aber die Datenbank muss folgende "Struktur" besitzen: In einem Datensatz befinden sich einige Felder, die nur bestimmte Werte annehmen dürfen. Alle erlaubten Werte müssen aber auch in der Datenbank gespeichert sein, müssen also auch ergänzbar sein usw. Klingt irgendwie kompliziert, deshalb mal ein Beschrieb, für was die DB genutzt werden soll: In der Firma müssen einige Arbeiter jeden Tag aufschreiben, wann wer was an welcher Maschine gemacht wurde. Also erstelle ich ein Formular im Programm, welches diese Eingaben verlangt: - Vollständiger Name - Datum - Auftrag - Zeit - Arbeit (was wurde gemacht?) Das "Problem" ist jetzt, dass der Name, der Auftrag und die Arbeit in einer Combobox auswählbar sein müssen, denn diese dürfen nicht "von Hand" eingegeben werden! Bei diesen 3 Sachen muss der Chef erst mal definieren, welche Möglichkeiten dass zuf Verfügung stehen. Natürlich muss auch bei einem neuen Mitarbeiter die Namensliste erweitert werden können. Dies gilt auch für den Auftrag und die Arbeit. Nun meine Frage: Muss ich da 4 unabhängige Tabellen erstellen (DatenDB, NamenDB, AuftragsDB, ArbeitsDB) welche dann erst im Programm verknüpft werden? oder muss ich 4 Tabellen erstellen, welche direkt im Acces verknüpft werden? wie mach ich das? Oder kann man sogar alles in einer Access-DB vereinen, dass am Schluss nur eine einzige Datenbank vorhanden ist? dies wär natürlich sehr schön! Wäre echt dankbar wenn mir da jemand helfen könnte! mfg urbanbruhin |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Hallo Urban,
ich würde auf jeden Fall - die Personaldaten, - die Aufträge und - die Tätigkeiten in verschiedene Tabellen aufteilen. Datum und Zeit in die Tätigkeiten mit rein und im Auftrag die Summen daraus errechnen. Somit bist du auch für die Zukunft flexibler, z.B. wenn pro Person noch Lohnkosten hinzugefügt werden sollen und diese in den Tätigkeiten (und somit in den Auftrag) einfließen müssen. Weiterhin würde ich überlegen, ob sich die einzelnen Personen durch eine Anmeldungsmaske direkt identifizieren müssen. Dammit entfällt die Auswahl des Namens zu einem Auftrag über eine Combobox. Letztendlich sind solche Daten relativ wichtig und man sollte da wo es geht und der Aufwand vertretbar ist, versuchen beabsichtigte oder unbeabsichtigte Fehler durch den Menschen selbst gar nicht erst zuzulassen. Weiterhin würde ich mir überlegen ob man für die Datenverwaltung unbedingt Access verwenden muss. Ok, erste Masken und Reports usw. sind in Access relativ schnell erstellt, meistens kommen dann aber irgendwelche Grenzenoder Macken. Ein Umstieg wird dann aufwendiger. Evtl. wäre Firebird eine gute Alternative. Letztendlich kommt es wohl auch darauf an, wieviel Wissen du schon in Delphi und SQL hast und wieviel Zeit du investieren kannst. Zitat:
Zitat:
|
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Hallo,
vielen Dank für deine Hilfe! Also mal vorweg: Ich hab noch keinerlei Erfahrung mit Datenbanken, auch das Verwenden einer Datenbank in einem Programm ist für mich neu! Zitat:
Momentan haben wir auch ein Programm laufen, bei dem es so ist und da gibts keine Probleme. Jedoch ist das Programm nicht so der Hit, also da hat einfach mal einer was "gebastelt", hat paar Unschönheiten drin... Firebird kenne ich nicht, womit erstelle ich denn so eine Datenbank? Muss ich die dann auf den PCs erst installieren damit das Programm dann läuft? Ach ja, die Datenbank wird sich dann auf einem Server befinden, und mein Programm wird auf ungefähr 5 PCs "installiert". Das "installiert" hab ich in Anführungszeichen gesetzt weil ich eigentlich wenn möglich nur eine .exe Datei auf die PCs kopieren will damit das Programm läuft. (kein Installer) |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Zitat:
Da wirst du Probleme ohne Ende haben. |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
und warum soll das probleme geben?
also im Moment läuft das eigentlich auch... Das Programm wird natürlich nicht auf 5 PCs gleichzeitig genutzt, jeder Mitarbeiter schreibt einfach vor Feierabend noch auf was er an dem Tag gearbeitet hat. Und da wir gleitende Arbeitszeiten haben, wird meistens nur ein Programm gleichzeitig geöffnet. Klar, es dürften theoretisch auch keine Probleme auftreten wenn wirklich mal das Programm 5 mal gleichzeitig geöffnet ist... Hätte ich das Problem bei Firebird nicht? |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Zitat:
|
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Guten Morgen,
Zitat:
Ich könnte mir vorstellen, dass es durchaus vorkommen kann, dass zum Feierabend mehrere Mitarbeiter gleichzeitig die Rückmeldungen machen. Bei deiner geschilderten Konstellation würde ich Firebird als Serverversion auf dem Server installieren (gibt's alles fertig als Installer zum Download). Dann hast du auf jeden Fall das richtige Fundament für deine Anforderungen. |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Zitat:
|
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Da hast du aber sehr viel Glück gehabt, den Access neigt zu defekten Dateine, bei Multiuserzugriff.
|
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Zitat:
Jet ist bekannt dafür, dass Record-level Kollisionen dank der Implementierung der Lockfiles eher an der Tagesordnung sind. Gerade wenn es über Networkshares geht. Heutzutage noch Jet als primäre Storage engine zu benutzen sollte genauso unter Strafe stehen wie en Projekt mit VB anzufangen. Wollt ihr lokalen Zugriff, ohne dedizierten Server aber mit gleichzeitigem Zugriff, dann nehmt moderne Sachen, die dafür gebaut sind. SQLite zum Beispiel, oder in einem Delphi-Forum kann man da auch ElevateDB nennen. In der IT-Welt, besonders in der Welt, in der wir Entwickler leben, ist eine Lösung als Schrott zu bezeichnen und zu meiden, wenn es andere Lösungen gibt, die für die eigenen Bedürfnisse in jeder Hinsicht besser sind. Jet als Storage engine gehört zu dem schlechtesten was es momentan überhaupt gibt! |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Zitat:
Je nach dem wie die DB genutzt wird gibt es wirklich praktisch "keine Probleme" |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Das heisst ich muss erst mal so ein firebird-"Dings" auf dem Server installieren...
Das ist gar nicht gut :( Und zwar sind wir eine 150-Mann-Firma mit "fettem" Server, x-fach abgesichert, z.T. Glasfaserkabel usw. und da sind andere Leute angestellt die den Server warten, da kann ich jetzt nicht einfach so kommen mit "Ich installier mal schnell was auf dem Server" 8) Ich bin nur ein Auszubildender und hab da gar nix zu sagen xD Es ist halt so dass ich auch zu den Leuten gehöre, welche jeweils dieses Formular ausfüllen müssen. Da das momentane Programm aber ständig Probleme macht hab ich dem Abteilungsleiter gesagt ich würde in meiner Freizeit ein "besseres" Programm schreiben, welches das jetztige ablösen soll. Da meinte er naja kann ich schon machen, ich soll doch eine Access-DB machen und das Programm in Basic schreiben. Dann ich halt aber ich kann nur in Delphi programmieren. Darauf meinte er, ja er will eigentlich schon ein Programm in Basic haben aber wenn ich in Delphi eines schreiben kann welches ihn voll und ganz überzeugt, kann ichs auch in Delphi machen. Hab mir auch Gedanken gemacht ob ich mit Basic anfangen soll, aber das muss ich jetzt eigentlich noch nicht wissen... Erstmal muss die DB her :D Also das heisst: Es soll eine DB her, welche ich einfach auf einen freigegebenen Ordner im Netz ziehen kann und die .exe der Anwendung soll einfach auf die jeweiligen PCs kopiert werden. Also nix installieren! |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Zitat:
|
Re: Benötige Hilfe beim erstellen einer Access Datenbank
also aber mit einer Access-DB gehts doch oder?!
funktioniert ja im Moment auch, und ich wüsste nichts von einer Installation!? |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Hallo
Wie oben geschrieben, habe ich auch mal was ähliches gemacht. Läuft im Netzwerk ohne Probleme. Zugegriffen wird auf eine Access DB via OLE (DAO.DBEngine.36) Anbei einige Funktionen aus (z.T vereinfacht und geändert) aus meinem Programm.
Delphi-Quellcode:
const
DAOMSJet = 'DAO.DBEngine.36'; // 'DAO.DBEngine' function GetDBName: string; begin Result := ExtractFilePath(Paramstr(0)) + 'MyDB.mdb'; end;
Delphi-Quellcode:
function TfrmX.OpenDB: Boolean;
begin Result := False; if FileExists(GetDBName) then begin FDao := CreateOleObject(DAOMSJet); try Fdbs := FDao.OpenDatabase(GetDBName); Result := True; except FDao := Unassigned; end; end; end;
Delphi-Quellcode:
procedure TfrmX.CloseDB;
begin if not VarIsNull(FDbs) then begin Fdbs.Close; Fdbs := Unassigned; end; end;
Delphi-Quellcode:
function PrepareSQL: string;
begin Result := 'SELECT * FROM MyTable'; end;
Delphi-Quellcode:
function TfrmX.GetUsers: string;
var rds: variant; ss, SLQString: string; begin SLQString := PrepareSQL(); rds := Fdbs.OpenRecordset(SLQString); try while (not rds.EOF) do begin // .. rds.MoveNext; end; finally rds.Close; rds := Unassigned; end; end;
Delphi-Quellcode:
procedure TfrmX.SaveDataToDB;
const dbOpenTable = 1; var rds: variant; begin if OpenDB then begin Rds := Fdbs.OpenRecordSet('MyTable', dbOpenTable); try Rds.AddNew; rds.fields['Date'].Value := FormatDateTime('dd.mm.yyyy hh:nn:ss', dtNow); rds.fields['XYZ'].Value := ... rds.Update; finally rds := Unassigned; end; CloseDB; end; end; |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Hallo,
naja, deine Situation ist typisch. Der Firebird Server muss nicht unbedingt auf einem "echten" Server installiiert werden. Du kannst ihn auch auf einem Client installieren. Dort läuft er dann als Dienst. Es müsste halt ein Rechner sein, der bei den tägl. Rückmeldungen dann auch noch eingeschaltet ist. |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
... oder du benutzt erstmal deinen Rechner, zum zeigen. Wenn deine Anwendung dann so toll ist, dass dein Chef das einsetzen möchte, dann bekommst du deine Installation auch bestimmt auf dem "großen" Server erlaubt/durchgeführt.
|
Re: Benötige Hilfe beim erstellen einer Access Datenbank
OK das klingt nicht schlecht, omata!
Das wär bestimmt ein Versuch wert. Kann mir vielleicht jemand mal ein paar Anfängertipps geben um folgende Fragen zu klären: - wie erstelle ich eine firebird-DB (welches Programm?) - gibts vielleicht Tutorials? - ich muss dann eine "Haupt-Tabelle" und ein paar "Unter-Tabellen" erstellen? - Diese Tabellen verknüpfe ich dann und dabei kommt eine einzige Datenbank heraus? vielen Dank schonmal! P.S. Ich werde mich schon um Eigeninitiative bemühen, doch ich hab eigentlich keine Zeit/Lust mich tagelang in die "Datenbank-Welt" einzuarbeiten. Ich will nicht erst dutzende Übungs-DBs erstellen, sondern direkt mir der richtigen DB beginnen. Vielleicht hab ich später mal Zeit das ganze Zeug genauer anzuschauen, aber in erster Linie geht es mir darum, möglichst ohne Umwege/Zeitverschwendung ein lauffähiges Programm zu erstellen. Am liebsten würd ich gleich mit dem programmieren beginnen und die DB weglassen^^ Habe im Moment nämlich wirklich einige wichtigere Sachen zu erledigen, da ich im 4. Lehrjahr bin und jetzt schon Arbeiten für die Abschlussnote beginnen...:( |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Ich finde
![]() |
Re: Benötige Hilfe beim erstellen einer Access Datenbank
Oder IBExpert. Davon gibt es auch eine kostenlose PE
|
Re: Benötige Hilfe beim erstellen einer Access Datenbank
OK danke schonmal!
werde mir das in nächster Zeit mal genauer anschauen und dann sehen wir weiter :) gruss urbanbruhin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz