Grundlegende Fragen zu Base

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

a-zeller
*****
Beiträge: 364
Registriert: Fr, 05.11.2004 18:30

Grundlegende Fragen zu Base

Beitrag von a-zeller »

Ich erlaube mir mal hier ein paar grundlegende Fragen zu stellen, die mir bei den ersten Tests mit Base gekommen sind. Und ich gestehe, ich habe das Base-Handbuch wirklich nur grob überflogen. ;)

Wie kann ich im Tabellen-Entwurfsmodus einen Index Primärschlüssel aus mehreren Felder erstellen? Ich meine so etwas wie z. B Name und Geburtsdatum.

Bereits in der Tabellendefinition kann man ja Formatierungen, wie z. B. Währung oder Datum, definieren. Offenbar werden diese aber weder in Abfragen noch Formularen übernommen. Sehe ich es also richtig, dass man diese Formatierungen und vermutlich auch Wertbereiche u.ä. nur in Formularen und Berichten definieren sollte?

Gibt es bei der Formularerstellung eine Tastenkombi um einer Gruppe beizutreten?

Wenn ich im Formular-Entwurfsmodus nachträglich ein Feld eingeben möchte, geht das wohl über Textfeld oder Formatiertes Feld. In den Eigenschaften des Feldes kann ich dann das Datenfeld (Daten-Reiter) festlegen aber wenn ich dann im Allgemein-Reiter auf Beschriftungsfeld gehe, wird nur MainForm angeboten und das enthält in meinem Fall nicht das gewünschte Feld. Vielleicht habe ich ja etwas falsch verstanden, deshalb formuliere ich es mal allgemein: wie füge ich nachträglich ein Feld inkl. Beschriftung hinzu?

Kann man Vorlagen für Felder in Formularen, z. B. Grösse, Aussehen und Formatierung, erstellen?
Ich nutze LibreOffice unter Kubuntu Linux.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Grundlegende Fragen zu Base

Beitrag von F3K Total »

Moin,
a-zeller hat geschrieben:Wie kann ich im Tabellen-Entwurfsmodus einen Index Primärschlüssel aus mehreren Felder erstellen? Ich meine so etwas wie z. B Name und Geburtsdatum.
Markiere beide Zeilen, rechte Maustaste, Primärschlüssel
PS.png
PS.png (8.57 KiB) 5099 mal betrachtet
a-zeller hat geschrieben:Bereits in der Tabellendefinition kann man ja Formatierungen, wie z. B. Währung oder Datum, definieren. Offenbar werden diese aber weder in Abfragen noch Formularen übernommen. Sehe ich es also richtig, dass man diese Formatierungen und vermutlich auch Wertbereiche u.ä. nur in Formularen und Berichten definieren sollte?
Ja!
a-zeller hat geschrieben: Gibt es bei der Formularerstellung eine Tastenkombi um einer Gruppe beizutreten?
STRG + anklicken
a-zeller hat geschrieben:Wenn ich im Formular-Entwurfsmodus nachträglich ein Feld eingeben möchte, geht das wohl über Textfeld oder Formatiertes Feld. In den Eigenschaften des Feldes kann ich dann das Datenfeld (Daten-Reiter) festlegen aber wenn ich dann im Allgemein-Reiter auf Beschriftungsfeld gehe, wird nur MainForm angeboten und das enthält in meinem Fall nicht das gewünschte Feld. Vielleicht habe ich ja etwas falsch verstanden, deshalb formuliere ich es mal allgemein: wie füge ich nachträglich ein Feld inkl. Beschriftung hinzu?
Über das Icon "Feld hinzufügen"
NF.png
NF.png (13.59 KiB) 5099 mal betrachtet
Einfach gewünschte Spalte auf das Formular ziehen
a-zeller hat geschrieben:Kann man Vorlagen für Felder in Formularen, z. B. Grösse, Aussehen und Formatierung, erstellen?
Nicht das ich wüßte, aber man kann sie aus bereits vorhandenen Formularen kopieren.
Gruß R
a-zeller
*****
Beiträge: 364
Registriert: Fr, 05.11.2004 18:30

Re: Grundlegende Fragen zu Base

Beitrag von a-zeller »

Vielen Dank, das ist sehr hilfreich! :D

Dass man mehrere Felder markieren kann um sie als Primärschlüssel zu verwenden, darauf muss man erst mal kommen. ;)

Kann ich ohne Makro auch einen automatisch hochgezählten Index mit Text erstellen, z. B. "RE 2013-001", "RE 2013-002" usw?
F3K Total hat geschrieben:
a-zeller hat geschrieben:Sehe ich es also richtig, dass man diese Formatierungen und vermutlich auch Wertbereiche u.ä. nur in Formularen und Berichten definieren sollte?
Ja!
Das gilt aber nicht für "Eingabe erforderlich" oder sollte man das auch besser im Formular klären (geht das ohne Makro)?

Kann man Feldeigenschaften einer Tabelle nachträglich ändern? Das evtl. Daten verloren gehen können, ist klar aber eben wollte ich die Eigenschaft "Eingabe erforderlich" ändern und wurde beim Versuch zu Speicher darauf hingewiesen, dass die Spalte nicht gespeichert werden könne "Soll sie statt dessen gelöscht und das neue Format angehängt werden?" (SQL-Status: 23000 Fehler-Code: -197). Das verstehe ich nicht.

Und noch eine banale Frage, zu der ich aber nichts im Handbuch fand: kann man Sonderzeichen (Umlaute, Leerzeichen) in Feld- oder Formularnamen oder dergleichen verwenden?
Zuletzt geändert von a-zeller am So, 22.09.2013 16:48, insgesamt 1-mal geändert.
Ich nutze LibreOffice unter Kubuntu Linux.
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Grundlegende Fragen zu Base

Beitrag von RobertG »

Hallo a-zeller,
a-zeller hat geschrieben: Kann ich ohne Makro auch einen automatisch hochgezählten Index mit Text erstellen, z. B. "RE 2013-001", "RE 2013-002" usw?
Nur begrenzt über Abfragetechniken. Das, was Du da haben möchtest, setzt sich ja aus dem Jahr und einer laufenden Nummer zusammen. Die Nummer würde dann aber nicht zu Beginn des Jahres wieder bei 1 beginnen.
a-zeller hat geschrieben:
F3K Total hat geschrieben:
a-zeller hat geschrieben:Sehe ich es also richtig, dass man diese Formatierungen und vermutlich auch Wertbereiche u.ä. nur in Formularen und Berichten definieren sollte?
Ja!
Das gilt aber nicht für "Eingabe erforderlich" oder sollte man das auch besser im Formular klären (geht das ohne Makro)?
Das sollte auf jeden Fall standardmäßig bereits in der Tabelle stehen. Schließlich könnte es auch sein, dass Du einmal Daten in der Tabelle direkt änderst. Und wenn da ein Feld NULL ist, was es eigentlich nicht sein soll ...
a-zeller hat geschrieben: Kann man Feldeigenschaften einer Tabelle nachträglich ändern? Das evtl. Daten verloren gehen können, ist klar aber eben wollte ich die Eigenschaft "Eingabe erforderlich" ändern und wurde beim Versuch zu Speicher darauf hingewiesen, dass die Spalte nicht gespeichert werden könne "Soll sie statt dessen gelöscht und das neue Format angehängt werden?" (SQL-Status: 23000 Fehler-Code: -197). Das verstehe ich nicht.
Versuche es einfach einmal mit einem "Alter Table"

Code: Alles auswählen

ALTER TABLE "Tabellenname" ALTER COLUMN "Feldname" SET [NOT] NULL
Setzt oder entfernt eine NOT NULL Bedingung für ein Feld.
Manchmal funktioniert der direkte Weg besser. Vielleicht ist aber auch in den Feldern Deiner Tabelle irgendwo ein Wert leer geblieben - dann musst Du erst einmal dafür sorgen, dass die Inhalte tatsächlich überall in dieser Spalte nicht NULL sind.
a-zeller hat geschrieben: Und noch eine banale Frage, zu der ich aber nichts im Handbuch fand: kann man Sonderzeichen (Umlaute, Leerzeichen) in Feld- oder Formularnamen oder dergleichen verwenden?
Da wirst Du nie einen Satz im Handbuch zu finden, da der Autor (ich) Sonderzeichen bei Datenbank- und Feldbezeichnungen meidet wie ein Teufel das Weihwasser. Ich komme noch aus der DOS-Zeit. Ich habe es auch schon erlebt, dass zwar mit einem Betriebssystem oder der Vorversion eines Betriebssystems eine Datei geschrieben werden konnte, die mit dem nächsten System selbst auf der Konsole nicht mehr löschbar war, weil die Bezeichnung auch über Wildcards nicht greifbar war und das Verzeichnis nicht löschbar, weil eben darin eine Datei nicht löschbar war. Da ging dann nur noch ein Formatieren (in diesem Fall des Sticks).
Ich schreibe "Strasse" statt "Straße" und "GebDat" statt "geboren am". Wenn ich das Ganze dann mit Umlauten haben will, dann mache ich das über die Bezeichnungen im Formular oder im Bericht.

Gruß

Robert
a-zeller
*****
Beiträge: 364
Registriert: Fr, 05.11.2004 18:30

Re: Grundlegende Fragen zu Base

Beitrag von a-zeller »

OK, das war ein etwas komplizierter Index, Du hast Recht, aber wie ginge "RE 000001", "RE 000002" ff?

Die DOS-Zeiten kenne ich auch noch (wer braucht schon mehr als 8+3 Zeichen für Dateinamen?) aber inzwischen nutze ich gern "_" für Präfixe. Und nach den Umlauten habe ich wegen konkreten Erfahrungen mit LO gefragt.
RobertG hat geschrieben: Versuche es einfach einmal mit einem "Alter Table"

Code: Alles auswählen

ALTER TABLE "Tabellenname" ALTER COLUMN "Feldname" SET [NOT] NULL
Setzt oder entfernt eine NOT NULL Bedingung für ein Feld.
Manchmal funktioniert der direkte Weg besser. Vielleicht ist aber auch in den Feldern Deiner Tabelle irgendwo ein Wert leer geblieben - dann musst Du erst einmal dafür sorgen, dass die Inhalte tatsächlich überall in dieser Spalte nicht NULL sind.
OK, ob alle Felder nicht leer sind, hatte ich nicht geprüft aber das ist wohl nicht das Problem. Also, Du meinst, ich soll ALTER TABLE "Tabellenname" ALTER COLUMN "Feldname" SET NOT NULL eintragen, nur wo? Wenn ich die Tabelle bearbeiten will, komme ich immer in die Entwurfsansicht.

Und noch etwas anderes. Ich gebe das Datum bei der Datenerfassung gerne in der Form TT/MM/JJ ein. Damit das in Calc funktioniert habe ich unter Menü > Extras > Optionen > Spracheinstellungen > Datumserkennungsmuster D.M.Y;D.M.;D/M/;D/M/Y eingetragen, Base ignoriert das leider. Kann ich das irgendwie ändern?
Ich nutze LibreOffice unter Kubuntu Linux.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Grundlegende Fragen zu Base

Beitrag von F3K Total »

Moin,
a-zeller hat geschrieben:z. B. "RE 2013-001", "RE 2013-002" usw?
geht als Abfrage, wenn die RechnungsID eine fortlaufende Auto-Integer <= 999 ist, etwa so:

Code: Alles auswählen

SELECT 'RE '||year(CURRENT_DATE)||'-'||REPEAT('0',3 - LENGTH("RechnungsID"))||convert("RechnungsID",Varchar(3)) as R_ID_CHAR FROM "Rechnungsdaten"
Gruß R
a-zeller
*****
Beiträge: 364
Registriert: Fr, 05.11.2004 18:30

Re: Grundlegende Fragen zu Base

Beitrag von a-zeller »

Dann funktioniert es aber nicht als Primärschlüssel. Aber egal, dann arbeite ich eben mit einfachen Index-Schlüsseln.

Aber Du hast mich an eine andere Frage erinnert, die später sicher auch noch gekommen wäre: bedingte Feldbeschriftungen, also z. B. Gewinn oder Verlust abhängig vom Zahlenwert des Feldes? Kann man das nur über eigene Felder/Abfragen lösen?
Ich nutze LibreOffice unter Kubuntu Linux.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Grundlegende Fragen zu Base

Beitrag von F3K Total »

Hallo,
a-zeller hat geschrieben:Kann man das nur über eigene Felder/Abfragen lösen?
Wenn du es nur im Formular angezeigt bekommen möchtest, kannst Du auch ein formatiertes Feld etwa so formatieren:

Code: Alles auswählen

[$Gewinn ]#.##0,00 [$€-407];[$Verlust ]-#.##0,00 [$€-407]
Gruß R
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Grundlegende Fragen zu Base

Beitrag von RobertG »

Hallo azeller,

dieser Thread geht inzwischen ja ziemlich durcheinander. Diese Antwort gehört jetzt zu einer Frage, die schon etwas zurück liegt:
SQL-Befehle, die keine Abfragen sind, gibst Du in
Extras → SQL
ein. Dort erhältst Du auch die Rückmeldung, ob das Kommando problemlos geklappt hat. Allerdings solltest Du anschließend auf den Bereich "Tabellen" gehen und
Ansicht → Tabellen aktualisieren
drücken, damit auch die GUI von einer Änderung im direkten Modus etwas mit bekommt.
Du kannst übrigens im direkten Modus je nach Version des Base-Moduls auch Abfragen in der Ausgabe betrachten ...
Das Datumsformat stellst Du in Deinem Formular ein. Markiere das Datumsfeld, rechte Maustaste,
Kontrollfeld → Allgemein → Datumsformat
Das steht auf "Standard (kurz)" und übernimmt den Standard, der zu Deiner Spracheinstellung passt. Habe ich hier bei einer Version die deutschen Sprachpakete nicht installiert, so erscheint das Format, das Du beschrieben hast.
Rechnungsnummer und Primärschlüssel:
Wenn Du die Nummer über eine Abfrage zusammenstellst, dann wird sie zusammen mit dem Primärschlüssel dargestellt. Der Primärschlüssel ist weiterhin "RechnungsID" und fortlaufend über mehrere Jahre, nicht mit einem Neustart zum Jahresbeginn. Diese Rechnungsnummer siehst Du auch nur dann, wenn der entsprechende Datensatz bereits abgespeichert ist.
Bedingte Feldbeschriftungen gibt es nicht. Das Feld heißt in der Tabelle immer gleich. Die eingebaute HSQLDB gibt da meines Wissens auch keine Möglichkeit, das in die Beschriftung werteabhängig über "AS Gewinn" oder "AS Verlust" einzubauen. Aus dem Grunde haben wohl viele Tabellen eine Spalte "Ausgaben" und eine Spalte "Einnahmen". Ich nutze da lieber die bedingte Formatierung des Feldes, die eben negative Werte rot kennzeichnet. Allerdings musst Du dafür im Formular ein 'formatiertes Feld' nehmen, kein 'Währungsfeld'.
Gruß

Robert
a-zeller
*****
Beiträge: 364
Registriert: Fr, 05.11.2004 18:30

Re: Grundlegende Fragen zu Base

Beitrag von a-zeller »

RobertG hat geschrieben:dieser Thread geht inzwischen ja ziemlich durcheinander.
In vielen Foren wird bevorzugt für solche "kleine" Fragen keine extra Threads aufzumachen, dem wollte ich mich vorauseilend gehorsam beugen, auch wenn ich davon selber nicht überzeugt bin - wieder falsch?

Ich kann jedenfalls die Antworten (noch) den Fragen zuordnen. ;)

Mit dem Datum meinte ich nicht die Formatierung der Anzeige sondern die Eingabe: also 22/9/13 eingeben und das soll erkannt werden als Datum und dann in der Ausgabe beliebig formatiert werden können. Oder habe ich Deine Antwort falsch verstanden?
Ich nutze LibreOffice unter Kubuntu Linux.
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Grundlegende Fragen zu Base

Beitrag von RobertG »

Hallo a-zeller,
a-zeller hat geschrieben: Mit dem Datum meinte ich nicht die Formatierung der Anzeige sondern die Eingabe: also 22/9/13 eingeben und das soll erkannt werden als Datum und dann in der Ausgabe beliebig formatiert werden können. Oder habe ich Deine Antwort falsch verstanden?
Das wird im Formular eingestellt. Damit musst Du auch auf entsprechende Art und Weise eingeben. Ich habe doch nicht von einer Darstellung in der Abfrage geschrieben.

Gruß

Robert
a-zeller
*****
Beiträge: 364
Registriert: Fr, 05.11.2004 18:30

Re: Grundlegende Fragen zu Base

Beitrag von a-zeller »

RobertG hat geschrieben:Das wird im Formular eingestellt. Damit musst Du auch auf entsprechende Art und Weise eingeben. Ich habe doch nicht von einer Darstellung in der Abfrage geschrieben.
OK, das mit der Eingabe klappt wunderbar. Aber nun bin ich vollends verwirrt. Wo stelle ich denn nun das Anzeige-Format ein? In der Abfrage? Ich habe extra ein Formular auf Basis einer Tabelle und nicht einer Abfrage erstellt, denn sonst klappte das mit der Änderung/Eingabe nicht. Die Abfrage wäre mir lieber gewesen, weil in der Abfrage Werte berechnet werden. Aktuell habe ich jetzt extra ein Unterformular eingerichtet, um diese Werte anzuzeigen.
gast freedom hat geschrieben:Denk mal an die anderen, die irgendwann im Forum Antwort auf eigene Frage suchen.
Welche Fragen und wie viele in diesem Thread stecken, weißt nur du.
Wie gesagt, ich bin Deiner Meinung, halte 1 Frage/Thread für sinnvoll, dachte nur, dass ist bei kurzen Fragen nicht erwünscht.
Ich nutze LibreOffice unter Kubuntu Linux.
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Grundlegende Fragen zu Base

Beitrag von RobertG »

Hallo a-zeller,

ebenfalls aus dem Handbuch:
Kapitel "Eingabemöglichkeit in Abfragen" - kurz gefasst
Du kannst nur dann in Abfragen Werte eingeben, wenn Du die Primärschlüssel aller Tabellen, auf der die Abfrage beruht, ebenfalls mit in der Abfrage hast.
Beispiel:

Code: Alles auswählen

SELECT * FROM "Tabelle"
Geht auf jeden Fall. Der Primärschlüssel ist dabei.

Code: Alles auswählen

SELECT "Tabelle".*, "Anzahl"*"Preis" AS "Gesamtpreis" FROM "Tabelle"
Geht aus dem gleichen Grunde, wenn die Felder "Anzahl" und "Preis" Felder aus "Tabelle" sind.

Viele meiner Formulare beruhen auf Abfragen. Vor allem deshalb, weil ich Zwischensummen und gruppierte Summen usw. sehen will. Wie geschrieben: Handbuch.

Gruß

Robert
Antworten