Datenbanktabelle füllen mit Werten anderer Tabellen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

rabo
Beiträge: 3
Registriert: Di, 10.02.2009 21:33

Datenbanktabelle füllen mit Werten anderer Tabellen

Beitrag von rabo »

Guten Abend,

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() 
Ich hoffe wirklich sehr auf Hilfe, nachdem ich mich schon durch alle möglichen Foren gesürft habe... ohne Erfolg.
Vielen Dank im Voraus

Rainer
rabo
Beiträge: 3
Registriert: Di, 10.02.2009 21:33

Re: Datenbanktabelle füllen mit Werten anderer Tabellen

Beitrag von rabo »

Hallo,

mir ist nur wichtig zu sagen, dass ich noch immer sehr froh über Tips und Hinweise zu diesem Thema wäre.
Nachdem nun eine Woche niemand einen Hinweis geben konnte (und ich mich so lange mit einer provisorischen Acces DB herumnerven muss), hoffe ich weiter auf Hilfe.

Vielen Dank

R.
rabo
Beiträge: 3
Registriert: Di, 10.02.2009 21:33

Re: Datenbanktabelle füllen mit Werten anderer Tabellen

Beitrag von rabo »

Hallo Andy,

vielen Dank für den Tip. Ich bin allerdings im Augenblick unter Zeitdruck, und dein Lösungsvorschlag braucht Zeit, so schnell begreife ich ihn nicht. Ich melde mich, sobald ich ihn getestet habe.

Rainer
Antworten