Forum: PC Hard- und Software Datenbank erstellung


von Florian K. (Firma: FH-Kärnten) (florian1995)


Lesenswert?

Hallo Leute,
und zwar geht es um folgendes Problem:

Ich muss ein Programm schreiben zur Auftragserfassung und Verwaltung.

Grundsätzlich soll der Mitarbeiter eine paar Maske haben, wo er z.B. in 
der ersten Maske Auftragsnummer, Name, Datum, Maschine, Arbeitsstunden 
und Bemerkungen eintragen kann, aber keine Anderungen vornehmen kann. In 
der nächste Maske soll er zum Beispiel eintragen können wenn diverses 
Verbrauchsmaterial aus dem Lager entnommen wird.
Dies soll von mehreren PC möglich sein.

Des Weiteren sollte möglich sein, das bestimmte Personen diese Daten 
dann weiter verarbeiten können. Wie zum Beispiel nach einer 
Auftragsnummer suchen und den Auftrag automatisch nach kalkulieren (mit 
hinterlegten Stundensatz) kann und diese Kalkulation dann als PDF 
speicher können.

Wie könnte man sowas am Besten an gehen? Grundsätzliche 
Programmiererfahrungen sind vorhanden, aber ich weiß halt nicht wo ich 
das umsetzen soll am besten. Excel VBA? Access? in Visual Studio?

Vlt. kann mir jemand ein paar Tipps geben wie ich das angehen kann.

LG FLorian

von blub (Gast)


Lesenswert?

Dafür eignet sich ein relationales Datenbanksystem. MariaDB/MySQL wäre 
ein Beispiel. Die Ein- und Ausgabe könntest du dann mit Visual Studio 
programmieren aber auch mit php/html als Beispiel.

von blub (Gast)


Lesenswert?

achso. visual studio erweckt auch den Anschein Datenbankfähigkeiten zu 
haben, kannste ja ausprobieren ich kann nur davon abraten.

von Florian K. (Firma: FH-Kärnten) (florian1995)


Lesenswert?

danke für die rasche Antwort :)
werde mich morgen mal damit auseinandersetzen und ein wenig einlesen!
vielen dank :)

von Gerd E. (robberknight)


Lesenswert?

Florian K. schrieb:
> Dies soll von mehreren PC möglich sein.

Dann würde ich davon abraten das als Fat-Client zu implementieren.

Implementiere das besser als Webapplikation mit Datenbankserver. Also 
z.B. die Webapplikation in Python mit Django und MariaDB als Datenbank.

Django bietet alles nötige um einfach Formulare bereitzustellen und auf 
Datenbanken zuzugreifen.

Die Nutzer können dann mit beliebigen Webbrowsern auf die Masken 
zugreifen. Das funktioniert dadurch unter Windows, Linux, MacOS, auf 
Smartphones etc.

von Larry (Gast)


Lesenswert?

Fuer so Kleinkram gibt es Oracleforms.
Als Datenbank dazu Oracleexpress.

Gegenueber irgendwelchem Webkram, ist man da in
ueberschaubarer Zeit fertig.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Die Frage ist grundsätzlich, ob man das Fahrrad nun zum 500sten Mal neu 
erfinden muss. Ich bin sicher, dass es solche Systeme, z.B. auch als 
Modul/Plugin z.B. zu OpenERP oder in anderem Zusammenahng zuhauf bereits 
fertig gibt ...

von c-hater (Gast)


Lesenswert?

Florian K. schrieb:

> Vlt. kann mir jemand ein paar Tipps geben wie ich das angehen kann.

Backend: relationale Datenbank.
Frontend: scheissegal, was du halt am besten kannst (scheinbar rein 
garnix)

von Stefan F. (Gast)


Lesenswert?

OpenERP heißt schon lange Odoo.

Sobald man mehr als die wenigen Standard-Darstellungsformen braucht, 
wird es damit allerdings richtig kompliziert. Kann ich ehrlich nicht 
empfehlen.

von Route_66 H. (route_66)


Lesenswert?

Visual FoxPro.
Da ist Backend und Frontend integriert!

von Tany (Gast)


Lesenswert?

Hier bei uns in der Firma schreibt jemand Jahrelang solche "Kleinigkeit" 
mit Access.

von doedel (Gast)


Lesenswert?

Wie Frank schon schreibt: warum neu machen? Bevor man sich an so eine 
Software macht, gibt es erstmal eine Marktanalyse, ob es nicht schon was 
passendes gibt.

Wenn man nicht fündig wird, sind die Anforderungen in aller Regel schon 
sehr speziell. Da Du in einem Nebensatz zum Beispiel "Nachkalkulation" 
erwähnst, ist es mit Sicherheit keine reines Erfassen und Ablegen von 
Aufträgen mit Recherge-Funktion. Dann macht man das aber auch nicht mal 
eben nebenbei. Für so eine Umsetzung gibt es zig verschiedene Ansätze, 
die alle ihre Vor- und Nachteile haben (Web, Fat-Client, Thin-Client, 
Multi-Tier, monolitisch um nur einige Bullshit-Bingo-Begriffe zu 
nennen). Dabei ist nur die grundlegende Architektur gemeint ohne Auwahl 
einer spezifischen Datenbank (die alle auch wieder ihre Vor- und 
Nachteile haben) oder der Programmiersprache / -umgebung (für die 
natürlich wieder das gleiche gilt). Ohne eine gewisse Erfahrung in dem 
Bereich ist das Scheitern deshalb meist vorprogrammiert.

Ich baue haupberuflich seit mehr als 20 Jahren Datenbank-Anwendung und 
habe schon jede Menge Mist gesehen, der daraus resultiert, dass man "mal 
eben schnell" etwas machen wollte. Deshalb mein erstnst gemeinter Rat: 
lass es! Such Dir eine fertige Anwenung oder jemand mit Erfahrung, der 
das für Euch baut.

von T.roll (Gast)


Lesenswert?

Larry schrieb:
> Fuer so Kleinkram gibt es Oracleforms.
> Als Datenbank dazu Oracleexpress.

Tany schrieb:
> Hier bei uns in der Firma schreibt jemand Jahrelang solche "Kleinigkeit"
> mit Access.

Gibt es noch mehr wahnsinnige Vorschläge?

Florian K. schrieb:
> Wie könnte man sowas am Besten an gehen? Grundsätzliche
> Programmiererfahrungen sind vorhanden, aber ich weiß halt nicht wo ich
> das umsetzen soll am besten. Excel VBA? Access? in Visual Studio?

Bei deinen Programmvorschlägen sind ganz klar keine 
Programmiererfahrungen vorhanden. Such dir was fertiges, denn alles 
andere wird nur Mist.

von Sebastian L. (sebastian_l72)


Lesenswert?

Florian K. schrieb:
> Ich muss ein Programm schreiben zur Auftragserfassung und Verwaltung.
Ein ERP System von Grund auf?
Herzlichen Glückwunsch!


> Grundsätzlich soll der Mitarbeiter eine paar Maske haben, wo er z.B. in
> der ersten Maske Auftragsnummer, Name, Datum, Maschine, Arbeitsstunden
> und Bemerkungen eintragen kann,
Kann dein ERP System das nicht? Was habt ihr denn?


> Des Weiteren sollte möglich sein, das bestimmte Personen diese Daten
> dann weiter verarbeiten können.
Was ja der Sinn ist.

> Wie zum Beispiel nach einer
> Auftragsnummer suchen und den Auftrag automatisch nach kalkulieren (mit
> hinterlegten Stundensatz) kann und diese Kalkulation dann als PDF
> speicher können.
Wie wäre es mit "als Angebot versenden" und "in Rechnung stellen"?
immer dran denken: Wenn die Rechnung nicht bezahlt ist, verdient die 
Firma kein Geld und hat keine Daseinsberechtigung.

> Wie könnte man sowas am Besten an gehen?
So wie deine ERP das will. Zur not mit einer webapplikation die das an 
das ERP weiterreicht.

von sid (Gast)


Lesenswert?

ich für meinen Teil mag MySQL..
aber ich bin auch alt ;)

Wenn man sowas mal 'kurz zusammenprutschen' will wie wir im Pott so 
sagen,
dann empfehl ich Dir mal einen kurzen Blick auf Ultimatepp zu werfen,
(ultimatepp.org)

Nicht die schönste Lösung, aber kost nix, liefert aber alles was man 
braucht direkt mit (C++ bis an die Zähne überbewaffnet mit Zeug)

Ich hab damit was sehr ähnliches (Ablauf nicht Inhalt -Echtzeit 
Lagerbestand direkt dem Verkauf anzeigen incl Aussendienstlern) 
innerhalb von nem Tag zusammengerotzt.
zwei drei Eingabemasken für die Lageristen, zwei drei für den Verkauf,
ne online stehende mysql mit definierten lese-schreibrechten etc..
(und dann im Laufe der nächsten Tage ordentlich gemacht natürlich..
blieb sogar ein ultimatepp Projekt)

Ist immernochnicht mein Lieblings-Tool um ehrlich zu sein..
bleibt aber C++ und dank der netten Grafikgimmicks (Tabellen sortierbar 
filterbar, etc.. ohne mein zutun) für die GUI ging's eben schneller so 
:D

prinzipiell reicht aber mysqlcppconn
um selbst in visual studio und Kommandozeile and die Datenbank zu 
kommen..
MSsql (das was visual studio selbst gerne hätte das man es benutzt...)
naja.. nicht meins sagen wir mal

'sid

von Stefan F. (Gast)


Lesenswert?

sid schrieb:
> ich für meinen Teil mag MySQL..
> aber ich bin auch alt ;)

Merkt man. MySQL heißt seit ein paar Jahren MariaDB.

Den Namen MySQL nutzt Oracle für einen Fork des Projektes (kann man auch 
genau umgekehrt sehen).

Bisher hat Oracle alle mir bekannten Open-Source Projekte nach der 
Übernahme gegen die Wand gefahren. Daher mein Tipp: Wenn du das alte 
MySQL 5 magst, dann wechsle zu MariaDB.

von sid (Gast)


Lesenswert?

Stefanus F. schrieb:
> Merkt man. MySQL heißt seit ein paar Jahren MariaDB.
hehe, ich mag die Idee hinter Maria DB und der Herr Widenius
hat meinen höchsten Respekt natürlich..
dennoch als ich vor fast zehn Jahren mal was portieren wollte,
gab es einen derartigen Haufen Probleme dass ich sie nichtmal hier 
auflisten könnte wenn ich mich vollständig erinnerte,
ich hab prinzipiell ne Woche lang Patches gesucht nur um dann einen 
Performance gain von weniger als 0.1% zu erzielen...
mit dem Endresultat dass die Datenbank nach ein paar weiteren Wochen 
crashte,
aus mir damals unerfindlichen Gründen (vermutlich ein buggy patch 
irgendwo)

Seitdem greift bei mir irgendwie die "gebranntes Kind" Regel..
obwohl ich sicher bin, dass jetzt alles stabiler ist als noch 2009/2010
kleb ich trotz Oracle weiterhin an MySQL, da weiss ich wenigstens dass 
jeder auftretende Fehler meine Schuld ist;
bei Maria hätte ich immer den Verdacht es gäb doch wieder irgendein 
Problem mit der Implementierung..
oder kurz.. ich schieb den nächsten mariaDB test vor mir her bis ich 
dann in Rente gehe vermutlich LOL

Und ich wiederspreche.. MySQL heisst MySQl (immernoch wie schon anno 
Dunst) und MariaDB heisst eben MariaDB (obschon beides von Widenius und 
Co)
Opera bleibt auch Opera und Vivaldi ist eben ein 'anderer Browser'...

'sid

von Stefan F. (Gast)


Lesenswert?

Ich habe mit MariaDB gewerblich gute Erfahrung gemacht. "Unsere" Firma 
entwickelt und betreibt Software als Service. Wir haben ungefähr 15 
Anwendungen nach und nach von MySQL 5 nach MariaDB 10 aktualisiert und 
sind dabei nur auf eine einzige kleine Inkompatibilität gestoßen. Eine 
SQL Prozedur musste angepasst werden, das war's schon. Es stellte sich 
heraus, dass wir sie bei einem Upgrade von MySQL nach MySQL (neuer 
Version) ebenso hätten anpassen müssen.

Bei MySQL und MariaDB gibt es zwei Dinge, die mich nerven:

a) Unterstützt verschachtelten Transaktionen nicht richtig, was bei Java 
EE Anwendungen zwar kein Show-Stopper aber immerhin ein Hindernis ist.

b) Verweigert sporadisch einzelne gültige Zugriffe (Fehler 1205 Lock 
Timeout), vor allem wenn die Systemlast hoch ist. Die Entwickler der DB 
verschieben hier die Verantwortung einfach auf den Anwendungsentwickler 
- soll er halt wiederholen. In der Praxis ist das allerdings keineswegs 
so einfach wie es klingt. In einer Web basierten Abwendung führt dies 
praktisch immer zu einem Folgefehler: Timeout in irgendeiner M2M 
Kommunikation.

Ich hasse dieses Manko wie die Pest.

Ansonsten: Dem geschenkten Gaul schaut man nicht ins Maul oder so. Wenn 
man weiß, worauf man sich einlässt, kommt man irgendwie klar. Ist immer 
noch besser als selber neu-erfinden oder die hohen Kosten einer Oracle 
Lizenz.

von Jan H. (j_hansen)


Lesenswert?

Stefanus F. schrieb:
> b) Verweigert sporadisch einzelne gültige Zugriffe (Fehler 1205 Lock
> Timeout), vor allem wenn die Systemlast hoch ist. Die Entwickler der DB
> verschieben hier die Verantwortung einfach auf den Anwendungsentwickler
> - soll er halt wiederholen. In der Praxis ist das allerdings keineswegs
> so einfach wie es klingt. In einer Web basierten Abwendung führt dies
> praktisch immer zu einem Folgefehler: Timeout in irgendeiner M2M
> Kommunikation.
> Ich hasse dieses Manko wie die Pest.

Gibt's dazu einen Bugreport? Grundsätzlich hört sich das ja nach 
normalem Verhalten eines transaktionalen RDBMS an. Einerseits hätte ich 
hier auch einmal die Anwendung im Verdacht, andererseits muss man leider 
mit zurückgerollten/abgebrochenen umgehen können, wenn man kein 
Schneckentempo möchte.

Ich würde mir in so einem Fall mal die aktuelle Sperrsituation ansehen, 
wahrscheinlich verhakt sich da anwendungsseitig etwas.

von Stefan F. (Gast)


Lesenswert?

Jan H. schrieb:
> Gibt's dazu einen Bugreport?

Gefühlt hunderte - seit mehr als 10 Jahren immer wieder neue.

ich habe inzwischen in der dritten Firma Probleme damit. Alles sehr 
unterschiedliche Projekte die alle nicht von mir kommen. Insofern kann 
ich ausschließen, dass ich es selbst verbockt habe :-)

Man kann den Fehler gezielt mit einem select-join auslösen (also reiner 
Lesezugriff mit nur einem einzigen aktiven user). Ich habe dieses 
erschreckende SQL Statement leider nicht auswendig im Kopf.

> wahrscheinlich verhakt sich da anwendungsseitig etwas.

Ja, ist auch so, die DB verhakt sich selbst. Das hat irgendwie mit der 
Blockweisen Verarbeitung von Indexen zu tun.

von Klqus (Gast)


Lesenswert?

Sebastian L. schrieb:
> Florian K. schrieb:
>> Ich muss ein Programm schreiben zur Auftragserfassung und Verwaltung.
> Ein ERP System von Grund auf?
> Herzlichen Glückwunsch!
>
>> Grundsätzlich soll der Mitarbeiter eine paar Maske haben, wo er z.B. in
>> der ersten Maske Auftragsnummer, Name, Datum, Maschine, Arbeitsstunden
>> und Bemerkungen eintragen kann,
> Kann dein ERP System das nicht? Was habt ihr denn?
>
>> Des Weiteren sollte möglich sein, das bestimmte Personen diese Daten
>> dann weiter verarbeiten können.
> Was ja der Sinn ist.

>> Wie könnte man sowas am Besten an gehen?
> So wie deine ERP das will. Zur not mit einer webapplikation die das an
> das ERP weiterreicht.

Das zeigt wieder mal das Du keinerlei Ahnung hast.
Du weisst weder was ein ERP System überhaupt ist, noch das die Frage 
nichts mit einem ERP System zu tun hat.

von c-hater (Gast)


Lesenswert?

Stefanus F. schrieb:

> Ansonsten: Dem geschenkten Gaul schaut man nicht ins Maul oder so. Wenn
> man weiß, worauf man sich einlässt, kommt man irgendwie klar. Ist immer
> noch besser als selber neu-erfinden oder die hohen Kosten einer Oracle
> Lizenz.

Ich weiß nicht, wo dein Problem ist. PostgreSQL ist genauso für Umme wie 
MySQL, aber dafür seit Jahren vollkommen ausgewachsen und sehr stabil. 
So stabil dass die Entwickler in letzter Zeit (wohl vor lauter 
Langeweile) einen Haufen Features einbauen, die man eigentlich garnicht 
braucht. Naja, und ein paar, die wirklich nützlich sind auch...

MySQL ist im Verhältnis zu PostgreSQL ungefähr Trabi von 1968 im 
Vergleich zu einem heutigen VW Golf. Ja klar, auch mit dem Trabi konnte 
man fahren. Irgendwie...

von Stefan F. (Gast)


Lesenswert?

c-hater schrieb:
> Ich weiß nicht, wo dein Problem ist. PostgreSQL ist genauso für Umme wie
> MySQL, aber dafür seit Jahren vollkommen ausgewachsen und sehr stabil.

Mein Problem ist, dass ich per Order Mufti schon mein ganzes Leben lang 
immer MySQL/MariaDB benutzen musste (in 4 Firmen). PostgreSQL habe ich 2 
Monate lang evaluiert, bis das Management entschied, dass ich doch bei 
MySQL/MariaDB bleiben muss.

Diese Locking Probleme hatte ich mit PostgreSQL nicht, aber das heißt 
nicht viel, denn in der Entwicklung-Test Umgebung habe ich mit 
MySQL/MariaDB auch nie Probleme. Die treten immer nur in der Produktion 
auf, wenn gerade keiner da ist.

Aber schön zu lesen, dass auch du PostgreSQL empfiehlst.

von c-hater (Gast)


Lesenswert?

Stefanus F. schrieb:

> Diese Locking Probleme hatte ich mit PostgreSQL nicht, aber das heißt
> nicht viel

Je nachdem, was du unter "Lockingproblemen" verstehst...

Natürlich gibt es in JEDER transaktionsfähigen DB die Möglichkeit für 
Deadlocks. Somit natürlich auch in PostgreSQL.

Und es ist tatsächlich immer der Job des Programmierers, diese Probleme 
zu vermeiden oder zumindest zu minimieren, auch in PostgreSQL oder 
Oracle.

Das prinzipielle Problem ist: es gibt halt Aufgabenstellungen (leider 
sind das in der Praxis garnicht so wenige), die ausschließen, dass man 
einen Deadlock sicher vermeiden kann. Er wird dann also (spätestens bei 
hinreichend Last) irgendwann ganz sicher auftreten.

Es ist dann auch wieder Sache des Programmierers, diese Situation 
sinnvoll aufzulösen. Was natürlich letztlich immer nur dadurch passieren 
kann, dass das Deadlock-Opfer seine Transaktion zurückrollt und erneut 
ausführt.

Dabei allerdings kommt dann wieder voll die DB und ihre Fähigkeiten in's 
Spiel. Insbesondere die vollständige Unterstützung von nested 
transactions seitens der DB ist überaus hilfreich für den Programmierer. 
Naja, jedenfalls für den, der weiss, was er da eigentlich tut...

von Stefan F. (Gast)


Lesenswert?

c-hater schrieb:
> Insbesondere die vollständige Unterstützung von nested
> transactions seitens der DB ist überaus hilfreich für den Programmierer.

Das denke ich auch. Leider ist MySQL/MariaDB gerade hier eingeschränkt.

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.