Datenbankneuling / Firmenprojekt bitte um Hilfe [KALKULATION]

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

breaker_one
*
Beiträge: 10
Registriert: Di, 17.03.2015 18:39

Datenbankneuling / Firmenprojekt bitte um Hilfe [KALKULATION]

Beitrag von breaker_one »

Hallo zusammen,

hoffe richtiges Forum für ein "Projekt" ^^
wird ein etwas längerer Text da ich im ersten Post die aktuelle Situation festhalten möchte :D

bin der neue hier :) und kompletter Neuling in Datenbanklprogrammierung.
Die Grundlagen und Prinzipien der (objektorientierten) Programmierung sind mir jedoch ein Begriff...
Kleine Ausflüge in C++, Java, HTML, SPS/Mikrocontroller, Assambler habe ich bereits hinter mir.

Habe bisher schon ein recht ansehliches Ergebnis erreicht durch Google und das Benutzerhandbuch Ver. 4.4

Hoffe ihr könnt mir etwas Hilfestellung leisten bei meinem Vorhaben, denn manchmal ist das google und ausprobieren schon sehr mühseelig wenns um details geht:D

Kurz zu mir. Bin 31 Jahre, aus Dortmund und arbeite als Techniker für Elektrotechnik in der Planung
und genau damit beschäftigt sich auch mein Vorhaben.


bisherige Situation Auftragsverwaltung: (Details folgen)
KEINE EINZIGE GEPFLEGTE "DATENBANK" nur ods und odt Dateien....
Auftragsverwaltung mit Kommisionsnummern, aufsteigend, 5-stellig, Kundenunabhängig geordnet wobei jede Kommison mehrere "Schaltschränke" beinhalten kann
technische Daten, Auftragsbestätigungen, Bestellformulare, Lieferscheine, Kalkulationen, Materialdatenbanken alles in *.odt und *.ods Dateien in unendlich vielen Unterordnern / veraltete Daten / Mehrfacheingaben ohne Ende und und und ..... also Chaos, ist halt über die Jahre so gewachsen
Doch sind da so viele Sachen die automatisiert und fehlerfreier laufen konnen wenn es eine zentrale Datenbank gibt und daher mach ich mich in meiner Freizeit daran und versuche was vorstellbares Aufzubauen :)

Ziel: (wird stetig erweitert)
Benutzeroberfläche in Base mit kompletter Auftragsverwaltung / Bearbeitung / (Buchhaltung) wenn ich die Freigabe bekomme und Auftragskalkulation in einer mehrbenutzerfähigen Datenbank zu verwalten. Des weiteren habe ich auch noch weitergehende Ideen aber dafür ist es noch zu früh (Email-Versand, Dateien verwalten....)
Die Aufträge werden momentan Kommisionnummernmäßig verwaltet wobei ich mir auch eine Kundenorientierte Struktur vorstellen könnte.
Gibt es eventuell Erfahrungswerte in welcher Struktur man das ganze aufbauen sollte?
Hab mal ein Schema angehangen wie ich mir das ganze so ca. vorstelle, (War in 5 Minuten )

aktueller Ansatz:
Base Frontend mit Formularen, serverbasierte SQL-Datenbank

aktueller Stand
SQL-Server: XAMP 3.2.1 (local, wandert aber demnächst auf einen RaspberryPi)
OpenOffice 3.4.1 (noch ein alter Stand.... kann ich einfach ohne Probleme updaten? Qwede es einfach mal versuchen 8) :o )

mein aktuelles Problem hat sich beim schreiben gelöst glaube ich aber da kommen schon noch genug

bis dahin erstmal .....

mfg Daniel
Dateianhänge
schema.jpg
schema.jpg (138.91 KiB) 8264 mal betrachtet
Zuletzt geändert von breaker_one am Fr, 20.03.2015 17:33, insgesamt 2-mal geändert.
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datenbankneuling mit (zukünftigem) Firmenprojekt bittet um Hilfe

Beitrag von RobertG »

Hallo Daniel,

MariaDB oder MySQL - ist korrekt, wenn ich XAMP lese?
Bei der Wahl des Systems, mit dem Du darauf zugreifen willst, solltest Du Dir über die folgenden Punkte Klarheit verschaffen:
Es gibt für OpenOffice, ApacheOpenOffice und LibreOffice unterschiedliche Connectoren für den Zugriff auf MySQL. Diese Connectoren gehören nicht zur Standardausstattung sondern sind separat als Extensions herunter zu laden.
Zumindest bei LibreOffice ist als Standardconnector allerdings der für PostgreSQL dabei.

Für MariaDB/MySQL musst Du die Relationen per SQL erstellen (oder mit einem Administartionstool). Base ist wohl noch auf dem Stand, dass die Standardtabelle MyISAM ist. Da waren Relationen noch nicht gefragt.

Sorge zuerst einmal dafür, dass Du einen Kontakt zu der Datenbank hin bekommst. Fange dann erst einmal mit einem kleinen Projekt an, z.B. der Kundendatenbank. Alle anderen Module kannst Du anschließend anhängen.
Die gesamte Rechnungserstellung habe ich testweise schon auf die verschiedensten Arten erstellt - allerdings mehr auf dem Niveau für eine Schule als für den Gebrauch in einer Firma.

Gruß

Robert
breaker_one
*
Beiträge: 10
Registriert: Di, 17.03.2015 18:39

Re: Datenbankneuling mit (zukünftigem) Firmenprojekt bittet um Hilfe

Beitrag von breaker_one »

Kleines Projekt für den Anfang ist gut

Tabelle sind erstellt für Kunden / Mitarbeiter / Verteilungsdetails / Angebotsnummer / Mitarbeiter / Lieferanten / Adressbuch
Begonnen habe ich mit dem Formular für die technischen Details für einen Schrank. Dafür habe ich ca 25 Tabellen erstellt,
um die einzelnen technischen Eigenschaften zu definieren und Verweise per ID auf die Tabelle "Vertelungen" in der alle Verteilungen
stehen die Auftrag sind. Bisher funzt es ganz gut


DIe Unterschiede Zwischen (Apache)Open und Libre Office sind mir bisher nicht bekannt, aber Openoffice bekomm ich aus dem Büro nicht raus vondaher bleib ich einfacherweise auch dabei, da ich jetzt auch schon einige Stunden investiert habe mich zurecht zufinden.
Buchhaltung mach ich mich erst später dran wenn ich sicher im Umgang mit den Daten bin

XAMPP?! Ja.... war der einfachste weg das ganze local zu testen. demnächst soll das ganze auf den raspberryPi ins Netzwerk
Server läuft als ODBC-Datenquelle auf dem localhost, was heißen soll ich arbeite schon jetzt nicht mit der internen datenbank.
Hoffe nicht das durch den Umzug auf den Raspberry meine Formulare alle unbrauchbar werden
breaker_one
*
Beiträge: 10
Registriert: Di, 17.03.2015 18:39

Filterformular

Beitrag von breaker_one »

Nachdem meine Tabellenstruktur im grunde steht, wollte ich mich an die Bedienung machen.
Neben einem Startformular zum Navigieren soll es eine Suche geben

Datenbank heißt eqsdata
Die Tabelle data_angebotsnummern
In meiner Tabelle gibt es die Spalten
ID, Projektbezeichnung, Kunde, Ersteller, Auftragsart, Anzahl Verteilungen

Habe nach Anleitung aus dem Forum ein Filterformular und eine Hilfstabelle angelegt.
Doch schon beim erstellen der Parameterabfrage bekomme ich keine Ergebisse was glaub ich mit der Anbindung an die
externe Datenbank zu tun hat . ohne die LOWER befehle funktioniert das ganze

Code: Alles auswählen

SELECT `ID`, `Projektbezeichnung`, `Eingangsdatum` 
FROM `eqsdata`.`data_angebotsnummer` 
AS `data_angebotsnummer` 
WHERE LOWER ( `ID` ) LIKE LOWER ( :qID || '%' )
muss ich das irgendwie noch maskieren da die abfrage an eine externe Datenbank geht? hab da sowas in dem Handbuch gelesen
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [Filterformular]

Beitrag von RobertG »

hallo breaker_one,

Du brauchst doch LOWER() nur dann, wenn Du bei Texten die Suche unabhängig von Groß- und Kleinschreibung erlauben willst. Ist "ID" bei Dir ein Text?

Beachte bei Beschreibungen im Forum, dass sie in der Regel auf die interne HSQLDB gemünzt sind.

Code: Alles auswählen

WHERE LOWER ( `ID` ) LIKE LOWER ( :qID || '%' )
funktioniert mit der HSQLDB. || verbindet die beiden Strings bei der HSQLDB, nicht aber bei MySQL/MariaDB.
Versuche

Code: Alles auswählen

WHERE LOWER ( `ID` ) LIKE LOWER ( CONCAT(:qID ,'%' ))
Gruß

Robert
breaker_one
*
Beiträge: 10
Registriert: Di, 17.03.2015 18:39

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [Filterformular]

Beitrag von breaker_one »

Hallo Robert,
nein ID ist ein Integerwert mit autoIncrement
das LOWER soll seien um auch die Projektbezeichnung zu durchsuchen (aber immer Step by Step) ^^

besten dank.... jetzt klappts... das Gefühl wenn wieder was klappt ist toll :D


CONTACT () verbindet also zwei Werte und ich muss ich mich bei den Befehlen an den MySql Syntax anlehnen?
Werd mal google bemühen, oder Gibts gute Seiten die man empfehlen kann?

aber jetzt spielt erstmal der BVB !! und es steht 0:1 : :?
breaker_one
*
Beiträge: 10
Registriert: Di, 17.03.2015 18:39

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [Kalkulation]

Beitrag von breaker_one »

Hallo zusammen,

habe jetzt die Artikelstammdaten der verschiedenen Hersteller eingebunden, und will daraus eine Kalkulationsoberfläche erstellen.

Das ganze soll so aussehen das ich aus (mehreren) Artikeltabellen die Geräte auswähle und in eine neue Tabelle schreibe.
Hier soll pro "Projekt/ Verteilung" eine neue Tabelle erzeugt werden die dauerhaft gespeichert werden soll.

Mir fehlt grad etwas der Ansatz.....grundlegend hab ich überlegt:
Formular mit Volltextsuche in den verschiedenen Tabellen (hier brauch ich ein Tip wie ich über mehrere Tabellen suche, mit JOIN ? müssen die tabellen gleich aufgebaut sein?!?!) Der gefundene / ausgewähle Datensatz wir dann über einen Button in die neue Tabelle geschrieben. Umsetzbar?

INSERT INTO hab ich schon gefunden, aber will hier keine groben Patzer schon am Anfang einbauen denn hier geht dann um
richtig Kohle wenn Fehler drin seien sollten..
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [KALKULATION]

Beitrag von RobertG »

Hallo Daniel,

wenn die Tabelle der Hersteller gleich aufgebaut sind, dann ist das kein Problem: Tabellen mit UNION untereinander verbinden.
Ansosnten musst Du Dir überlegen, welche Felder Du denn in der Zieltabelle haben willst. Genau diese Felder sollten auch in der Abfrage dann auftauchen.
Trotzdem würde ich Daten, die Du anderswo fest gespeichert hast (Artikeltabellen), nicht duplizieren sondern so in einem View zusammen fassen. Dann hast Du Zugriff auf alle Artkel von einer Ansicht aus.
Wie suchst Du die Artikel aus, die Du wirklich in der Zieltabelle haben willst? Das soll ja vermutlich in einem Formular erfolgen, oder?
-----------------------
Nachtrag: Ich habe einmal ein kleines Beispiel zusammengebaut: 2 Quelltabellen mit unterschiedlichen Feldern, eine Zieltabelle. Kopie geht über ein Makro. Es werden beim Formularstart in der Quelltabelle nur die Daten angezeigt, die noch nicht in die Zieltabelle kopiert wurden, sofern diese nicht geändert wurden.

Gruß

Robert
Dateianhänge
Beispiel_Duplizieren_von_Daten_unterschiedliche_Quelltabellen.odb
Einfache Datenkopie ...
(14.45 KiB) 130-mal heruntergeladen
breaker_one
*
Beiträge: 10
Registriert: Di, 17.03.2015 18:39

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [KALKULATION]

Beitrag von breaker_one »

OK mit dem zusammenfassen werd ich mich später genauer befassen... fürs erste soll ein artikelstamm reichen

Zum einen erfolgt die Auswahl von Hand, Position für Position, andererseit bekommen wir aus unserem CAD-Programm eine Excel Tabelle (und diverse andere Formate unter anderem auch *.csv glaub ich) Ein Import wäre natürlich super aber eintragen reicht mir auch
Hab mir das ganze so vorgestell das ich über ein Tabellenkontrollfeld mit Filter den entsprechenden Datensatz aus der Tabelle suche
unterhald des Kontrollfeldes Textfelder mit technische Details zum Artikel stehen. Einen Button mit zum eintragen in die Kalulationstabelle

Auf der selben Seite möchte ich gerne dann gerne auch die aktuellen Inhalt der Kalkulationstabelle sehen und die berechneten Werte.
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [KALKULATION]

Beitrag von RobertG »

Hallo Daniel,

schau Dir einmal die Ergänzung an, die ich im vorhergehenden Beitrag mit einem kleinen Beispiel gemacht habe.

Gruß

Robert
breaker_one
*
Beiträge: 10
Registriert: Di, 17.03.2015 18:39

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [KALKULATION]

Beitrag von breaker_one »

Cool vielen dank ...

die Welt der Makros hab ich bisher nur durch ergooglen betreten, und auch nur um von Formular zu Formular zu wechseln.
Gesehen, und bis aufs Makro verstanden ^^

Code: Alles auswählen

	oFormZiel = thisComponent.Drawpage.Forms.getByName("Zielformular")
Kann ich diesen Teil variabel gestalten denn die Kalkulation bekommt jedes mal einen anderen Namen, welchen ich gerne mit dem auftrag verknüfen will

Code: Alles auswählen

	oFormZiel.updateString(2, oFormStart.getString(1))	'Felder aus Startformular auslesen und, wegen ID um eine Nummer versetzt, wieder einfügen
	oFormZiel.updateString(3, oFormStart.getString(2))
	oFormZiel.updateString(4, oFormStart.getString(3))
	oFormZiel.updateString(5, oFormStart.getString(4))
	oFormZiel.insertRow()	'Datensatz schreiben
END SUB
Den Teil versteh ich nicht :) ich bin aber nicht auf 5 Datensätze beschränkt oder?


werd jetzt mal testen und es auf meine bedürfnisse umarbeiten (mysql-datenbank), und dann berichten ob es funktioniert ^^


:::edit
geht das makro eigentlich auch bei einer mysql datenbank?
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [KALKULATION]

Beitrag von RobertG »

Hallo Daniel,

das Makro müsste genau so auch mit MySQL laufen, da es sich allein auf die Funktionalitäten beschränkt, die die Oberfläche von Base bereitstellt. Was ich noch mit einbauen würde ist die Aktualisierung des Formularteils, aus dem die Daten herauskopiert werden, damit keine doppelten Kopien in der Zieltabelle liegen.

Code: Alles auswählen

oFormZiel = thisComponent.Drawpage.Forms.getByName("Zielformular")
Diesen Formularnamen siehst Du, wenn Du das Formular zum Bearbeiten öffnest und den Formularnavigator aufsuchst. Der Name hat nichts mit einer eventuell vorhandenen Datenquelle zu tun. Die wird in den Formulareigenschaften aufbewahrt. Natürlich kannst Du auch im Formular einen anderen Namen wählen. Dann muss aber die Bezeichnung in dem Makro geändert werden. Mit ein bisschen Gefummele lässt sich das auch ohne die Namen im Makro erstellen.

Code: Alles auswählen

oFormZiel.updateString(2, oFormStart.getString(1))
Aus dem Formular, das die zu kopierenden Daten enthält, werden die Daten des aktuellen Datensatzes ausgelesen. Dabei wird Spalte für Spalte ausgelesen. oFormStart.getString(1) ist der Inhalt der ersten Spalte der dem Formular zugrundeliegenden Datenquelle. Ich lese den Inhalt als Text (getString) aus, weil ich ihn nur in ein anderes Feld übertragen möchte (nicht damit rechnen o.ä.).
Das Formular, in das die Daten eingefügt werden sollen, ist als oFormZiel benannt. Der Inhalt des ersten Feldes des Ausgangsformulars wird auf das zweite Feld des Zielformulars übertragen. Das ist deshalb bei dem Beispiel notwendig, weil das erste Feld der Zieltabelle das Feld "ID" ist, das in der Ausgangstabelle nicht vorhanden ist. Übertragen wird mit updateString() - da ich wieder nur die Zeichen drin haben will.

Das kannst Du natürlich auf beliebig viele Felder ausdehnen. Bei dem Verfahren darfst Du nur nicht nachträglich die Reihenfolge von Feldern in einer Datenquelle ändern (Formualr selbst spielt keine Rolle). Wenn Du sicher gehen willst, dass die Felder auch stimmen, musst Du erst über den Namen die Nummer des Feldes ermitteln und dann den Inhalt auslesen bzw. einfügen.

Gruß

Robert
breaker_one
*
Beiträge: 10
Registriert: Di, 17.03.2015 18:39

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [KALKULATION]

Beitrag von breaker_one »

Nice nice ... wird immer besser, hab die Funktionen vernunftigt eingebaut bekommen und eine möglichkeit zum Export in eine Calc-Tabelle eingebaut.

Doch lieber wäre mir eigentlich ein Makro mit dem ich die bestehende aktuelle Kalkulationszusammenstellung in eine neue Tabelle in einem Unterordner "Kalkulation" kopiere. So langsam check ich auch die Syntax der BASIC Makros :) ...

wo finde ich denn einen guten überblick über die schnitstellen die ich ansprechen kann und die syntax die ich benutzen muß :) ?

ich bekomm zwar gerne fische aber lieber lerne ich fischen ;)
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [KALKULATION]

Beitrag von RobertG »

Hallo Daniel,

im Handbuch sind gut 60 Seiten zu Makros mit Base. Hinzu kommen noch Beispieldatenbanken mit einer Beschreibung. Vielleicht ist das ja erst einmal ein Einstieg, den Du gebrauchen kannst.

Die Beispieldatenbank zum Duplizieren habe ich übrigens noch etwas überarbeitet. Jetzt mit einem Formular ohne Makro, dem Formular mit Makro, wobei gleich die auszulesenden Daten im Formular jeweils aktualisiert werden, und ein Makro, das nicht weiter eingebaut wird, aber grundsätzlich dann funktioniert, wenn in Quelle und Ziel gleich benannte Felder enthalten sind. Die Datenbank wirst Du dann demnächst auch in dem Päckchen mit den Beispieldatenbanken finden.

Gruß

Robert
Dateianhänge
Beispiel_Duplizieren_von_Daten_unterschiedliche_Quelltabellen.odb
Duplizieren und Neueinlesen Formular
(23.72 KiB) 133-mal heruntergeladen
breaker_one
*
Beiträge: 10
Registriert: Di, 17.03.2015 18:39

Re: Datenbankneuling / Firmenprojekt bitte um Hilfe [KALKULATION]

Beitrag von breaker_one »

RobertG hat geschrieben:Hallo Daniel,

schau Dir einmal die Ergänzung an, die ich im vorhergehenden Beitrag mit einem kleinen Beispiel gemacht habe.

Gruß

Robert

Hab alles so umgesetzt bekommen ^^ das einzige Problem ist das das "Quellformular" und das "Zielformular" Unterformulare meines Filterformulares sind und beim kopieren des datensatzes bekomm ich eine fehlermeldung
No such Elemet Exception

Code: Alles auswählen

oFormStart = thisComponent.Drawpage.Forms.getByName("fArtikel")
Liegt es daran das es ein Unterformuklar ist?

**** EDIT


noch eine ganz Grundlegende frage.
Ich habe mehrere Filter in den Formularen. Diese schreiben ihren aktuellen Suchwert in eine Filtertabelle, in der ich für mehrere verschiedene Filter Felder angelegt habe. Wenn das ganze mal in einer Multiuser-Umgebung laufen soll überschreiben sich dann nicht die leute gegenseitig? oder kann dann immer nur einer suchen solange die eingabe nicht gespeicher ist? Sollte ich die Filtertabellen lokal speichern?!
Antworten