Kombinationsfeld und Textfelder
Moderator: Moderatoren
Kombinationsfeld und Textfelder
Hallo,
ich habe eine Datenbank erstellt und mit Daten gefüllt. (Open Office 2.0 Beta)
Beispiel
Firma Ardesse Tel
Fuchs Ag Strasse 12 12345
Nun habe ich ein Kombinationsfeld auf mein Formular gezogen und dem Kombifeld die Spalte Firma zugeordnet. Soweit so gut.
Desweiterern habe ich 2 Textfelder. Planmässig sollen die sich auf das Kombinationsfeld beziehen.
Das heisst wenn ich im Kombinationsfeld Fuchs Ag auswähle, soll im ersten Textfeld die dazugehörige Adresse stehen und im anderen Textfeld die Telefonnummer.
Aber irgendwie reagiert er garnicht auf veränderung des Kombinationsfeld.
Frage: Wie bekomme ich eine zuordung bzw verknüpfung erstellt?
schonmal dankeschön im vorraus
ich habe eine Datenbank erstellt und mit Daten gefüllt. (Open Office 2.0 Beta)
Beispiel
Firma Ardesse Tel
Fuchs Ag Strasse 12 12345
Nun habe ich ein Kombinationsfeld auf mein Formular gezogen und dem Kombifeld die Spalte Firma zugeordnet. Soweit so gut.
Desweiterern habe ich 2 Textfelder. Planmässig sollen die sich auf das Kombinationsfeld beziehen.
Das heisst wenn ich im Kombinationsfeld Fuchs Ag auswähle, soll im ersten Textfeld die dazugehörige Adresse stehen und im anderen Textfeld die Telefonnummer.
Aber irgendwie reagiert er garnicht auf veränderung des Kombinationsfeld.
Frage: Wie bekomme ich eine zuordung bzw verknüpfung erstellt?
schonmal dankeschön im vorraus
-
- ***
- Beiträge: 97
- Registriert: So, 15.05.2005 15:44
Moin
Ich nutze dabei ein weiteres Kombifeld (Combobox), namens "dummy".
Auf das Ereignis "Text modifiziert" rufe ich ein Makro auf.
Diese Makro entnimmt aus der Combobox den Text.
Dann erstelle ich ein SQL-Statement
Select 'Adresse1' from "Adresse" Where 'Name'='text aus der Combobox'
Dieses SQL-Statement ordne ich mittels
DummyCombobox.ListSource=SQL-Statement der Combobox "dummy" zu.
Mittels getItem(0) hole ich das Erste Ergebnis der Abfrage aus der Combobox "dummy" (Es sollte ja eigentlich nur ein Ergebnis geben).
Und mit
textFeld.Text=dummyText.getItem(0) weise ich den Text dem eigentlichen Textfeld zu.
Hier ein Codefragment:
Sub MakeGenre
oDoc=thiscomponent
oForm = oDoc.drawpage.forms(0)
Combo1 = oForm.getByName("Combobox")
GeText = oForm.getByName("Textfeld")
dummy = oForm.getByName("dummy")
dummyText = oDoc.getCurrentController.GetControl(dummy)
sSQL = "Select ""GKurz"" from ""Genre"" where ""GLang"" = '" & Combo1.Text & "'"
dummy.ListSource = sSQL
GeText.Text=dummyText.getItem(0)
GeText.Commit()
End Sub
Ich nutze dabei ein weiteres Kombifeld (Combobox), namens "dummy".
Auf das Ereignis "Text modifiziert" rufe ich ein Makro auf.
Diese Makro entnimmt aus der Combobox den Text.
Dann erstelle ich ein SQL-Statement
Select 'Adresse1' from "Adresse" Where 'Name'='text aus der Combobox'
Dieses SQL-Statement ordne ich mittels
DummyCombobox.ListSource=SQL-Statement der Combobox "dummy" zu.
Mittels getItem(0) hole ich das Erste Ergebnis der Abfrage aus der Combobox "dummy" (Es sollte ja eigentlich nur ein Ergebnis geben).
Und mit
textFeld.Text=dummyText.getItem(0) weise ich den Text dem eigentlichen Textfeld zu.
Hier ein Codefragment:
Sub MakeGenre
oDoc=thiscomponent
oForm = oDoc.drawpage.forms(0)
Combo1 = oForm.getByName("Combobox")
GeText = oForm.getByName("Textfeld")
dummy = oForm.getByName("dummy")
dummyText = oDoc.getCurrentController.GetControl(dummy)
sSQL = "Select ""GKurz"" from ""Genre"" where ""GLang"" = '" & Combo1.Text & "'"
dummy.ListSource = sSQL
GeText.Text=dummyText.getItem(0)
GeText.Commit()
End Sub
Hallo,
erstmal danke für die Antwort.
Mein Quellcode sieht etwas anders aus, da ich das dummyfeld nicht benutze.
Allerdings funktioniert das SQL Statement nicht. Habe ich vieleicht irgendwo ein Syntaxfehler?
dim hilf as string
dim oDBConnection, oDBContext, oDataSource, oStatement, oResultset as Object
sDBName = "AN_Tabelle2"
oDBContext=CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource=oDBContext.GetByName(sDBName)
oDBConnection=oDataSource.GetConnection("","")
oStatement=oDBConnection.createStatement()
hilf=oStatement.executeQuery(SELECT "PLZ" FROM "An_Tabelle")
oDoc=thiscomponent
oForm = oDoc.drawpage.forms(0)
text1= oForm.getByName("TextBox")
text1.text=hilf
erstmal danke für die Antwort.
Mein Quellcode sieht etwas anders aus, da ich das dummyfeld nicht benutze.
Allerdings funktioniert das SQL Statement nicht. Habe ich vieleicht irgendwo ein Syntaxfehler?
dim hilf as string
dim oDBConnection, oDBContext, oDataSource, oStatement, oResultset as Object
sDBName = "AN_Tabelle2"
oDBContext=CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource=oDBContext.GetByName(sDBName)
oDBConnection=oDataSource.GetConnection("","")
oStatement=oDBConnection.createStatement()
hilf=oStatement.executeQuery(SELECT "PLZ" FROM "An_Tabelle")
oDoc=thiscomponent
oForm = oDoc.drawpage.forms(0)
text1= oForm.getByName("TextBox")
text1.text=hilf
-
- ***
- Beiträge: 97
- Registriert: So, 15.05.2005 15:44
Hmmm, die Variable sDBName heisst AN_Tabelle2, die SQL-Abfrage bezieht sich auf AN_Tabelle, das kann aber nur ein Fehltipper sein...Ir0nhead7 hat geschrieben:Hallo,
erstmal danke für die Antwort.
Mein Quellcode sieht etwas anders aus, da ich das dummyfeld nicht benutze.
Allerdings funktioniert das SQL Statement nicht. Habe ich vieleicht irgendwo ein Syntaxfehler?
dim hilf as string
dim oDBConnection, oDBContext, oDataSource, oStatement, oResultset as Object
sDBName = "AN_Tabelle2"
oDBContext=CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource=oDBContext.GetByName(sDBName)
oDBConnection=oDataSource.GetConnection("","")
oStatement=oDBConnection.createStatement()
hilf=oStatement.executeQuery(SELECT "PLZ" FROM "An_Tabelle")
oDoc=thiscomponent
oForm = oDoc.drawpage.forms(0)
text1= oForm.getByName("TextBox")
text1.text=hilf
1.
Das Statement selber besteht aus der Variable SELECT, dem String PLZ, der Variable FROM und dem String AN_Tabelle.
Das heisst, das SELECT und so weiter muss ebenfalls in Gänsefüße gestellt werden.
hilf=oStatement.executeQuery("SELECT ""PLZ"" FROM ""An_Tabelle""")
Das sollte es sein.
Man kann das im Debugger überprüfen, wenn man vorher eine Variable definiert
sSQL="SELECT ""PLZ"" FROM ""An_Tabelle"""
hilf=oStatement.executeQuery(sSQL)
2.
Das Ergebnis eines SELECT Statements ist ein ResultSet.
Der Zugriff auf ein Resultset erfolgt anders, die Lösung hab ich aber nicht parat, deshalb nutze ich die "Dummy" Box

-
- ***
- Beiträge: 97
- Registriert: So, 15.05.2005 15:44
Zwei Fehler, die mir sofort auffallen:Anonymous hat geschrieben:Quellcode:
oDoc=thiscomponent
oForm = oDoc.drawpage.forms(0)
Combo = oForm.getByName("ComboBox2")
dim oDBConnection, oDBContext, oDataSource, oStatement, oResultset as Object
sDBName = "Bibliography"
oDBContext=CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource=oDBContext.GetByName(sDBName)
oDBConnection=oDataSource.GetConnection("","")
oStatement=oDBConnection.createStatement()
Combo.Listsource=oStatement.execute("SELECT Author FROM biblio WHERE Identifier='BOR02a'")
Das ist jetzt mein aktueller Quellcode. Doch wenn ich das Makro ausführe bekomme ich immer diesen Fehler:
Der Inhalt eines Kombinations oder Listenfeldes konnte nicht ermittelt werden.
Syntax error in SQl Expression
1. ist das Fehlen jeglicher Gänsefüße im SQL-Statement.
Tabellenspalten müssen in Gänsefüße gestellt werden, Werte in einfache Füße
("SELECT ""Author"" FROM ""biblio"" WHERE ""Identifier""='BOR02a'")
2. Die Combobox macht das Ausführen von Statements selber, das ist das Schöne, also kein "Statement.execute" setzen.
einfach
Combo.Listsource="SELECT ""Author"" FROM ""biblio"" WHERE ""Identifier""='BOR02a'"
Dat machted. Und kann man überprüfen, das auf dem Reiter "Daten" der Eigenschaften der Combobox das SQL Statement dort auftaucht.
Der Inhaltstyp muss dafür auf SQL stehen.
Super jetzt funktioniert es.
Wenn ich mehrere Felder ausfüllen möchte, kann ich die dann in einer dummyCombobox reinschreiben und dann mit
GeText1.Text=dummyText.getItem(0)
GeText2.Text=dummyText.getItem(1)
GeText3.Text=dummyText.getItem(2)
zuweisen?! oder brauche ich für jedes Feld eine eigene DummyCombobox
Select:
"Select" "Feld1" , "Feld" , "Feld3" "From" "Tabelle"
Wie ist das eigentlich mit den Kommas ? müssen die auch irgendwie in speziellen Zeichen gesetzt werden? Denn so funktioniert es auch nicht
"Feld1"",""Feld"","
und wenn ich die Kommas nicht in Gänsefüschen setze kommt eine Fehlermeldung
Wenn ich mehrere Felder ausfüllen möchte, kann ich die dann in einer dummyCombobox reinschreiben und dann mit
GeText1.Text=dummyText.getItem(0)
GeText2.Text=dummyText.getItem(1)
GeText3.Text=dummyText.getItem(2)
zuweisen?! oder brauche ich für jedes Feld eine eigene DummyCombobox
Select:
"Select" "Feld1" , "Feld" , "Feld3" "From" "Tabelle"
Wie ist das eigentlich mit den Kommas ? müssen die auch irgendwie in speziellen Zeichen gesetzt werden? Denn so funktioniert es auch nicht
"Feld1"",""Feld"","
und wenn ich die Kommas nicht in Gänsefüschen setze kommt eine Fehlermeldung
-
- ***
- Beiträge: 97
- Registriert: So, 15.05.2005 15:44
Nein, du brauchst keine weiteren Boxen, das geht genau so, wie dus beschrieben hast.Ir0nhead7 hat geschrieben:Super jetzt funktioniert es.
Wenn ich mehrere Felder ausfüllen möchte, kann ich die dann in einer dummyCombobox reinschreiben und dann mit
GeText1.Text=dummyText.getItem(0)
GeText2.Text=dummyText.getItem(1)
GeText3.Text=dummyText.getItem(2)
zuweisen?! oder brauche ich für jedes Feld eine eigene DummyCombobox
Select:
"Select" "Feld1" , "Feld" , "Feld3" "From" "Tabelle"
Wie ist das eigentlich mit den Kommas ? müssen die auch irgendwie in speziellen Zeichen gesetzt werden? Denn so funktioniert es auch nicht
"Feld1"",""Feld"","
und wenn ich die Kommas nicht in Gänsefüschen setze kommt eine Fehlermeldung
Die Kommas gehören zur SQL-Anweisung, dürfen also selber nicht in Gänsefüße gesetzt werden.
testVar="Select * from ""Tab1"",""Tab2"" where ""test""='hallo'"
daraus wird dann die SQL Anweisung
Select * from "Tab1","Tab2" where "test"='hallo'
Wie gesagt, nachprüfen kann man das auf dem "Daten"-Reiter der Eigenschaft der Combobox (hier also der Dummy-Box.
Nachdem das Makro durchgelaufen ist, steht dort der zugewiesene SQL-Befehl im Klartext. In der Dummy-Box selber sind natürlich die Werte der Abfrage eingetragen.
Gruß
-
- ***
- Beiträge: 97
- Registriert: So, 15.05.2005 15:44