🙏 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. 🤗

Defaultwerte für Tabellenfelder in Base und MySQL

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
wodim
Beiträge: 18
Registriert: So 4. Aug 2013, 16:54

Defaultwerte für Tabellenfelder in Base und MySQL

Beitrag von wodim » Mi 7. Aug 2013, 16:59

Hallo,

hab' also eine Base-DB als "Frontend" via ODBC mit einer MySQL-DB verknüpft. Wenn ich jetzt in Base ein Feld neu anlege und einen Defaultwert angebe, übernimmt den MySQL nicht und umgekehrt. Ist das ein 'known bug' oder kann man das im Setup von LC ändern?

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

Re: Defaultwerte für Tabellenfelder in Base und MySQL

Beitrag von RobertG » Mi 7. Aug 2013, 19:43

Hallo wodim,

ist ein bekannter Bug, vielleicht sogar so gewollt?
https://bugs.freedesktop.org/show_bug.cgi?id=45606
Es gibt in Base sozusagen zwei Sorten von Default-Werten.
Mit den einen, die Du auch bei der Tabellendefinition in der GUI eingibst, legst Du Werte fest, bereits vor der Eingabe in den Feldern sichtbar sind. Du musst diese Werte also überschreiben, wenn Du neue Werte eingeben willst. Das ist eine reine Sache der GUI.
Die Default-Werte der Datenbank kannst Du nicht über die Tabellendefinition der GUI festlegen. Das geht nur über SQL:
ALTER TABLE "Tabellenname" ALTER COLUMN "Feldname" SET DEFAULT <Standardwert>;
bzw. für MySQL bzw. MariaDB vielleicht
ALTER TABLE `Datenbankname`.`Tabellenname` ALTER COLUMN `Feldname` SET DEFAULT <Standardwert>;
Entsprechende Hinweise sind auch im Handbuch enthalten.
Dass das ein Bug und kein Feature ist siehst Du spätestens dann, wenn Du bei der Beziehungsdefinition mit "Default"-Werten arbeiten willst. Da hat dann der User seiner Ansicht nach solche in der Tabelle festgelegt und die Datenbank sagt: existiert nicht.

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

wodim
Beiträge: 18
Registriert: So 4. Aug 2013, 16:54

Re: Defaultwerte für Tabellenfelder in Base und MySQL

Beitrag von wodim » Mi 7. Aug 2013, 20:18

RobertG hat geschrieben:ist ein bekannter Bug, vielleicht sogar so gewollt?
Mit Sicherheit schon lange bekannt, aber ab hier muss man doch nur den ersten Satz lesen. ;)

https://bugs.freedesktop.org/show_bug.cgi?id=45606#c2
Sorry, but I can not understand problem for reproduce it.
Offensichtlich wollte man also bis heute nicht verstehen. Hoffen wir also, dass das der einzige "ewige" Bug in Base ist. ;)

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

Re: Defaultwerte für Tabellenfelder in Base und MySQL

Beitrag von RobertG » Mi 7. Aug 2013, 20:51

Hallo wodim,

einfach ein bisschen weiter lesen. Sasha hat das ja schließlich verstanden - aber er ist auch nicht so bewandert in Datenbankproblemen. Lionel steht da bereits im CC - und der ist derjenige, der sich wohl am meisten um die Base-Bugs kümmern kann. Nur ist das Default-Problem wohl eher etwas für Leute, die intensiver mit Datenbanken arbeiten. Der Normaluser stolpert darüber nur selten.
Die größten "Karteileichen" haben wir zur Zeit wohl eher im Report-Builder liegen. Da ist die Entwicklung zu OpenOffice-Zeiten irgendwann wohl auf der Strecke geblieben - einige Menüpunkte haben schlicht keine Funktion.

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

wodim
Beiträge: 18
Registriert: So 4. Aug 2013, 16:54

Re: Defaultwerte für Tabellenfelder in Base und MySQL

Beitrag von wodim » Do 8. Aug 2013, 08:48

RobertG hat geschrieben:Lionel steht da bereits im CC - und der ist derjenige, der sich wohl am meisten um die Base-Bugs kümmern kann.
Könnten sie schon, müssten sie m.E. sogar - und warum tun sie's nicht? Der Bug wurde März 2012 gemeldet und ist immer noch drin. Und das ist keine Lappalie - sowas darf's einfach nicht geben. Nicht in einer "professionellen" Datenbankanwendung, die ernst genommen werden will.

Wie der schlechte Gag: "Extras" -> "Beziehungen": "DIese Datenbank unterstützt keine Relationen!" Und das, obwohl ich in der MySQL-DB schon welche definiert hatte - ich dachte ja, ich lese nicht richtig. Und gugge nur an - wenn man eine Abfrage mit dem Assistenten erstellt, sind sie auch zu sehen - MS Access lässt grüßen. ;) Also Leute, wenn man schon abkupfert, dann wenigstens richtig. Nicht nur das GUI, auch und vor allem die Funktionalität! Solche Schnitzer dürfen einfach nicht passieren - und wenn sie gemeldet werden, müssen sie umgehend 'raus sein. Ist wohl bei der gesamten Entwicklung von Linux so, dass die vom Dialog mit den Usern lebt - und ausgerechnet bei so einer "repräsentativen" Anwendung hängt's an allen Ecken und Kanten.
RobertG hat geschrieben:Nur ist das Default-Problem wohl eher etwas für Leute, die intensiver mit Datenbanken arbeiten. Der Normaluser stolpert darüber nur selten.
Ah so - wenn ich also bei der "Entwicklung" der "auf meinen Bedarf maßgeschneiderten" Datenbank mit GUI mit Verwaltung meines Kleinteilelagers und meiner Einkäufe anfange, bin ich als User solcher elementaren DB-Funktionen schon zu intensiv? Schlechter Scherz.

Mein erstes Formular liegt über der Tabelle "Artikel" (grob geschätzt 500 Einzelposten, die ich mal in die Datenbank 'reinkriegen muss, also erst mal so 'ne Art Inventur), und da ist der Defaultwert für die "Mengeneinheit" nun mal "Stück", der für "Lager" "Kleinteilelager", ... Und das parallel in der Base- und in der MYSQL-DB "pflegen" zu müssen, nervt gelinde gesagt gewaltig. Und dass ich in Base "grafisch" nachträglich nichts mehr ändern kann, wenn eine Tabelle erst mal gespeichert habe - nur Felder löschen und neu anlegen ...

Für MySQL nutze ich übrigens ein grafisches Tool, dass einem auch schon viel SQL - Tipparbeit abnimmt, nennt sich "Emma" - längst nicht so komplex wie MYSQL - Admin oder Workbench, aber reicht vollkommen. Und da editiere ich mal fix eine Tabelle (lege Default-Werte fest) - und die kommen in Base nicht an, umgekehrt auch nicht ... Nicht böse sein, sowas muss einfach funktionieren!

Im Moment gibt's erst mal 4 Tabellen: "artikel", "lieferanten" "einkaeufe" "einkaufpos", also auch schon mit einigen Defaultwerten und Relationen, und das ist erst der Anfang ...
RobertG hat geschrieben:Die größten "Karteileichen" haben wir zur Zeit wohl eher im Report-Builder liegen. Da ist die Entwicklung zu OpenOffice-Zeiten irgendwann wohl auf der Strecke geblieben - einige Menüpunkte haben schlicht keine Funktion.
Na, das kann ja noch heiter werden. ;)
Zuletzt geändert von wodim am Fr 9. Aug 2013, 21:44, insgesamt 1-mal geändert.

pmoegenb

Re: Defaultwerte für Tabellenfelder in Base und MySQL

Beitrag von pmoegenb » Do 8. Aug 2013, 09:10

Hallo wodim,
anscheinend bist Du der Auffassung, dass hier im Forum Entwickler von The Document Foundation verkehren. Da bist Du aber auf dem falschen Dampfer, schau einfach mal ins Impressum.

Im Übrigen wundere ich mich, dass Du bei Deinen Ansprüchen nicht eine Entwicklungsumgebung verwendest, die keine Laufzeitumgebung wie LibreOffice erfordert, sondern eine kompilierte ausführbare Datei liefert.

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

Re: Defaultwerte für Tabellenfelder in Base und MySQL

Beitrag von RobertG » Do 8. Aug 2013, 09:18

Hallo wodim,

ich habe den Eindruck, dass Du auf falsche Pferd setzt. LO ist ein freies Projekt. Da zahlst Du nichts dafür, ich nicht und sonst auch keiner. Da muss niemand einen Bug beheben. Da freue ich mich, wenn das jemand tut.
MySQL ist nicht von vornherein eine relationale Datenbank. Relationen kannst Du mit InnoDB-Tabellen erstellen, mit MyISAM nicht. Da gibt es keine Überprüfung von Fremdschlüsseln, die Du irgendwo definierst. Das musst Du schon durch Deine Datenbankkonstruktion selbst erledigen.
Das Default-Problem taucht hier in den Foren (auch im OpenOffice-Forum) fast gar nicht auf. Das meine ich damit, dass Normaluser anscheinend darüber gar nicht stolpern.
Ich werde jetzt einmal testen, ob Default-Werte wirklich bei MySQL nicht geschrieben werden, wenn ich MySQL mit Base verbinde. Sollte mich wundern. Mir scheint da ein Missverständnis Deinerseits vorzuliegen: Default-Werte werden in einer Datenbank dann geschrieben, wenn beim Insert eines Datensatzes das entsprechende Feld NULL ist. Sie werden also nirgendwo vorher angezeigt.

Kleine Ergänzung: Ich habe das jetzt getestet mit einer MariaDB und LO 4.1.0.4 Über den direkten SQL-Modus habe ich einen Default-Wert für ein VARCHAR-Feld erstellt:

Code: Alles auswählen

ALTER TABLE libretest.Tab1Def ALTER COLUMN Name_Default SET DEFAULT 'LibreOffice'
Gehe ich in die Tabelle und gebe etwas ein und lasse die Spalte "Name_Default" frei, dann erscheint dort 'LibreOffice'.
Die Default-Werte funktionieren also unter Base. Nur die Definition bei der grafischen Tabellenerstellung ist nicht möglich. Das, was dort als "Default-Wert" bezeichnet wird, ist eben ein "Vorgabewert" der Benutzeroberfläche und wird wie die Formatierung auch nicht in der Datenbanktabelle sondern in der internen Definition von Base gespeichert.

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

wodim
Beiträge: 18
Registriert: So 4. Aug 2013, 16:54

Re: Defaultwerte für Tabellenfelder in Base und MySQL

Beitrag von wodim » Do 8. Aug 2013, 20:11

pmoegenb hat geschrieben:Hallo wodim,
anscheinend bist Du der Auffassung, dass hier im Forum Entwickler von The Document Foundation verkehren.
Das nicht, aber User mit Erfahrung.
pmoegenb hat geschrieben:Im Übrigen wundere ich mich, dass Du bei Deinen Ansprüchen nicht eine Entwicklungsumgebung verwendest, die keine Laufzeitumgebung wie LibreOffice erfordert, sondern eine kompilierte ausführbare Datei liefert.
Naja, weißt du, ich hab' ja lange was für Linux gesucht, wo ich man sich "mal fix was dazuprogrammieren kann" - eben mal die Datenbank um ein paar Tabellen erweitert, ein paar Formulare drüber - nichts dergleichen gefunden. (Hab's z.B. mal mit GNUCash probiert - das ist aber für mein Vorhaben völlig ungeeignet. Zu sehr "aktien- und börsenorientiert", sagen wir mal.)

Die erforderliche Laufzeitumgebung bei LO stört mich nicht, die kam ja mit meinem Debian mit, und die läuft auch über ODBC mit der MySQL-DB erstaunlich fix (so weit ich das schon beurteilen kann, mit meinen paar Datensätzen in 4 Tabellen jetzt). ;)

"Angeregt" wurde ich eigentlich durch einen alten Freelancer, der von seiner ersten selbstständigen Stunde an (also seit 30 Jahren) alles mit dem DB-Teil von MS Works macht. Wirklich alles - Lagerverwaltung (wie bei mir hauptsächlich "Hühnerfutter" in Form von elektronischen Bauelementen, nur schon viel mehr) ;) Fahrtenbuch, Einnahme-Überschussrechnung, ..., ..., einfach alles. Und mit seinen Reports auch "dokumentenecht" gegenüber Kunden und Behörden ...

Was würdest du denn als Alternative vorrschlagen?

wodim
Beiträge: 18
Registriert: So 4. Aug 2013, 16:54

Re: Defaultwerte für Tabellenfelder in Base und MySQL

Beitrag von wodim » Do 8. Aug 2013, 20:45

RobertG hat geschrieben:ich habe den Eindruck, dass Du auf falsche Pferd setzt. LO ist ein freies Projekt. Da zahlst Du nichts dafür, ich nicht und sonst auch keiner. Da muss niemand einen Bug beheben. Da freue ich mich, wenn das jemand tut.
Das ganze Linux ist frei - und Unmengen Entwickler sind damit beschäftigt. Und LO ist die erste Software dafür, die mir begegnet, wo sich keiner zuständig fühlt, Bugs zu beheben. Oder ganz einfach keiner dazu in der Lage ist - möglich, dass sie sich mit so einem Komplex einfach ein bisschen zuviel vorgenommen haben? Speziell Datenbank - Entwicklungstools sind nun mal nicht ganz einfach zu machen, und Firmen wie meinetwegen Oracle lassen sich das gut bezahlen ... ;)
RobertG hat geschrieben:MySQL ist nicht von vornherein eine relationale Datenbank. Relationen kannst Du mit InnoDB-Tabellen erstellen, mit MyISAM nicht. Da gibt es keine Überprüfung von Fremdschlüsseln, die Du irgendwo definierst. Das musst Du schon durch Deine Datenbankkonstruktion selbst erledigen.
Richtig, deshalb baue ich meine DB ja auch mit InnoDB-Tabellen.
RobertG hat geschrieben:Das Default-Problem taucht hier in den Foren (auch im OpenOffice-Forum) fast gar nicht auf. Das meine ich damit, dass Normaluser anscheinend darüber gar nicht stolpern.
Naja, gehen wir mal davon aus, dass nicht allzu viele mit einem MySQL-Server arbeiten. Weiß auch nicht, welcher Teufel mich geritten hat, gleich damit anzufangen. ;) Aber mit den Jahren wird die Anwendung ja "wachsen" - und soll nicht irgendwann an Grenzen stoßen.
RobertG hat geschrieben:Ich werde jetzt einmal testen, ob Default-Werte wirklich bei MySQL nicht geschrieben werden, wenn ich MySQL mit Base verbinde. Sollte mich wundern. Mir scheint da ein Missverständnis Deinerseits vorzuliegen: Default-Werte werden in einer Datenbank dann geschrieben, wenn beim Insert eines Datensatzes das entsprechende Feld NULL ist. Sie werden also nirgendwo vorher angezeigt.
Aber sicher - wenn ich einen festlege, wird der mir im Formular angezeigt, wenn ich "neuer Datensatz" anklicke und die anderen Felder noch leer sind. In der Datenblattansicht der Tabelle auch.
RobertG hat geschrieben:Kleine Ergänzung: Ich habe das jetzt getestet mit einer MariaDB und LO 4.1.0.4 Über den direkten SQL-Modus habe ich einen Default-Wert für ein VARCHAR-Feld erstellt:

Code: Alles auswählen

ALTER TABLE libretest.Tab1Def ALTER COLUMN Name_Default SET DEFAULT 'LibreOffice'
Gehe ich in die Tabelle und gebe etwas ein und lasse die Spalte "Name_Default" frei, dann erscheint dort 'LibreOffice'.
Die Default-Werte funktionieren also unter Base.
Hat ja keiner bestritten. Ok, die Definition per SQL hab' ich noch nicht feldweise händisch gemacht (ist mir echt zu mühselig und fehleranfällig), nur die Schlüssel.
RobertG hat geschrieben:Nur die Definition bei der grafischen Tabellenerstellung ist nicht möglich. Das, was dort als "Default-Wert" bezeichnet wird, ist eben ein "Vorgabewert" der Benutzeroberfläche und wird wie die Formatierung auch nicht in der Datenbanktabelle sondern in der internen Definition von Base gespeichert.
Genau. Und das ist Sch...lecht.

Der grafische Editor arbeitet ja auch nur mit SQL - Statements - und in MySQL kannst du dann auf "Table" klicken und siehst das komplette CREATE TABLE - Statement. Incl. der Fehler, die du 'reingehauen hast. ;)

Noch besser ist das hier:

Code: Alles auswählen

mysqldump -u root -p <DBname> > datei
"datei" ist dann ein SQL-Script mit sämtlichen Statements zum Rückspeichern (Neuaufbau) der kompletten Datenbank (incl. INSERT für die Daten).
Zuletzt geändert von wodim am Fr 9. Aug 2013, 13:55, insgesamt 1-mal geändert.

pmoegenb

Re: Defaultwerte für Tabellenfelder in Base und MySQL

Beitrag von pmoegenb » Do 8. Aug 2013, 21:23

wodim hat geschrieben:Hab's z.B. mal mit GNUCash probiert - das ist aber für mein Vorhaben völlig ungeeignet.
Wenn GNUCash meinen Kartenleser erkannt hätte, wäre das heute meine Bankensoftware.
wodim hat geschrieben:Was würdest du denn als Alternative vorrschlagen?
Schau Dir mal Lazarus an, damit hast eine echte Entwicklungsumgebung (für eine Vielzahl an Betriebssystemen) für Object-Pascal und das ohne einen Cent zu bezahlen.


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