🙏 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!🍀
>> 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
Defaultwerte für Tabellenfelder in Base und MySQL
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?
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?
Re: Defaultwerte für Tabellenfelder in Base und MySQL
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
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Defaultwerte für Tabellenfelder in Base und MySQL
Mit Sicherheit schon lange bekannt, aber ab hier muss man doch nur den ersten Satz lesen.RobertG hat geschrieben:ist ein bekannter Bug, vielleicht sogar so gewollt?

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

Re: Defaultwerte für Tabellenfelder in Base und MySQL
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
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Defaultwerte für Tabellenfelder in Base und MySQL
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.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.
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.

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.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.
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 ...
Na, das kann ja noch heiter werden.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.

Zuletzt geändert von wodim am Fr 9. Aug 2013, 21:44, insgesamt 1-mal geändert.
Re: Defaultwerte für Tabellenfelder in Base und MySQL
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.
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.
Re: Defaultwerte für Tabellenfelder in Base und MySQL
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:
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
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'
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Defaultwerte für Tabellenfelder in Base und MySQL
Das nicht, aber User mit Erfahrung.pmoegenb hat geschrieben:Hallo wodim,
anscheinend bist Du der Auffassung, dass hier im Forum Entwickler von The Document Foundation verkehren.
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.)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.
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)

Was würdest du denn als Alternative vorrschlagen?
Re: Defaultwerte für Tabellenfelder in Base und MySQL
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: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.

Richtig, deshalb baue ich meine DB ja auch mit InnoDB-Tabellen.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.
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.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.

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: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.
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: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:Gehe ich in die Tabelle und gebe etwas ein und lasse die Spalte "Name_Default" frei, dann erscheint dort 'LibreOffice'.Code: Alles auswählen
ALTER TABLE libretest.Tab1Def ALTER COLUMN Name_Default SET DEFAULT 'LibreOffice'
Die Default-Werte funktionieren also unter Base.
Genau. Und das ist Sch...lecht.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.
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
Zuletzt geändert von wodim am Fr 9. Aug 2013, 13:55, insgesamt 1-mal geändert.
Re: Defaultwerte für Tabellenfelder in Base und MySQL
Wenn GNUCash meinen Kartenleser erkannt hätte, wäre das heute meine Bankensoftware.wodim hat geschrieben:Hab's z.B. mal mit GNUCash probiert - das ist aber für mein Vorhaben völlig ungeeignet.
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.wodim hat geschrieben:Was würdest du denn als Alternative vorrschlagen?
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.