Forum: PC-Programmierung Microsoft Access


von Dönald D. (Gast)


Lesenswert?

Hallo Leute,

Ich bin eigentlich aus der Excel-Ecke. Mich würde interessieren ob es 
ähnlich viele Möglichkeiten wie bei Excel mittels VBA gibt, auch bei 
Access Abläufe zu steuern. Kann man hier die serielle Schnittstelle 
direkt nutzen?
Und nur noch so aus neugier: Benutzt eigentlich viel Access?

von Holger A. (Gast)


Lesenswert?

Dönald D. schrieb:
> Benutzt eigentlich viel Access?

Wie bitte?

von Dönald D. (Gast)


Lesenswert?

Holger A. schrieb:
> Wie bitte?

Na ob ihr viel Access benützt?

von Reinhard Kern (Gast)


Lesenswert?

Dönald D. schrieb:
> Na ob ihr viel Access benützt?

Access ist recht um quick and dirty was zu probieren, aber für den 
produktiven Einsatz in einer Firma ist es bei weitem zu instabil. 
Nachdem wir regelmässig ganze Arbeitstage verloren haben, weil am 
nächsten Morgen Access meldete "Die Accessdatenbank kann nicht geöffnet 
werden. Dies liegt möglicherweise daran, dass sie beschädigt ist". 
Abgesehen davon, dass wir da nie draufgekommen wären, half auch nie was 
anderes als die Sicherung vom Tag vorher einzuspielen und die gestrige 
Arbeit komplett zu wiederholen.

Im Lauf der Zeit wurden daher alle Verirrungen auf Accessbasis ersetzt, 
obwohl das unangenehm viel Kosten verursacht hat. Aber für solche 
Jugendsünden muss man irgendwann büssen.

Gruss Reinhard

von Dönald D. (Gast)


Lesenswert?

Reinhard Kern schrieb:
> Im Lauf der Zeit wurden daher alle Verirrungen auf Accessbasis ersetzt,
> obwohl das unangenehm viel Kosten verursacht hat. Aber für solche
> Jugendsünden muss man irgendwann büssen.

nehmt ihr dann andere Software oder ist das dann was 
Selberprogrammiertes?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dönald D. schrieb:
> nehmt ihr dann andere Software

Na, als Datenbank halt irgendeinen SQL-Server, sei es der von MS oder 
irgendeinen anderen, gibt ja genug. Als Frontend irgendwas irgendwie 
selbstgestricktes, sei es ein Webformular, was in VB oder was auch 
gebautes dafür.

So etwas hat den Vorteil, von vornherein mehrbenutzerfähig zu sein, und 
Datenbank und Oberfläche sauber zu trennen.

Auch mit Excel kann man sich mit 'nem "richtigen" SQL-Server 
unterhalten; vermutlich kann man auch den Access-Kram dazu verwenden.

von F. F. (foldi)


Lesenswert?

Früher, wirklich im Anfang von Access und Visual Basic, da funktionierte 
Access ganz gut.
Schnittstellen konnte man auch ansprechen, war aber echt nicht so 
einfach.
Geht heute sicher auch. Heute ist da ja alles und bei allen MS Office 
Produkten VBA. Auch die Syntax scheint sich stark gewandelt zu haben 
oder ich blicke da einfach nicht mehr durch.
Hab das mal ne Weile gemacht, auch verkauft, aber heute wurde ich gleich 
ne richtige SQL Datenbank nehmen. Für Linux gibt es da einige freie und 
kostenlose Sachen, die auch hinter vielen Webseiten arbeiten.

Aber um noch richtig was dazu zu sagen, dazu bin ich zu lange raus.

Nur den Tipp: mach mit SQL, das lernst du schnell und dann kannst du im 
Grunde jede Datenbank programmieren.

von Digi S. (digispark)


Lesenswert?

mit Access ist es wie mit jedem Werkzeug: es muss zum Problem passen. 
Einen kleinen Nagel für ein Bild klopfst Du ja auch nicht mit dem 
Vorschlaghammer in die Wand. Eine unternehmenskritische, skalierbare 
High-Performance-Multiuser-Datenbank-Anwendung würde ich auch nicht 
zwingend mit Access erstellen wollen. Für kleinere Projekte ist es aber 
durchaus ok.

Was die Stabilität angeht: ich sitze zur Zeit bei einem Kunden der 
Office 2007 einsetzt ... so oft wie dort ist mir Excel noch nie 
abgekackt. Access läuft dagegen mehr oder weniger stabil. Dennoch würde 
auch ich für die Datenspeicherung eher zu einem SQL-Server raten.

Was die Programmierbarkeit angeht: VBA ist VBA. Der einzige Unterschied 
zwischen Excel und Access ist das jeweilige Objekt-Modell. Durch 
OLE-Automatisierung geht es aber zum Beispiel auch von Excel aus auf 
Access-Datenbank-Objekte zuzugreifen und umgekehrt. Deshalb: alles was 
ich in Excel programmieren kann, kann ich auch in Access programmieren. 
Was sinnvoller ist, hängt aber immer vom konkreten Anwendungsfall ab.

von F. F. (foldi)


Lesenswert?

Digi Spark schrieb:
>  Deshalb: alles was
> ich in Excel programmieren kann, kann ich auch in Access programmieren.
> Was sinnvoller ist, hängt aber immer vom konkreten Anwendungsfall ab.

Alles hängt immer von Einsatzzweck ab.
Aber da, zumindest Access, auch SQL 'versteht', sollte er dann doch 
lieber mit SQL anfangen. Zumal das wirklich erstmal einfach zu erlernen 
ist.

von Dönald D. (Gast)


Lesenswert?

Danke für die interessanten Einblicke! Ich sehe schon: SQL scheint das 
Maß aller Dinge zu sein.

von Digi S. (digispark)


Lesenswert?

das kann man so nun auch wieder nicht sagen. SQL steht für "Structured 
Query Language" also "Strukturierte Abfrage-Sprache" ... und genau das 
ist es auch: eine Sprache, mit der man Datenbank-Abfragen und 
-Manipulationen (wie Update, Insert, Delete oder Create Table) machen 
kann. Nicht mehr und nicht weniger. Du wirst per SQL z. B. nie mit der 
seriellen Schnittstelle kommunizieren oder eine Textdatei einlesen 
können. Auch wirst Du damit nie ein benutzerdefiniertes Formular oder 
einen Bericht in Access definieren können. Gleichwohl brauchst Du 
zumindest Grundkenntnisse in SQL, um an die Daten in Deiner Datenbank zu 
kommen. Wirklich mächtig wird SQL erst bei der Verwendung in sog. Stored 
Procedures, die direkt auf einem SQL-Server erstellt werden. Damit habe 
ich schon ganze Workflows komplett umgesetzt (z. B. ein Profit & Loss 
Reporting System eine großen deutschen Investment-Bank, das nahezu 
komplett auf Stored Procedures aufbaute und nur noch ein simples 
Frontend für die Anzeige der Daten verwendet hat).

SQL als Maß aller Dinge zu sehen ist also auch nicht richtig. Auch hier 
gilt wieder: es ist ein Werkzeug, das zum Problem passen muss. Für 
manche Dinge ist sie geeignet - für andere nicht. Die Frage ist also 
immer zuerst: was willst Du machen? DANACH kann man dann entscheiden, 
mit welchem Werkzeug das am besten zu bewerkstelligen ist. Ich bin seit 
weit über 10 Jahren als Software-Entwickler vor allem im Bankenbereich 
tätig. Dabei erlebe ich zum Beispiel immer wieder, dass die 
verrücktesten Anwendungen mit Excel gebaut werden ... nur aus dem Grund 
weil viele BWL'ler im Studium halt mit Excel angefangen haben und nichts 
anderes vernünftig können habe ich den Eindruck (Entschuldigung an alle 
BWL'er ;-) ). Wenn sie statt dessen gelegentlich mal über den Tellerrand 
hinaus geblickt hätten, wäre in ggf. aufgefallen, dass es oft bessere 
Alternativen gegeben hätte.

von J. S. (engineer) Benutzerseite


Lesenswert?

Reinhard Kern schrieb:
> Access ist recht um quick and dirty was zu probieren, aber für den
> produktiven Einsatz in einer Firma ist es bei weitem zu instabil.
> Nachdem wir regelmäßig ganze Arbeitstage verloren haben, weil am
> nächsten Morgen Access meldete "Die Accessdatenbank kann nicht geöffnet
> werden. Dies liegt möglicherweise daran, dass sie beschädigt ist".

Da muss ich doch etwas widersprechen. Ich habe seit den 90ern mehrere 
Access-Datenbanken entwickelt, per DDE/ODBC mit Daten gespeist und 
erfolgreich installiert und sie wurden durch Kunden intensiv genutzt. 2 
Davon sind sogar für Pharma/Medizintechnik validiert und zertifiziert. 
Diese laufen immer noch, wurden nur irgendwann mal hostseitig auf 
SQL-Basis umgestellt, weil der Server getauscht wurde. Man muss 
natürlich wissen, wie man dezentrale Datenbanken anlegt und betreibt - 
bei Access gibt es da ja 2 Möglichkeiten: Den Verbundbetrieb mit einer 
Art von Autoupdate und den Frontend-Backend-Betrieb.

Seither hat sich bei Access viel getan und einige Limits 
(recordset-Beschränkung, Größe, ODBC-Kompatibilität) wurden behoben, 
womit Access noch einsatzfähiger ist.

Ich benutze Access nach wie vor zur halbautomatischen Auswertung von 
Daten aus Industrieprozessen, indem ich Daten, die der PC gewinnt dort 
einspiele. Mit Access lassen sich am einfachsten komplexe Fragen stellen 
und Listen erzeugen - ohne umständliches SQL zu erlernen.

Der größte Nachteil von Access ist halt nur die mangelnde Performance. 
Wer richtig Bandbreite braucht (mehr als 10 User) und/oder große 
Volumina (>100GB) fährt, muss mit proprietären Systemen Vorlieb nehmen, 
die auf Performance optimiert sind.

Für Kleinbetriebe und -Anwendungen ist Access sehr effektiv. Der Grund, 
warum es heute nicht mehr sehr oft eingesetzt wird, ist einfach der, 
dass es für sehr viele Applikationen und Geschäftsvorfälle inzwischen 
Branchen. und Anwendungslösungen gibt, die das abdecken. Entscheidend 
ist, dass Firmen da auch Support und Pflege liefern und um sich 
abzugrenzen, setzen die logischerweise nicht auf eine universelles 
DB-System sondern programmieren selber einen optimierten Code.

Mit Access kann man allerdings auch eigene Oberflächen verwenden, indem 
man einen Datenzugriffsseite generiert und das Webinterfaace nutzt - 
oder sich per SQL an das backend hängt. Ich habe das noch vor Jahren mit 
wxWidgets getan. Das wäre dann auch mal in Richtung Linux/mySQL 
portierbar.

Wie gesagt, kommt es bei Access auch auf die richtige Konfiguration und 
Nutzung an und da spielt auch die HW-Struktur und die SW-Landschaft ein 
Rolle:  Der Fehler, den Du z.B. beschrieben hast, liegt mit hoher 
Wahrscheinlichkeit an der Systemdatenbank, bzw der mangelnden 
Konfiguration derselben oder ihrer temporären Nichtverfügbarkeit infolge 
von internen Serverproblemen. Schließlich könnte ein Grund für die 
kaputte DB auch die mangelnde Datenorganisation sein. Wenn 
Schreibzugriffe per ODBC nicht korrekt abgeschlossen wurden, kommt es zu 
inkonsistenten Datenbeständen. Man spielt daher Datenänderungen in einen 
Zwischenbereich, prüft auf Konsistenz und übernimmt sie dann komplett. 
Zudem lässt man die Änderungen schlauerweise protokollieren, um einen 
Defekt manuell beheben und die Änderungen nachpflegen zu können. Solche 
Mechanismen muss man eben bei Access auch implementieren (in 
proprietären DBs sind die ebenfalls integriert, weil auch da 
Verbindungsausfälle von den Clients zum Server vorkommen).

von Tany (Gast)


Lesenswert?

Reinhard Kern schrieb:
> Access ist recht um quick and dirty was zu probieren, aber für den
> produktiven Einsatz in einer Firma ist es bei weitem zu instabil.
> Nachdem wir regelmässig ganze Arbeitstage verloren haben, weil am
> nächsten Morgen Access meldete "Die Accessdatenbank kann nicht geöffnet
> werden. Dies liegt möglicherweise daran, dass sie beschädigt ist".

Dann hab ihr was falsch gemacht. Die Datenbank kann nicht dafür!
Jede Datenbank kann kaputt gehen, sei doch froh, daß ihr nur die *.mdb 
zurücksichern müssen.

>Dabei erlebe ich zum Beispiel immer wieder, dass die
>verrücktesten Anwendungen mit Excel gebaut werden ... nur aus dem Grund
>weil viele BWL'ler im Studium halt mit Excel angefangen haben und nichts
>anderes vernünftig können ...

Das ist die Realität.

>das kann man so nun auch wieder nicht sagen. SQL steht für "Structured
>Query Language" also "Strukturierte Abfrage-Sprache" ... und genau das
>ist es auch: eine Sprache, mit der man Datenbank-Abfragen und
>-Manipulationen (wie Update, Insert, Delete oder Create Table) machen
>kann. Nicht mehr und nicht weniger.

Klarer kann man nicht formulieren.

von J. S. (engineer) Benutzerseite


Lesenswert?

Digi Spark schrieb:
> Dabei erlebe ich zum Beispiel immer wieder, dass die
> verrücktesten Anwendungen mit Excel gebaut werden

Alles, was n-fach 2-dimensional ist, als eine Parameterspalte und eine 
oder mehrere Ausgangsspalten haben, ist in Excel am Besten aufgehoben. 
Man muss nur sehen, dass man maximal 256 Spalten hat und eine begrenzte 
Zahl von Datensätzen. Die aktuellen Excels kann man so mit Daten 
vollstopfen, dass 2GB große Files rauskommen. Umfangreiche Suchen oder 
Zusammenstellungen sind aber bereits ein Kriterium für den Zugriff durch 
Access. Zur Not kann man ja ein Excel auch mal temporär portieren. Ich 
habe das immer so gemacht, dass ich es einmalig konvertiere, eine 
Tabelle erzeuge, die exakt dem Excel entspricht und darauf basierend, 
dann meine Berichte und Abfragen erzeugt habe. Wenn dann wieder ein 
Nutzer (und ja es waren immer die BWLler :-) ) sein aktualisiertes Excel 
angeschleppt hat, wird es einfach markiert  und die Tabelle kopiert. 
Damit sind die Daten portiert.

Umgekehrt macht es auch durchaus Sinn, die mittels Abfragen analysierten 
und auf eine Tabelle reduzierten Daten aus einer Access-DB entsprechend 
aufzubereiten und in Excel weiterzuverarbeiten. Excel hat bessere 
Grafikdarstellungen.

Was Access prima kann, sind Variationsanalysen: Will man z.B. ein 
optmiertes Widerstandsnetzwerk für einen bestimmten Fall finden, kann 
man einfach die R24 Tabelle mehrere male instanziieren und per DDE die 
Formel eingeben. Access spielt alle Kombis durch, wird die Doubletten 
raus und listet in der finalen Tabelle nur die erfolgreichen, die dem 
Ziel nahe genug kommen. So kann man sogar mehrere Kriterien mit einander 
schneiden, indem man Identitäten in den Tabellen sucht. Eine solche DB 
habe ich mir auch mal für die Verkettung von PLLs gebaut, wie sie beim 
Spartan 3E benötigt werden: Es werden für vorhandene Quarze, erlaubte 
Multiplier und Dividerwerte alle Kombinationen aufgelistet, wo sinnvolle 
Zwischenfrequenzen rauskommen und für diese dann eine M x M - Verkettung 
verwendet, um die Möglichkeiten zu finden, eine bestimmte Frequenz 
herzustellen. So und nur so habe ich seinerzeit eine Möglichkeit 
gefunden, mit einer Kombination aus zwei kaskadierten DCMs mit seltsamen 
MUL/DIV Werten genau die benötigten KGV-Frequenzen für Audioformate aus 
meinem gegebenen Quarz zu generieren. Durch manuelles Rumprobieren wäre 
ich nicht drauf gekommen.

von Digi S. (digispark)


Lesenswert?

Juergen Schuhmacher schrieb:
> Mit Access kann man allerdings auch eigene Oberflächen verwenden, indem
> man einen Datenzugriffsseite generiert und das Webinterfaace nutzt -
> oder sich per SQL an das backend hängt. Ich habe das noch vor Jahren mit
> wxWidgets getan. Das wäre dann auch mal in Richtung Linux/mySQL
> portierbar.

Nur als kleiner Hinweis am Rande: Datenzugriffseiten konnten sich nicht 
wirklich durchsetzen (wie ich finde aus gutem Grund ;-) ) und werden in 
den aktuellsten Versionen von Access auch nicht mehr unterstützt.

Juergen Schuhmacher schrieb:
> Alles, was n-fach 2-dimensional ist, als eine Parameterspalte und eine
> oder mehrere Ausgangsspalten haben, ist in Excel am Besten aufgehoben.

Naja ... darüber kann man streiten ;-) Access gehört nunmal in den 
Bereich der Relationalen Datenbanken. Das ist ein gänzlich anderes 
Konzept als das, das Excel verfolgt. Ich würde der Aussage deshalb so 
nicht zustimmen. Auch hier hängt es - wie immer - davon ab, was ich mit 
den Daten machen will.

Was die Varianten-Lösung betrifft: das geht so natürlich und in der 
Praxis ist das auch vollkommen ok ... aber :-) ... das widerspricht ein 
wenig der Leere von relationalen Datenbanken. Dabei verwendest Du ein 
sog. "Kartesisches Produkt", das eigentlich immer durch einen Fehler - 
nämlich das Weglassen der korrekten Relationen - in der Datenbank 
entsteht. Aber wie gesagt: gehen tut es trotzdem ;-)

von Wolfgang (Gast)


Lesenswert?

Reinhard Kern schrieb:
> Nachdem wir regelmässig ganze Arbeitstage verloren haben, weil am
> nächsten Morgen Access meldete "Die Accessdatenbank kann nicht geöffnet
> werden. Dies liegt möglicherweise daran, dass sie beschädigt ist".

Schon mal dran gedacht, dass da die Access Anwendung Schuld dran ist, 
weil der Anwendungsprogrammierer zu faul war, eine vernünftige 
Transaktionsabsicherung einzubauen und Nutzer die DB-Anwendung nicht 
vernünftig beendet haben?
Da hat wohl die Qualitätskontrolle für die Auftragsprogrammierung 
gepennt.

von Digi S. (digispark)


Lesenswert?

@Wolfgang (Gast): auch das kann man so pauschal nicht sagen. Ich habe 
vor vielen Jahren mal eine Kunden- und Anlagenverwaltung für eine 
Vermögensverwaltung auf Basis MS-Access geschrieben. Damals noch in der 
Version 97. Das Ding lief absolut fehler- und problemfrei über viele 
Monate hinweg, bis plötzlich ähnliche Fälle auftauchten, in denen die 
Datenbank beschädigt wurde. In der Regel konnte dies durch die 
Reperatur-Funktion wieder behoben werden. Ich habe damals ne ganze Weile 
nach der Ursache geforscht. Wir konnten es dann eingrenzen auf den Fakt, 
dass die Datenbank immer nur beschädigt wurde, wenn sie von einem ganz 
bestimmten Rechner aus gestartet wurde. Das komische dabei: selbst ein 
komplettes Neuaufsetzen des Rechners hat daran nichts geändert. Wir 
haben nie wirklich rausgefunden, was die genaue Ursache war ... aber 
nach dem Aussondern des Rechners gab es nie wieder Probleme.

Was ich damit sagen will: die Fehlerquellen können sehr vielschichtig 
sein und selbst bei gut funktionierender Qualitätskontrolle kann keine 
100prozentige Fehlerfreiheit garantiert werden.

von J. S. (engineer) Benutzerseite


Lesenswert?

Digi Spark schrieb:
> Naja ... darüber kann man streiten ;-)
> Auch hier hängt es - wie immer - davon ab, was ich mit
> den Daten machen will.

Daher schrieb ich ja im Weiteren, dass man zu Access wechseln sollte, 
sobald eine größere Auswertung geplant ist.

> Was die Varianten-Lösung betrifft: das geht so natürlich und in der
> Praxis ist das auch vollkommen ok ... aber :-) ... das widerspricht ein
> wenig der Leere von relationalen Datenbanken. Dabei verwendest Du ein
> sog. "Kartesisches Produkt", das eigentlich immer durch einen Fehler -
> nämlich das Weglassen der korrekten Relationen -

Nicht ganz, denn durch die Nichtverknüpfung der Relationen wird zunächst 
gezielt eine Datenvielfalt erzeugt, die dann erst eine oder zwei Ebenen 
höher wieder eingeschränkt wird - z.B. durch die Bereiche der möglichen 
Lösungen. Eine derartige Abfrage wäre, ob ein Zielwiderstand zu einem 
E24 passt - d.h. sein Wert wird in der Accessliste dann mit dem 
passenden E24-Wert markiert und ab dann mit diesem weitersortiert, wobei 
gleiche Lösungen entfallen. Das vorgehen, die Primärtabellen unverknüpft 
zu verwenden, ist auch exakt richtig so, denn praktisch sind diese 
beiden Informationen auch unkorrelliert und stehen gleichberechtigt 
nebeneinander. Bei Relationen ist es ja meist so, dass eine Tabelle den 
Schlüssel für die andere liefert, also so eine Art 
Master-Slave-Beziehung vorherrscht. Man darf sich hier nicht davon 
täuschen lassen, dass es jeweils dieselbe Tabelle ist: Es könnten auch 
eine R und eine C sein, wenn es um RC-Dämpfung geht.

von Digi S. (digispark)


Lesenswert?

Ich habe ja auch geschrieben, dass das in der Praxis vollkommen i. O. so 
... nur halt nicht in der reinen Lehre, da es dort keine Daten gibt, die 
nicht in Relation zueinander stehen (zumindest über andere Entitäten). 
Wenn doch, ist das Datenmodell falsch ... aber wie gesagt: das ist eine 
eher akademische Diskussion. Ich komme auch eher aus der Praxis und 
deshalb finde ich es auch vollkommen ok, wenn man ein RDBMS 
(relationales Datenbank Management System) dazu nutz, um so ein 
kartesisches Produkt zu erzeugen und auszuwerten.

Wichtiger ist vielleicht der Hinweis, dass Access als Datenspeicher 
(=Backend) schon deutlich unter 100GB nicht mehr akzeptabel ist. Genau 
genommen ist eigentlich bei knapp 2 GB schon Schluss, da die Jet-Engine 
von Access keine größeren Dateien verwalten kann. Einige andere 
Einschränkungen und Limitierungen von Access (für die Version 2010) 
findet man z. B. hier: 
http://office.microsoft.com/de-de/access-help/access-2010-spezifikationen-HA010341462.aspx

von Dönald D. (Gast)


Lesenswert?

Naja, ich denk mir halt (jetzt bezogen auf Excel vs. Access) der 
Hauptvorteil bei Access ist, dass man Datenbank und Frontend sauber 
voneinander trennen kann. Und wenn das Frontend sauber programmiert ist, 
schätze ich Access schneller, sauberer und va. nicht so umständlich wie 
Excell ein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.