Seite 1 von 1

Quiz mit wechselnden Farben

Verfasst: Do 23. Mär 2023, 14:14
von Theophilus61
Moin, mein Basic ist leider ein bisschen eingerostet ...
Ich möchte ein Quiz erstellen. Auf der Startseite sind 20 verschiedene Felder (A1-D4), die jeweils ein Formular aufrufen, welches die dazugehörige Frage anzeigt.
Bei der Rückkehr zur Startseite sollen die bereits angeklickten Felder grau erscheinen.
Dazu habe ich eine Tabelle "tbl_Status" angelegt , die die Felder "ID", "Name" und "Status" enthält.
Das Befüllen der Tabelle klappt bereits.
Die Idee: Beim Öffnen der Startseite wird die Tabelle abgefragt und das jeweilige Feld mit Status = 1 auf grau gesetzt.
Dazu brauche ich eine Variable, die den jeweiligen Feldnamen erhält.
Aber wie komme ich dahin? Ich kann ja mit Select die Sätze aufrufen, die Status=1 haben, aber dann?
Danke schon mal für eure Hilfe.

Re: Quiz mit wechselnden Farben

Verfasst: Do 23. Mär 2023, 16:00
von RobertG
Kann es sein, dass Deine Frage nichts mit Base zu tun hat? Bei Base kannst Du nicht in einer Tabelle einzelne Felder färben. Das geht höchstens in einem Formular. Und auch die Bezeichnung (A1-D4) lässt mich stutzen. Soll das vielleicht Calc mit Makros sein?

Re: Quiz mit wechselnden Farben

Verfasst: Do 23. Mär 2023, 16:22
von Theophilus61
Hallo, ja es geht um Base.
Ich will keine Tabelle färben, sondern Schaltflächen in einem Formular.
Die Tabelle dient nur als Datenspeicher.

Re: Quiz mit wechselnden Farben

Verfasst: Do 23. Mär 2023, 21:19
von Theophilus61
Ich habs raus:

Code: Alles auswählen

Sub Status_lesen
DIM sSQL AS STRING
DIM oResult AS OBJECT
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")'Datenbankkontext erzeugen
oDatenquelle = DatabaseContext.getByName("Konfiquiz")' Datenquelle wählen
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
oVerbindung = oDatenquelle.ConnectWithCompletion(InteractionHandler)' SQL-Kommunikationskanal aufbauen
SQL_Anweisung = oVerbindung.createStatement()
sSQL = "SELECT ""Name"" FROM ""tbl_Status"" where Status = 1;"
oResult = SQL_Anweisung.executeQuery(sSQL)
WHILE oResult.next
strName = oResult.columns.getbyName("Name").getString
MsgBox strName
wend
end sub

Re: Quiz mit wechselnden Farben

Verfasst: Do 23. Mär 2023, 23:13
von Theophilus61
Zu früh gefreut ...
Ich bekomme zwar jetzt die gewünschten Daten aus meiner Tabelle ausgelesen, aber das Umfärben klappt dennoch nicht - anscheinend liegt es daran, das ThisComponent auf das falsche Formular referenziert.
Vorgehensweise: Das Hauptformular (frm_Main) enthält 20 Schaltflächen, die jeweils ein Formular öffnen, welches eine Quizfrage enthält.
Das Quizfragenformular hat einen Exit-Button. Das durch diesen gestartete Makro schließt das Fragenformular, öffnet frm_Main und startet die Abfrage, welche eigentlich die bereits benutzen Schaltflächen grau färben soll.
Problem aber: oForm.getByName(strName) läuft ins Leere, weil ThisComponent nicht das aktuell geöffnete frm_Main referenziert, sondern das bereits geschlossene Quizfragenformular.
Gibt's da eine Trick?