Abhängige Listenfelder machen Probleme

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

RobertG
********
Beiträge: 2066
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von RobertG »

Hallo Patric,
Ignis Pugnatur hat geschrieben: Nach dem Starten öffnet sich ein Hauptmenü mit einer Schaltfläche. Die öffnet das Artikeleingabemenü mit den besagten Listenfeldern.
Merkwürdigerweise muss ich das Fenster erst schliessen und dann nochmals öffnen (über den Button) damit in den Listenfeldern die Einträge gezeigt werden. Ausserdem ist die Ladedauer etwas lang.
Ich habe das gerade heruntergeladen. bei mir ist der Inhalt der Listenfelder sofort da. Wenn Du von einer Ladedauer sprichst - welche meinst Du?
Welches System mit welcher Java-Version benutzt Du? Lies eventuell die Hinweise in den LO-Handbüchern dazu. Die gelten auch in OO: Unter Linux gibt es nur wenige Jave-Versionen, die überhaupt für Base brauchbar sind.

Ich habe jetzt die Datumsgeschichte auch noch einmal per Makro erstellt, da Du ja sowieso Makros nutzt. Ich lade die Datei einfach noch einmal mit allen drei Varianten hoch. Dann hast Du die Qual der Wahl ...

Gruß

Robert
Dateianhänge
Standarddatum.odb
Defaultdatum mit SQL, Abfrage als Hauptformular und Tabelle als Unterformular sowie per Makro
(22.69 KiB) 186-mal heruntergeladen
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Distribution: openSUSE 12.1 (i586)
KDE: 4.7.2 (4.7.2) "release 5"
Kernel: Linux 3.1.10-1.9-desktop i686

LibreOffice 3.4.5
OOO340m1 (Build:1505)

Java 1.6 - sind mehre unterschiedliche Pakete .... Phuuu

Mit Ladezeit meine ich die Zeit vom öffnen des Dokuments bis die Listenfelddaten angezeigt werden .....
geht 10 - 15 Sec bis die gezeigt werden ..... Ist ein bischen lang für die paar Sachen.

Den Rest checke ich morgen .... mir gehn hier gleich die Lichter aus ...

Patric
RobertG
********
Beiträge: 2066
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von RobertG »

Hallo Patric,
Ignis Pugnatur hat geschrieben:Distribution: openSUSE 12.1 (i586)
KDE: 4.7.2 (4.7.2) "release 5"
Kernel: Linux 3.1.10-1.9-desktop i686

LibreOffice 3.4.5
OOO340m1 (Build:1505)

Java 1.6 - sind mehre unterschiedliche Pakete .... Phuuu
Ich habe hier OpenSuSE 11.4, dann zwar andere Office-versionen, aberdie Java-Installation machts:
Du brauchst entweder die 1.6.0_22 von SUN oder die 1.6.0.0_b24 von OpenJDK. Die neueren Versionen von SUN sind zusammen mit Base/der HSQLDB unter SuSE gähnend langsam.
Du findest die 6u22 von SUN nach einigem Durchklicken in diesem Verzeichnis:
http://www.oracle.com/technetwork/java/ ... 39210.html

Gruß

Robert
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Ich werde aus den beiden Makros nicht wirklich schlau.
Das wird allerdings daran liegen, dass ich mich mit Makros und deren Programmstruktur nie wirklich beschäftigt habe.
IF-THENE-ELSE ist eines der wenigen die ich von der Funktion her verstehe.
Das mit dem Unterformular finde ich etwas zu umständlich, würde aber ggf. Sinn machen wenn man diese Funktion oft (also in mehreren Formularen/Berichten) benötigt.
Damit sollte ich mich mal befassen, denn auch diese Stuktur habe ich noch nicht ganz verstanden (das mit dem ID-Feld).

Das mit SQL ... naja ...
Ich hab das mal eingegeben
(ALTER TABLE "Tabellenname" ALTER COLUMN "Datumsfeldname" SET DEFAULT CURRENT_DATE)
- wüsste im moment nicht mal wie ich das in SQL prüfen könnte ..... und ob ich das nun richtig eingesetzt habe.
Ich habe zwar SQL aber weis nicht wie ich da rein komme.
Habe immer nur SQL gebraucht damit z.B. andere Programme dort DBs anlegen konnten (Audioplayer um Titel für die Programmdatenbank an zu legen). Mit SQL hatte ich noch nichts zu tun. Also sollte ich mir das Grundprinzip von SQL auch mal zu Gemüte führen.

Ich fühle mich grade etwas erschlagen .... ^^ - Ich sollte mich immer noch mit SuSe als O2 beschäftigen (Konsole etc.), dann nun Makros, Basic, SQL, nebenher auch HTML und PHP .... grrrrrrrrr.

Sorry dass ich mich grade anstelle wie der letzte Depp .... aber irgendwie sollte ich grade alles auf einmal lernen - Uff
RobertG
********
Beiträge: 2066
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von RobertG »

Hallo Patric,
Ignis Pugnatur hat geschrieben:Ich werde aus den beiden Makros nicht wirklich schlau.
Das wird allerdings daran liegen, dass ich mich mit Makros und deren Programmstruktur nie wirklich beschäftigt habe.
IF-THENE-ELSE ist eines der wenigen die ich von der Funktion her verstehe.

Code: Alles auswählen

FUNCTION Date_2_SQLDate(d AS DATE) AS STRING
	DIM stMonth AS STRING
	DIM stDay AS STRING
	IF Month(d) < 10 THEN
		stMonth = "0" + Trim(Str(Month(d)))
	ELSE
		stMonth = Trim(Str(Month(d)))
	END IF
	IF Day(d) < 10 THEN
		stDay = "0" + Trim(Str(Day(d)))
	ELSE
		stDay = Trim(Str(Day(d)))
	END IF
	Date_2_SQLDate = Trim(Str(Year(d))) +"-"+ stMonth +"-"+ stDay
END FUNCTION
Zuerst eine Kurzerklärung zu der Funktion: Funktionen haben einen Rückgabewert. Sie werden z.B. an anderer Stelle in einer Prozedur (SUB ...) aufgerufen und geben dort dann einen Wert wieder. ich habe so eine Funktion schreiben müssen, da das systeminterne Basic-Datum nicht dem Datum entspricht, das von der Datenbank erwartet wird. Das systeminterne Datum (eigentlich eine reine Zahl) muss zu einem Datum umgewandelt werden, das mit der vierstelligen Jahreszahl beginnt, danach ein en Bindestrich hat, dann die zweistelligen Monatszahl, wieder einen Bindestrich und die zweistellige Tageszahl. Du kannst so eine Funktion einfach als Blackbox nehmen. Ich packe ein Basic-Datum rein und bekomme eines in SQL-Schreibweise wieder heraus.

Code: Alles auswählen

SUB Datum_einfuegen
	oDoc=thisComponent
	oDrawpage=oDoc.Drawpage
	REM Lage des Feldes in dem entsprechenden Formular aufsuchen
	oForm=oDrawpage.Forms.getByName("Formular")
	oFeld=oForm.getByName("Datum")
	oFeldID=oForm.getByName("ID")
	IF IsEmpty(oFeldID.getCurrentValue) THEN
		stDatum = Date_2_SQLDate(CDate(Date()))
		oFeld.BoundField.updateString(stDatum)	'updateDate funktioniert hier nicht, da die Datentypen nicht übereinstimmen. Es wird ein String übergeben.
	END IF
END SUB
In dieser Prozedur wird auf die Felder in einem Formular zugegriffen. Der Start geht immer über "thisComponent". Das Formular wird mit Namen benannt, die beiden Felder (eins für das Datum, eines für den Primärschlüssel) sind ebenfalls mit Namen benannt. Das für den Primärschlüssel benötige ich, da ja nur bei der Neueingabe das Datum gesetzt werden soll. Dann ist das Primärschlüsselfeld leer. Das wird mit IF IsEmpty(...) überprüft.
Danach wird der Variablen stDatum das aktuelle Datum zugewiesen. Mit Date() erhalte ich das aktuelle Datum. Wenn Du einfach ein Makro "msgbox Date()" laufen lassen würdest, so würde diese Datum in einem Popup angezeigt. Dieses Datum wird als Zahl ausgegeben und über die GUI gegebenenfalls als Datum umformatiert. Mit CDate() erhalte ich daraus ein tatsächliches Datumsformat, aus dem ich dann Tage, Monate und Jahre extrahieren kann. Mit der vorherigen Funktion wird daraus das Datumsformat, das ich für den Eintrag in ein Feld einer Datenbank benötige.
Mit oFeld.BoundField spreche ich das Datenfeld zu dem Datumsfeld an. Ich ändere dort den Wert auf das SQL-Datum, das vorher erstellt wurde. Hier gebe ich einen String weiter, kein Datum - da die Typen untereinander eben nicht verträglich sind.
Nachteil dieser Version: Das Ganze sieht für Base wie eine Eingabe aus. Wird also sonst kein neuer Datensatz tatsächlich abgespeichert, so erfolgt die Nachfrage: "Sollen die Daten abgespeichert werden". Der Nutzer hat nur gar keine Daten eingegeben.
Ignis Pugnatur hat geschrieben: Das mit dem Unterformular finde ich etwas zu umständlich, würde aber ggf. Sinn machen wenn man diese Funktion oft (also in mehreren Formularen/Berichten) benötigt.
Damit sollte ich mich mal befassen, denn auch diese Stuktur habe ich noch nicht ganz verstanden (das mit dem ID-Feld).
Konstruktionen mit Formularen und Unterformularen anzuwenden - das ist eigentlich die Basis, mit der in Base gearbeitet wird. Dadurch erfolgt eine Datensatzfilterung und eine erkennbare Struktur in den Daten. Ich würde z.B. bei einer Konstruktion mit voneinander hierarchisch abhängigen Listenfeldern über diese Konstruktion arbeiten: Inhalt der Hauptkategorie im obersten Formular, Inhalt der ersten Unterkategorie um ersten Unterformular, Inhalt der zweiten Unterkategorie im ersten UnterUnterformular usw.
Ignis Pugnatur hat geschrieben: Ich hab das mal eingegeben
(ALTER TABLE "Tabellenname" ALTER COLUMN "Datumsfeldname" SET DEFAULT CURRENT_DATE)
- wüsste im Moment nicht mal wie ich das in SQL prüfen könnte ..... und ob ich das nun richtig eingesetzt habe.
Die Eingabe erfolgt ja in Extras → SQL. Wenn in dem zweiteiligen Eingabefeld unten erscheint "Befehl erfolgreich ausgeführt" (oder so ähnlich), dann hat das funktioniert. Du siehst das Ergebnis, wenn Du jetzt einen Datensatz eingibst und das Datumfeld leer lässt. Dies geht z.B. direkt in der Tabelle ganz schön. Bleibt das Datumsfeld leer, so steht dort nach dem Abspeichern (Wechsel des Datensatzes) das aktuelle Datum.

All diese Beschreibungen zum aktuellen Datum sind für den Normaluser leider viel zu kompliziert. Besser wäre es da sicherlich, wenn in den Eigenschaften des Datumsfeldes wirklich, wie in der Hilfestellung beschrieben, der aktuelle Datumswert als Standardwert vorgewählt werden kann. Vielleicht kommt das ja in einer der nächsten Office-Updates ...

Gruß

Robert
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

OK - Da muss ich mich nun mal durcharbeiten.

Für meine Zwecke würde

Code: Alles auswählen

ALTER TABLE "Tabellenname" ALTER COLUMN "Datumsfeldname" SET DEFAULT CURRENT_DATE
reichen. Das eigentliche Eingabefeld im Formular wird dann unsichtbar gesetzt.
In der Tabelle geht das, dass das Datum einesetzt wird. Mal sehen ob das dann auch über das Formular geht.

Kann man das Current_Date auch mit was anderem ersetzen?
Ich habe schon NOW versucht, aber das will SQL nicht.
Ich hätte gerne Datum und Uhrzeit in dem Feld.
Speicherformat kann TT.MM.JJ HH:MM:SS sein ...
Anzeigeformat hätte ich dann aber gerne: NNNN" den " TT.MMMM.JJJJ" - "HH:MM:SS " Uhr" (zumindest später in der Druckversion)

Im Falle könnte man ja auch 2 Eingabefelder machen. Eines mit Date und eines mit Time.
Also auch 2 SQL-Eingaben. Muss ich mal testen ....

EDIT:
Das mit den 2 SQL-Eingaben geht. Allerdings habe ich in der Basistabelle 2 Felder angelegt damit jeder Wert extra angelegt werden kann.
Also ein Feld für Datum und eines für Zeit (mit entsprechendem Format und in Extras - SQL die beiden einzeln eingegeben und bestätigt.

Code: Alles auswählen

ALTER TABLE "Tabellenname" ALTER COLUMN "Datumsfeldname" SET DEFAULT CURRENT_DATE
ALTER TABLE "Tabellenname" ALTER COLUMN "Datumsfeldname" SET DEFAULT CURRENT_TIME
RobertG
********
Beiträge: 2066
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von RobertG »

Ignis Pugnatur hat geschrieben:

Code: Alles auswählen

ALTER TABLE "Tabellenname" ALTER COLUMN "Datumsfeldname" SET DEFAULT CURRENT_DATE
reichen. Das eigentliche Eingabefeld im Formular wird dann unsichtbar gesetzt.
Das muss gar nicht sein. Es könnte auch ein anderes Datum eingetragen werden. Oder das Feld wird schreibgeschützt. Schließlich werden mit dem Formular eventuell auch Datensätze später nach einmal angesehen - oder machst Du damit nur Neueingaben?
Ignis Pugnatur hat geschrieben: Kann man das Current_Date auch mit was anderem ersetzen?
Ich habe schon NOW versucht, aber das will SQL nicht.
Wenn Du ein Feld für einen Timestamp hast sicher. Steht im Handbuch, hier nur der Link zu dem Kapitel "Tabellen":
http://wiki.documentfoundation.org/imag ... en_V35.pdf, dort auf Seite 16.
SQL-Funktionen, die erlaubt sind:
für das aktuelle Datum - CURRENT_DATE, TODAY
für die aktuelle Zeit - CURRENT_TIME, NOW
für den aktuellen Datums-Zeit-Wert - CURRENT_TIMESTAMP, NOW.
Ignis Pugnatur hat geschrieben: Das mit den 2 SQL-Eingaben geht. Allerdings habe ich in der Basistabelle 2 Felder angelegt damit jeder Wert extra angelegt werden kann.
Also ein Feld für Datum und eines für Zeit (mit entsprechendem Format und in Extras - SQL die beiden einzeln eingegeben und bestätigt.

Code: Alles auswählen

ALTER TABLE "Tabellenname" ALTER COLUMN "Datumsfeldname" SET DEFAULT CURRENT_DATE
ALTER TABLE "Tabellenname" ALTER COLUMN "Datumsfeldname" SET DEFAULT CURRENT_TIME
Jetzt hast Du bei der zweiten Eingabe die erste wieder gelöscht. Du brauchst eine Feld für einen Timestamp. Dann gibst Du den Code mit dem Zusatz "CURRENT_TIMESTAMP" ein.
In Formularen stellt Base so ein Feld in zwei Teilen dar: Datum und Uhrzeit.

Gruß

Robert
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Das mit dem Timestamp hat bei mir nicht wirklich funktioniert.
Ich habe das gelöst indem ich in der EAN-Artikelliste je ein Feld für Datem und Zeit angelegt habe (Je nach Inhalt das Format wählen).
Im Formular dann 2 Textfelder mit Bezug auf die Felder der Tabelle.

Im DB-Hauptfenster dann Extras - SQL
Im oberen Feld des Fensters beide folgende Zeilen auf einmal Reinkopieren.

ALTER TABLE "EAN-Artikelliste" ALTER COLUMN "Datum" SET DEFAULT CURRENT_DATE
ALTER TABLE "EAN-Artikelliste" ALTER COLUMN "Zeit" SET DEFAULT CURRENT_TIME

Die Roten Felder müssen durch die eigenen Namen ersetzt werden.
EAN-Artikelliste ist der Tabellenname und Feld und Zeit sind die Feldnamen.
erst jetzt den Button bestätigen, dann sind beide aktiv.

Nun ist mir aber was anderes aufgefallen ....

Ich will in der EAN-Artikelliste einen/mehrere Artikel der DB hinzufügen.
Während der Eingabe fällt mir auf, dass in einem der Listenfelder ein Begriff fehlt.
Ich habe nun hinter den Listenfelder Buttons eingesetzt um auf die Formulare für die Eingabe neuer Listenfeldbegriffe zu zu greifen.
Klappte auch soweit.
Nach dem Schliessen des Listenfeldeingabeformulars bin ich wieder im Artikeleingabefenster.
Die gemachten Einträge sind logischerweise aber noch nicht in den Listenfeldern zu finden.
Wie kann ich die Seite nun (am besten per Button) aktualisieren ohne die eingegebenen Daten zu verlieren oder den noch nicht fertigen Datensatz zu speichern? .... hmmmm
Nur gut dass eine Googlebefrageung kein Geld kostet ^^ ..... mal sehen was ich finde.
RobertG
********
Beiträge: 2066
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von RobertG »

Ignis Pugnatur hat geschrieben: Ich will in der EAN-Artikelliste einen/mehrere Artikel der DB hinzufügen.
Während der Eingabe fällt mir auf, dass in einem der Listenfelder ein Begriff fehlt.
Ich habe nun hinter den Listenfelder Buttons eingesetzt um auf die Formulare für die Eingabe neuer Listenfeldbegriffe zu zu greifen.
Klappte auch soweit.
Nach dem Schliessen des Listenfeldeingabeformulars bin ich wieder im Artikeleingabefenster.
Die gemachten Einträge sind logischerweise aber noch nicht in den Listenfeldern zu finden.
Wie kann ich die Seite nun (am besten per Button) aktualisieren ohne die eingegebenen Daten zu verlieren oder den noch nicht fertigen Datensatz zu speichern?
Du darfst nicht die ganze Seite aktualisieren. Du musst über das Formular das Listenfeld aufsuchen.

Code: Alles auswählen

SUB Listenfeld_aktualisieren
   oDoc=thisComponent
   oDrawpage=oDoc.Drawpage
   REM Lage des Feldes in dem entsprechenden Formular aufsuchen
   oForm=oDrawpage.Forms.getByName("Formular")
   oFeld=oForm.getByName("Listenfeld")
   oFeld.refresh()
END SUB
Gruß

Robert
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Und das ganze dann im Butten-Eigenschaftsmenü - Ereignis (Bei Mausklick) ...
Dass das auch auf einzelne Felder geht habe ich nicht gefunden ....

Mann - ich komme mir doof vor ..... Du bastelst ja schon fast meine DB :oops: :)
Mal nen ganz liebes Danke an alle die helfen oder Tipps haben.

Ihr seid ne tolle Community.


Patric
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Und nun das nächste Problem .....
Diverse Sachen machen Probleme wegen den Zeichen. Zum Beispiel ü/ä/ö/ div. Sonderzeichen wie -
Also muss ich einiges ändern .... Phuuuuu
Wenn ich den Formularname ändere (den, der weiter oben genannt wurde - also nicht der offensichtliche, sondern der, der im Formularnavigator),
dann müssen auch einige Makros nachgebessert werden.
Gerade die Listenfeld-Makros sind davon betroffen.

Also muss man auch schon bei der Planung und Erstellung auf die richtigen Bezeichnungen / Beschriftungen achten.
Schade dass so was nicht schon am Anfang in der offiziellen Hilfe erwähnt wird.
Das würde viele Fehler und Arbeit vermeiden .....

Aber der Mensch lernt ja nur aus Fehlern .... :lol:
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Nun komme ich mal wieder zu was.
Ich hab nun ein bischen getestet und was festgestellt was mir so nicht ganz passt.

Die Listenfelder im Formular funktionieren was die Auswahl betrifft.
Aber:
In der Tabelle werden nicht die Begriffe der Felder sondern die zugrunde liegenden IDs gespeichert.
Das betrifft das zweite und dritte Listenfeld.
Wie kann ich das machen, dass nicht die ID sondern der dazugehörige Begriff im Datensatz der Tabelle gespeichert wird.

Beispiel:
Listenfeld 1:
ID1 | Hauptgruppe
01 | Lebensmittel
02 | Haushaltsartikel

Listenfeld 2:
ID2 | ID1 | Gruppe
01 | 01 | Konserven
02 | 01 | Backwaren
03 | 02 | Dekoartikel
04 | 02 | Textilwaren

Im Listenfeld 1 wird "Haushaltsartikel" gewählt und im Listenfeld 2 "Textilwaren"
In der Tabelle steht nun in der Spalte Hauptgruppe (Listenfeld 1) - "Haushaltsartikel" und in der Spalte Gruppe (Listenfeld 2) - "04" (also die ID des zweiten Listenfeldes).
Wie kann ich nun statt der 04 den Begriff "Textilwaren" in der Tabelle speichern lassen.

Grund: Gerade in der Aufbau und Testphase ist es einfacher zu sehen was sich hinter der ID verbirgt als dass man erst in die Tabellen der Listenfelder muss um nach zu sehen was sich nun dahinter verbirgt.
Oder kann ich das dann nur über die Abfragen lösen? phuuuu - wenn ja, wie muss ich das nun machen.
Noch bin ich mit dem Aufabu der einzelnen Formulare beschäftigt.

Ach ja .....
Wenn ich BASE öffne dann sehe ich im Fenster links die Gruppierungen Tabelle, Abfrage, Formular etc.
Je nach Auswahl zeigt es mir die dann auch an.
Ich habe in einer DB gesehen, dass man die Tabellen, Formulare etc auch in Ordner stecken kann. Das würde z.B. einiges erleichtern was die Übersicht beträfe, da dann nicht so viele auf einmal zu sehen wären. (z.B. die Tabellen / Formulare für die Listenauswahlfelder in einem Ordner zusammenfassen)
Das habe ich trotz Suche auch noch nicht raus bekommen.

LG und schon mal Danke für eure Hilfe
Patric
RobertG
********
Beiträge: 2066
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von RobertG »

Hallo Patric,
Ignis Pugnatur hat geschrieben: Die Listenfelder im Formular funktionieren was die Auswahl betrifft.
Aber:
In der Tabelle werden nicht die Begriffe der Felder sondern die zugrunde liegenden IDs gespeichert.
Das betrifft das zweite und dritte Listenfeld.
Schau Dir einmal den SQL-Befehl zum ersten und zum zweiten Listenfeld an. ich habe hier eine Deiner Versionen vorliegen:
1. Listenfeld

Code: Alles auswählen

SELECT "Hauptkategorie", "Hauptkategorie" FROM "Li-K1"
2. Listenfeld

Code: Alles auswählen

SELECT "Li-K2"."Gruppe", "Li-K2"."K2-ID", "Li-K1"."Hauptkategorie"FROM "Li-K2", "Li-K1" WHERE "Li-K2"."K1-ID" = "Li-K1"."K1-ID"And "Li-K1"."Hauptkategorie" Like '%Haushaltswaren%'
Das zweite Listenfeld gibt die Gruppe zur Ansicht an, aber an der zweiten Position "K2-ID" weiter an die darunterliegende Tabelle.
Das zweite Listenfeld und das Makro müssen geändert werden. Es muss in allen Fällen der folgende Inhalt dort stehen:

Code: Alles auswählen

SELECT "Li-K2"."Gruppe", "Li-K2"."Gruppe" FROM "Li-K2", "Li-K1" WHERE "Li-K2"."K1-ID" = "Li-K1"."K1-ID"And "Li-K1"."Hauptkategorie" Like '%Haushaltswaren%'
Ignis Pugnatur hat geschrieben: Wenn ich BASE öffne dann sehe ich im Fenster links die Gruppierungen Tabelle, Abfrage, Formular etc.
Je nach Auswahl zeigt es mir die dann auch an.
Ich habe in einer DB gesehen, dass man die Tabellen, Formulare etc auch in Ordner stecken kann. Das würde z.B. einiges erleichtern was die Übersicht beträfe, da dann nicht so viele auf einmal zu sehen wären. (z.B. die Tabellen / Formulare für die Listenauswahlfelder in einem Ordner zusammenfassen)
Vielleicht meinst Du dies: Datenbankansicht komplett, dort Einfügen → Ordner ... Vorsicht! Du hast, soweit ich das weiß, Buttons zum Öffnen von Formularen. Da musst Du dann das entsprechende Makro erweitern. Steht unter anderem im Base-Handbuch, aber auch hier in der Liste. Ordner kannst Du aber nur bei Formularen und Berichten einrichten, bei Tabellen und Abfragen geht das nicht.

Gruß

Robert
RobertG
********
Beiträge: 2066
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abhängige Listenfelder machen Probleme

Beitrag von RobertG »

ich habe noch einmal über dem Standarddatum gebrütet. Das Makro kann wesentlich kürzer ausfallen, da sich das Standarddatum auch per Makro direkt einstellen lässt.

Code: Alles auswählen

SUB Datum_einfuegen
	oDoc=thisComponent
	oDrawpage=oDoc.Drawpage
	REM Lage des Feldes in dem entsprechenden Formular aufsuchen
	oForm=oDrawpage.Forms.getByName("Formular")
	oFeld=oForm.getByName("Datum")
	oFeld.DefaultDate = CDateToIso(Now())
END SUB
Wie ich schon vorher geschrieben habe: Die Datumsumwandlungen sind immer etwas gewöhnungsbedürftig. Es wird ein Wert wie z.B. 20120608 erwartet. Habe ich etwas gebraucht, um das zu ermitteln.
Das Datum wird durch das Makro gesetzt, sobald ein neuer Datensatz aufgerufen wird. Es erscheint wie jeder Standardwert in dem Feld. Es keine Fehlermeldung, wenn der neue Datensatz ohne andere Eingaben geschlossen wird.
Noch etwas mehr um die Ecke denken musste ich bei dem Zeitwert. Hier jetzt das komplette Makro noch einmal mit Datum, Zeit und der Überprüfung, ob der Standard überhaupt gesetzt werden muss (neuer Datensatz):

Code: Alles auswählen

SUB Datum_einfuegen
	oDoc=thisComponent
	oDrawpage=oDoc.Drawpage
	REM Lage des Feldes in dem entsprechenden Formular aufsuchen
	oForm=oDrawpage.Forms.getByName("Formular")
	oFeld=oForm.getByName("Datum")
	oFeld2 = oForm.getByname("Zeit")
	oFeldID=oForm.getByName("ID")
	IF IsEmpty(oFeldID.getCurrentValue) THEN
		oFeld.DefaultDate = CDateToIso(Now())
		a() = split(Time(),":")
		oFeld2.DefaultTime =  a(0)+a(1)+a(2)+"00"
	END IF
END SUB
Gruß

Robert
Zuletzt geändert von RobertG am Fr, 08.06.2012 11:50, insgesamt 1-mal geändert.
Ignis Pugnatur
**
Beiträge: 26
Registriert: Mi, 30.05.2012 11:57

Re: Abhängige Listenfelder machen Probleme

Beitrag von Ignis Pugnatur »

Die Änderung der Makros habe ich geschafft.
Mit den Ordnern muss ich mir das Handbuch noch genauer zu Gemüte führen ....
Da habe ich die Stelle noch nicht gefunden wo das steht ...
Aber das sind ja auch nicht nur 5 Seiten ... hehe ...
Das wäre auch nicht so wichtig. Es erleichtert ja "nur" die Übersichtlichkeit.

Bisher erst mal danke ......

Es werden sicher noch einige Dinge auftauchen wo ich Hilfe benötige.
Ich werde, eine Art Demo hoch laden wenn das wichtigste mal geht.
Persönliche Daten werden da dann noch nicht drin sein (Beträge der Einkäufe etc., aber einige Artikel dass was drin steht).
Wenn Datensätze drin sein sollten, dann werden das noch keine Realen Daten sein sondern nur zu Demonstrationszwecken.

Im übrigen möchte ich noch anmerken .....
Sollte mal eine Tabelle mit Datensätzen drin sein und man möchte die Löschen, dann geht das ja problemlos.
Schwierigkeiten machen anschliessend eigentlich nur Felder die "Autowert" drin haben.
Auch nach dem löschen aller Datensätze wird BASE dort weiter nummerieren wo die letzten Daten aufgehört haben und nicht bei 1 neu anfangen.
Wer das Problem hat, sollte mal hier nachlesen ....
http://wiki.documentfoundation.org/imag ... ng_V35.pdf
Seite 4 - Autowerte neu einstellen

Das letzte Kapitel sollte ich selbst auch noch mal genauer unter die Lupe nehmen .... Datenbankgeschwindigkeit.

LG
Patric
Antworten