🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Erstellung einer laufenden Inventurdatenbank

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
phaeton616
Beiträge: 15
Registriert: Mi 16. Jan 2013, 20:23

Erstellung einer laufenden Inventurdatenbank

Beitrag von phaeton616 » Mi 16. Jan 2013, 21:24

Hallo und guten Abend zusammen!

Ich habe vor in meinem Unternehmen eine Datenbank für eine laufende Inventur zu erstellen.
Ich habe zwar recht viel Erfahrung mit Tabellenprogrammen wie Excel und Calc aber im Bezug auf Datenbanken bin ich recht unbewandert, weshalb ich mich hilfesuchend an euch wende.

Die Anforderungen an meine Datenbank sind:

- erfassung von Rohmaterial in einer Tabelle: es handelt sich um auf Maß zugeschnittene Blöcke, Dreiecke und Sechsecke und Rundmaterial aus Metall und Kunststoff. Ich habe jedes lagernde Teil mit einer Nummer versehen und vermessen, Material den lagerort notiert, sowie die Oberflächengüte, Einkaufspreis etcetc... erfasst

- Bearbeitung und Erfassung von bestandsdaten un Neumaterial mittels Formularen

- eine Materialdatenbank in der alle spezifischen Eigenschaften des Werkstoffes erfasst werden wie z.B. physikalische Eigenschaften, Verwendungsgebiete, Gefahrenstoffklasse, Alternativnamen...

- zeitgleiche Bearbeitung von verschiedenen (2 oder 3) Workstations aus auf einem zentralen Server

- Formulare für: Erfassung/Bearbeitung, Suche, Marktpreiserfassung in Abhängigkeit vom Datum (wg. Schrottwert), und Werkstofferfassung (bedient Materiadatenbank)

- Wertermittlung des lagerbestandes

Bis jetzt habe ich recherchiert, dass das Prinzipiell alles so umsetzbar sein müsste mit Base:
Rohteile und Materialien mit Ihren jeweiligen Eigenschaften sowie die bewertung würde ich in seperatren Tabellen anlegen.
Die anderen Anforderungen sollte ich - was ich so gelesen habe - mit den Werten aus den so entstandenen Tabellen via Abfragen und Berichte errechnen lassen können.
Zu einer Suchfunktion und Bearbeitung eines Gesuchten Datensatzes habe ich aber noch keinen Ansatz, ebenso ist mir unklar wie ich die mir aus der tabellenverarbeitung vertrauten logischen und mathematischen Operanden auf verschiedene Werrte untereinander anwende.

Beispiel: Wie bekomme ich es hin, dass mir die Datenbank mir für einen jahresinventurbericht den Preis ermittelt, indem ich die Dimensionen des Rohteils miteinander Multipliziere (welche in der Rohmaterialtabelle hinterlegt sind), das Volumen dann mit der Dichte aus der Materialdatenbank multipliziere um mit dem Faktor Schrottwert/kg dann meine Aktivaposition für die Bilanz dastehen zu haben.
Oder wie ich der Tabelle vermitteln soll, dass WENN((IST(SpalteForm="Rund")), DANN(ISTLEER(SpalteBreite), SONST(NICHTISTLEER(SpalteBreite))) mal in salopper Syntax ;)

Desweiteren stellt sich für mich die Frage wie lege ich die Datenbank so an, dass sie sich selbständig sichert und ich formulare und Funktionalitäten hinzufügen kann und die Datenbank anschließen wieder in das neue konzept migrieren kann.

Momentan plagt mich aber etwas banales viel unmittelabrer :shock: : Ich habe meine Notizen (über 500 Datensätze á 6 Werte nun Mühsam vorerst in eine Calc Tabelle eingehackt, bis ich mir sicher bin dass ich die Datenbank auch so übernehmen will. ich dachte mir dass ich das problemlos austauschen könnte, aber das war wohl eine Fehlannahme.
Ich bin zwar mittlerweile so weit, dass ich die Daten übertragen kann in Calc, aber ich kann in dieser tabelle dann nichts mehr editieren, ich kann fehlgeschlagene Importversuche nicht löschen und keine neuen Datensätze hinzufügen. Im Kontextmenü wird mir nur Option Kopieren ageboten. Allgemein nutzt mir also die Möglichkeit die Daten von Calc zu übernehmen wenig, wenn ich nicht darauf basierend weiterarbeiten kann.

Da muss es doch eine Möglichkeit geben das zu verändern. Ich will garnicht dran denken wie es wäre die über 3000 Felder auf ein neues zu übertragen :(

Sehr danbkbar wäre ich für eine Beispieldatei mit ähnlichem Aufbau, damit ich mal einen Überblick über Aufbau und Bezügen innerhalb so einer Datenbank sehe. Ich hab zwar die handbücher von OO und Libre zum thema gelesen, aber das übersteigt doch ein wenig die dort Aufgezeigten Adressdatenbankbeispiele...

Für jede Antwort, und jeden nützlichen Link, vielen Dank im Vorraus!

swolf
* LO-Experte *
Beiträge: 1143
Registriert: Di 14. Feb 2012, 16:56

Re: Erstellung einer laufenden Inventurdatenbank

Beitrag von swolf » Mi 16. Jan 2013, 21:38

Bist du am Base-Handbuch von der LO-Webseite interessiert?

http://de.libreoffice.org/hilfe-kontakt/handbuecher/
Erste Schritte Handbuch - Kapitel 08 - Einführung in Base
und weit unten "Base Handbuch (Datenbank)" mit 10 Kapiteln

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Erstellung einer laufenden Inventurdatenbank

Beitrag von RobertG » Do 17. Jan 2013, 08:30

Hallo phaenton616
phaeton616 hat geschrieben: Oder wie ich der Tabelle vermitteln soll, dass WENN((IST(SpalteForm="Rund")), DANN(ISTLEER(SpalteBreite), SONST(NICHTISTLEER(SpalteBreite))) mal in salopper Syntax ;)
Ich steige einmal da ein, wo es konkret wird: Du brauchst die Funktion

Code: Alles auswählen

CASE WHEN expr1 THEN v1[WHEN expr2 THEN v2] [ELSE v4] END
In der Überarbeitung des Handbuches wird die Beschreibung dazu etwas erweitert:
Wenn expr1 wahr ist wird v1 zurückgegeben. [Optional können weitere Fälle angegeben werden] Sonst wird v4 wiedergegeben oder NULL, wenn kein ELSE formuliert ist.
CASE WHEN DAYOFWEEK("Datum")=1 THEN 'Sonntag' WHEN DAYOFWEEK("Datum")=2 THEN 'Montag' … END
könnte per SQL den Tagesnamen ausgeben, der sonst in der Funktion nur in Englisch verfügbar ist.
[funktioniert in der GUI]
Der Hinweis "funktioniert in der GUI" ist wichtig für Leute, die so eine Abfrage erstellen und in so einer Abfrage später auch noch Daten eingeben möchten. Mit dieser Funktion kannst Du die Abfrage also auch für ein Eingabeformular nutzen. Es gibt leider einige wenige Funktionen, auf die die grafische Benutzeroberfläche nicht richtig reagieren kann. Da muss dann der direkte SQL-Modus angeschaltet werden.
phaeton616 hat geschrieben: Desweiteren stellt sich für mich die Frage wie lege ich die Datenbank so an, dass sie sich selbständig sichert und ich formulare und Funktionalitäten hinzufügen kann und die Datenbank anschließen wieder in das neue konzept migrieren kann.
Während der Erstellung der Datenbank würde ich laufende Sicherungen anfertigen. Prinzipiell kannst Du Formulare, Abfragen und Berichte auch von einer Datenbank zur anderen über die Zwischenablage kopieren.
Was leider bisher nicht eingebaut ist, das ist ein Sicherungssystem mit Backup, wie es z.B. beim Writer automatisch funktioniert.
Dazu gibt es entsprechende Makros, die z. B. in der Beispieldatenbank vom Handbuch dabei sind: Backup beim Öffnen der Datenbankdatei, gegebenenfalls auch Backup auf Knopfdruck (muss etwas anders funktionieren, da die Base-Datenbank erst aus dem Speicher in die Datei geschrieben werden muss).
phaeton616 hat geschrieben: Ich bin zwar mittlerweile so weit, dass ich die Daten übertragen kann in Calc, aber ich kann in dieser tabelle dann nichts mehr editieren, ich kann fehlgeschlagene Importversuche nicht löschen und keine neuen Datensätze hinzufügen.
Wenn Du die Daten von Calc aus nach Base importierst, dann brauchen sie ein eindeutiges, unverwechselbares Feld, den Primärschlüssel. Ansonsten kann in der HSQLDB mit diesen Tabellen nicht gearbeitet werden. Vielleicht hast Du schon so ein Feld (Bestellnummer z.B.) Meist wird so ein Feld aber als "AutoWert"-Feld gegründet, wenn die Tabelle importiert wird.
Mein Rat: Stelle zuerst in Base grundsätzlich die leeren Tabellen zusammen. Mache Dir Gedanken, wie diese Tabellen verknüpft werden sollen. Wenn das Gerüst steht, dann fülle anschließend die Datenbank mit den Daten (Daten an Tabelle anhängen im Import-Assistenten).
phaeton616 hat geschrieben: Sehr danbkbar wäre ich für eine Beispieldatei mit ähnlichem Aufbau, damit ich mal einen Überblick über Aufbau und Bezügen innerhalb so einer Datenbank sehe. Ich hab zwar die handbücher von OO und Libre zum thema gelesen, aber das übersteigt doch ein wenig die dort Aufgezeigten Adressdatenbankbeispiele...
Da bist Du vermutlich noch nicht an der richtigen Stelle: Beim LibreOffice-Handbuch liegen zwei Medien-Datenbanken dabei, die vermutlich eher den Nutzer überfordern, wenn er nicht die einfache Einführung gelesen hat: Das sind Datenbanken, die den kompletten Betrieb einer Bibliothek abdecken.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

phaeton616
Beiträge: 15
Registriert: Mi 16. Jan 2013, 20:23

Re: Erstellung einer laufenden Inventurdatenbank

Beitrag von phaeton616 » Mo 21. Jan 2013, 16:32

vielen Dank schon einmal für das Handbuch... da hab ich bei google wohl zu spezifisch gesucht und bin immer bei den kurzanleitungen gelandet.

Die Tabellen stehen nun soweit, ich habe das bislang so gegliedert, dass ich für den Rest und Neuwert des Materials in €/kg, für die Rohware an sich eine Tabelle mit umfassenden Informationen für das gelagerte stück, für Werkstoffdaten und für den Verbrauch eine eigene Tabelle erstellt habe.
Damit habe ich so ziemlich jede information erfasst die ich für die beabsichtigten Abfragen brauche.

Was mir noch nicht so klar ist, ist die Beziehung zwischen Formularen und Abfragen und wie ich es schaffe eine Abfrage über ein Formular zu steuern. Von Prinzip her müsste ich doch eigentlich felder erstellen können welche die Zeile Kriterium in der Abfrage befüllen, und mir somit eine Suchfunktion schaffen können, welche mir neben einer Suchmaske in der der Anwender die Kriterien definiert das entsprechende Abfrageergebnis bekomme.
Aber irgendwie kommt nir da das Böse Wort "Zirkelbezug" in den Sinn.

Eine weitere Frage die mich beschäftigt sind logische und mathematische Operanden in Abfragen bezüglich der Wertermittlung. Ich habe nun beispielsweise kategorisiert in verschiedene Formberechnungstypen: Rund, Ring, Block.
Ich habe jeweils die nötigen Maße abgenommen um damit das Volumen zu berechnen, gegeben ist also für Block z.B. LxBxH etc...
Wohin stelle ich nun das Volumen in der Entwurfsansicht? Eine neue Spalte in der Abfrage aufmachen kann ich nicht, da ich dann ja ein Tabellenfeld zuordnen müsste (Volumen) das so in keiner Tabelle existiert (was ich eigentlich auch vermeiden will).
Ich steige einmal da ein, wo es konkret wird: Du brauchst die Funktion

Code: Alles auswählen
CASE WHEN expr1 THEN v1[WHEN expr2 THEN v2] [ELSE v4] END
füge ich das in der SQL-Ansicht einfach unten an oder spielt die Position in SQL eine Rolle? Was würde mir ein an flascher stelle eigegebener Wert liefern, eine Fehlermeldung, würde der Wert so nur gelöscht werden oder kann ich das formular dann so an ordnen, dass das Formular ein Subformular auswählt in Abhängigkeit vom Formberechnungstypen, sodass eine Fehleingabe nicht mehr möglich ist?

Nochmals Danke für eure Geduld!

EDIT: die formulare für die Erfassung von Werkstoffdaten und Rohteilen funktionieren schonmal

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Erstellung einer laufenden Inventurdatenbank

Beitrag von F3K Total » Mo 21. Jan 2013, 19:36

Hallo,
es hat mich interessiert, anbei mal ein Beispiel was funktioniert, für die Formel des Sechsecks übernehme ich keine Verantwortung ;-)

Code: Alles auswählen

SELECT "ID_M", "Material", "Form", "Dichte", "L", "B", "H", "Da", "Di", 
    ( CASE 
        WHEN "Form" = 'Quadrat' THEN "L" * "B" * "B" 
        WHEN "Form" = 'Rechteck' THEN "L" * "B" * "H" 
        WHEN "Form" = 'Kreis' THEN "L" * "Da" * "Da" / 4 * PI( ) 
        WHEN "Form" = 'Ring' THEN "L" * ( ( "Da" * "Da" ) - ( "Di" * "Di" ) ) * PI( ) / 4 
        WHEN "Form" = 'Sechseck' THEN "L" * 3 * "Da" * "Da" * SQRT( 3.0 ) / 8 
    ELSE 
	    0 
    END ) / 1000000.00 AS "Volumen", 
    ( CASE 
        WHEN "Form" = 'Quadrat' THEN "L" * "B" * "B" 
        WHEN "Form" = 'Rechteck' THEN "L" * "B" * "H" 
        WHEN "Form" = 'Kreis' THEN "L" * "Da" * "Da" / 4 * PI( ) 
        WHEN "Form" = 'Ring' THEN "L" * ( ( "Da" * "Da" ) - ( "Di" * "Di" ) ) * PI( ) / 4 
        WHEN "Form" = 'Sechseck' THEN "L" * 3 * "Da" * "Da" * SQRT( 3 ) / 8 
    ELSE 
	    0 
    END ) * "Dichte" / 1000000000.00 AS "Gewicht" 
FROM "Materialien"
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

phaeton616
Beiträge: 15
Registriert: Mi 16. Jan 2013, 20:23

Re: Erstellung einer laufenden Inventurdatenbank

Beitrag von phaeton616 » Mo 21. Jan 2013, 23:15

Danke dir für die Mühe die du dir da gemacht hast, das macht mir die Sache erheblich einfacher die SQL-Syntax und Systematik zu durchsteigen.

Zu meinem Abfrage-Formular Problem, da bin ich weitergekommen:
Mir ist beim Versuch die Beispieldatenbak zu begreifenaufgefallen, was ich brauche ist eigentlich keine Abfrage um etwas zu suchen, für meine Zwecke ist absolut ausreichend den formularbasierten Filter zu nutzen und die ergebnisse in einem Tabellenkontrollfeld auszugeben. Dadurch bekäme ich schonmal an die für den Nutzer wichtigsten Informationen: Wo ist was Passendes?

Ist es möglich den filter über eine Schaltfläche in das formular einzubinden, am besten: das Formular standardmäßig im Modus "formularbasierter Filter" ausfzurufen?

Es geht mir zum einen darum die Bedienung des Formulars intuitiv zu gestalten, es soll sich also keiner damit auseinandersetzen müssen was ein formularbasierter Filter ist und wo die Funktion in Base zu finden ist. Zum anderen möchte ich, um fehlbedienung zu verhindern, dem nutzer nicht die möglichkeit geben wahllos in allen datensätzen zu navigieren. D.h. er muss zuerst etwas bestimmtes suchen (jedes Teil ist mit einer Laufenden Nummer gekennzeichnet) bevor er es verändern kann, oder wählt über eine Schaltfläche aus, dass er einen komplett neuen Datensatz erstellen will, speichern will, das formular leeren will, etc. (wie das funktioniert habe ich schon rausgefunden: über das Kontextmenü die Kontrollfeldeigenschaften aufrufen und als Aktion wird einem auch schon die Standardoption "neuer Datensatz"/"Datensatz speichern"etc... geliefert) oder eben zurück zum formularbasierten Filter will.

Ich weiß, dass für euch warscheinlich die direkte eingabe in SQL wohl selbstverständlicher ist, und möchte den Wert eurer Anregungen jetzt auch in keiner weise schmälern, aber ich fände es toll wenn ihr mir - sofern verfügbar - auch die Umsetzung über die GUI aufzeigen könntet. Ich lerne mich einfach leichter, wenn ich es umsetzen kann und dann mir die Sache die ich grad via assistenten o.Ä. gemacht habe dann in SQL ansehen kann, da es bei mir wie gesagt auch einfach noch grundsätzlich am Wissen um korrekte Syntax mangelt (... ja, ich bin schon fleißig am googeln was das betrifft :geek: :idea: )

phaeton616
Beiträge: 15
Registriert: Mi 16. Jan 2013, 20:23

Re: Erstellung einer laufenden Inventurdatenbank

Beitrag von phaeton616 » Di 22. Jan 2013, 15:41

das mit dem fomularbasierten Filter habe ich mttels Makto gelöst. Ich habe die Aktion "formularfilter aufrufen" aufgezeichnet un der entspechenden Schaltfläche den Auslöser für das Makto als Ereignis zugeordnet.
Das ist denke ich mal ein guter Ansatz, ich muss den anderen Schaltflächen noch das Ereignis zum stoppen des makros zuweisen und das irgendwie umbasteln dass der filtersucheintrag sich wieder löscht.

Momentan habe ich ein Problem beim Einarbeiten der ersten Daten in die Werkstoffdatenbank:

ich habe eine existierende Liste gefunden welche alles abdeckt, was ich in dieser Tabelle haben wollte, allerdings habe ich schwierigkeiten diese zu importieren. Zuächst einmal akzeptiert base das Einfügen nur, wenn ich die Quelltabelle vorher auf einen anderen Speicherort gelegt habe, sie dann öffne markiere und kopiere, andewrnfalls bekomme ich nicht das Kontextmenü zum Einfügen der Inhalte.
Desweiteren bekomme ich nach der recht mühsamen Zuordnung der spalten mittels rauf-runter klicken stehts die Warnung, dass ich versuche null in eine nicht nullbare Spalte einzutragen. Quittiere ich das mit Ja, dann bleibt die tabelle wie erwartet unverändert. ich habe allerdings auch schon formatierungen in die tabelle eingefügt und den Datentyp definiert, was, wenn der Datenwert im gegebenen format nicht erkannt wird ebenfalls zu einer NULL führen könnte?

Muss ich jetzt alle formatierungen nochmal entfernen um die Tabelle importieren zu können?

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Erstellung einer laufenden Inventurdatenbank

Beitrag von RobertG » Di 22. Jan 2013, 16:46

Hallo Phaeton616,

ich habe jetzt die Details nicht weiter mitverfolgt. Wenn Du allerdings in Deiner Ausgangstabelle Felder hast, die leer sind, dann sollte Deine Tabelle in Base das auch zulassen. Eigentlich macht Base so etwas standardmäßig nur bei den Feldern des Primärschlüssels. Hast Du irgendwo andere Felder mit dieser Eigenschaft versehen?

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

phaeton616
Beiträge: 15
Registriert: Mi 16. Jan 2013, 20:23

Re: Erstellung einer laufenden Inventurdatenbank

Beitrag von phaeton616 » Di 22. Jan 2013, 19:50

verdammte Axt! Die Datanbank ist wohl hin, bekomme nur noch die Filterauswahl :o :shock: und kein backup, das einfach so auf den stand zu bringen wäre :|

entpackt und wieder gezipt... kein erfolg, ebenso dieser tip http://www.openoffice-forum.de/viewtopic.php?f=9&t=1593 , wenngleich ich darin den fehler vermute, da eben dieses abnorme Verhalten beim Versuch zu importieren (kopiert nicht, bzw. erst nach Ändern des Speicherortes der Quelltabelle).

Ich schätze damit kann ich mich als geliefert betrachten...

swolf
* LO-Experte *
Beiträge: 1143
Registriert: Di 14. Feb 2012, 16:56

Re: Erstellung einer laufenden Inventurdatenbank

Beitrag von swolf » Di 22. Jan 2013, 20:10



An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten