trotz der Tatsache, dass ich keine Ahnung von Basic habe, versuche ich für eine Base Datenbank ein paar Macros zu programmieren, weil ich diese Datenbank unbedingt und recht dringend brauche.
Mein Ziel: Die Erstellung und Auswertung einer Art Quiz.
Ich habe eine Tabelle die Aussagen enthält, aus denen das Quiz besteht. Eine weitere, in denen die Namen der Teilnehmer sind. Ich möchte die Antworten der Teilnehmer in einer weiteren Tabelle mit den Aussagen zusammenführen, auf die sie geantwortet haben. (Um genau zu sein genügt mir die ID der Teilnehmer und die ID der Aussage). Es könnten z.B. 10 Teilnehmer auf die 160 Aussagen geantwortet haben. (Es muss immer auf alle Aussagen geantwortet werden).
Mein Lösungsansatz sieht so aus, dass ich zunächst in einem Formular "AUSWAHL TEILNEHMER" die ID des Teilnehmers eingebe, dessen Antworten ich erfassen möchte. Dann soll ein Macro (siehe unten) in die Tabelle TBL_ERGEBNISSE diesen Teilnehmer, die erste Aussage (aus der Tabelle TBL_AUSSAGEN) und die Antwort des Teilnehmers, die über eine InputBox eingegeben wird, schreiben. Das Macro soll durch die ganze Aussagen-Tabelle gehen (mit einer While Not Eof Anweisung).
Ist für mich ziemlich kompliziert...
Hier ist das Macro, das im Augenblick bei der Open-Anweisung mit "Basic-Laufzeitfehler. Falscher Wert für Eigenschaft" aussteigt. Ich bin mir gar nicht sicher, ob es nicht auch ohne die Open-Anweisung geht. Den Rest des Macros konnte ich noch nicht probieren, da ich schon vorher hängen bleibe. Könnte also ziemlicher Schwachsinn sein. Ich habe auch alle möglichen Variablen definiert, die ich wahrscheinlich nicht alle brauche.
Code: Alles auswählen
Sub Start_Eingabe
rem Variablen Definieren
dim Context
Dim Conn
Dim Stmt
Dim db As Object
Dim tbAus As Object
Dim tbAnt As Object
dim NrAussage As Double
Dim NrTeilnehmer As Integer
Dim Antwort As String
Dim aFile As Object
Dim iFile As Integer
Rem Tabellen öffnen
Context=CreateUnoService("com.sun.star.sdb.DatabaseContext")
db=Context.getByName("DBAussagen")
Conn=db.getConnection("","")
tbAus=db.tables.getByName("TBL_AUSSAGE")
tbAnt=db.tables.getByName("TBL_ERGEBNISSE")
aFile=tbAus
Rem Daten übergeben
Stmt=conn.createStatement()
iFile=Freefile
Open aFile For Input As #iFile
While Not(Eof (iFile))
Aussage = tbAus.ID
NrTeilnehmer =ThisComponent.AUSWAHL_TEILNEHMER.NrTeilWahl
Antwort = inputBox ("Antwort 1=Einverstanden 0=Nicht einverstanden")
sqlAnweisung = "INSERT INTO TBL_ERGEBNISSE (ID_Aussage, Nr. Teinehmer, Antwort) VALUES (Aussage, NrTeilnehmer, Anwort)"
Stmt.executeUpdate (sqlAnweisung)
Wend
close #iFile
Conn.close()
Vielen Dank im Voraus
Rainer