Problem mit Listenfeld
Verfasst: Mo, 09.01.2006 11:52
hallo zusammen!
habe folgendes problem:
mit hilfe eines makros können aus einer datenbank firmen und anschließend die zu einer bestimmten firma gehörenden kontaktpersonen ausgewählt werden (mit hilfe von listenfeldern), was auch ohne probleme funktioniert. nun sollen die ausgewählten daten (firmen und dazugehörige kontaktperson) in einer anderen tabelle gespeichert werden, jedoch nicht mit ihren namen, sondern ihren id´s, die ihnen natürlich vorher in den tabellen zugewiesen wurden.
hier liegt nun das problem: habe die id´s mit dem select-sql-befehl mit ausgelesen, aber wie kann ich die id zu einer firma herauslesen, die ich vorher in einem listenfeld ausgewählt habe?
hier mal mein bisheriger code:
Sub DialogStart
Dim objDatabaseContext As Object
Dim objDataSource As Object
Dim objConnection As Object
Dim objConnection1 As Object
Dim objInteractionHandler as Object
Dim objStatement As Object
Dim objStatement1 As Object
Dim objResultSet As Object
Dim objResultSet1 As Object
Dim i As integer
Dim j As integer
Dim lstListe As Object
Dim lstListe1 As Object
Dim intPos As Integer
Dim intPos1 As Integer
Dim strFirma As String
i = 1
j = 1
objDatabaseContext = _
createUnoService("com.sun.star.sdb.DatabaseContext")
objDataSource = objDatabaseContext.getByName("Linux4")
If Not objDataSource.IsPasswordRequired Then
objConnection = objDataSource.GetConnection("","")
Else
objInteractionHandler = _
createUnoService("com.sun.star.sdb.InteractionHandler")
objConnection = _
objDataSource.ConnectWithCompletion(objInteractionHandler)
End If
objConnection1 = _
objDataSource.ConnectWithCompletion(objInteractionHandler)
objStatement1 = objConnection1.createStatement()
objResultSet1 = _
objStatement1.executeQuery("Select `NA1`, `ID` FROM `Daten`.`Firmen` `Firmen` Order By `NA1` Asc")
DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
Dlg.Title = "Personenauswahl"
If Not IsNull(objResultSet1) Then
While objResultSet1.next
Dlg.getControl("ListBox2").addItem(objResultSet1.getString(1),j)
j = j+1
Wend
End If
Dlg.Execute()
lstListe = Dlg.getControl("ListBox2")
intPos = lstListe.selectedItemPos
If intPos > -1 Then
strFirma = lstListe.selectedItem(1)
MsgBox "Sie haben " & strFirma & intID & " ausgewählt!"
End If
objStatement = objConnection.createStatement()
objResultSet = _
objStatement.executeQuery("SELECT `Personen`.`Name` FROM `Daten`.`Firmen` `Firmen`, `Daten`.`Personen` `Personen` WHERE ( `Firmen`.`ID` = `Personen`.`Arb` ) AND ( ( `Firmen`.`NA1` = '" & strFirma & "') ) ORDER BY `Personen`.`Name` ASC")
If Not IsNull(objResultSet) Then
While objResultSet.next
Dlg.getControl("ListBox1").addItem(objResultSet.getString(1),i)
i = i+1
Wend
End If
Dlg.Execute()
lstListe1 = Dlg.getControl("ListBox1")
intPos1 = lstListe1.selectedItemPos
If intPos1 > -1 Then
strPerson = lstListe1.selectedItem
MsgBox "Sie haben als Kontaktperson der Firma " & strFirma & Chr(13) & strPerson & " ausgewählt!"
End If
REM objConnection2 = _
REM objDataSource.ConnectWithCompletion(objInteractionHandler)
REM objStatement2 = objConnection2.createStatement()
REM objResultSet2 = _
REM objStatement2.executeUpdate("INSERT INTO `Daten`.`Testangebeote` (`Firma`, `Person`) VALUES ('2', '3')")
objResultset.Close()
objResultset1.Close()
objStatement.Close()
objConnection.Close()
End Sub
bin auch nur mako- und basic-neuling, habe mir dieses programm mit hilfe eines buches zurechtgesucht. leider steht da zu meinem beschriebenen problem nix drin.
hoffe mir kann jemand von euch helfen!
gruß
Jens
habe folgendes problem:
mit hilfe eines makros können aus einer datenbank firmen und anschließend die zu einer bestimmten firma gehörenden kontaktpersonen ausgewählt werden (mit hilfe von listenfeldern), was auch ohne probleme funktioniert. nun sollen die ausgewählten daten (firmen und dazugehörige kontaktperson) in einer anderen tabelle gespeichert werden, jedoch nicht mit ihren namen, sondern ihren id´s, die ihnen natürlich vorher in den tabellen zugewiesen wurden.
hier liegt nun das problem: habe die id´s mit dem select-sql-befehl mit ausgelesen, aber wie kann ich die id zu einer firma herauslesen, die ich vorher in einem listenfeld ausgewählt habe?
hier mal mein bisheriger code:
Sub DialogStart
Dim objDatabaseContext As Object
Dim objDataSource As Object
Dim objConnection As Object
Dim objConnection1 As Object
Dim objInteractionHandler as Object
Dim objStatement As Object
Dim objStatement1 As Object
Dim objResultSet As Object
Dim objResultSet1 As Object
Dim i As integer
Dim j As integer
Dim lstListe As Object
Dim lstListe1 As Object
Dim intPos As Integer
Dim intPos1 As Integer
Dim strFirma As String
i = 1
j = 1
objDatabaseContext = _
createUnoService("com.sun.star.sdb.DatabaseContext")
objDataSource = objDatabaseContext.getByName("Linux4")
If Not objDataSource.IsPasswordRequired Then
objConnection = objDataSource.GetConnection("","")
Else
objInteractionHandler = _
createUnoService("com.sun.star.sdb.InteractionHandler")
objConnection = _
objDataSource.ConnectWithCompletion(objInteractionHandler)
End If
objConnection1 = _
objDataSource.ConnectWithCompletion(objInteractionHandler)
objStatement1 = objConnection1.createStatement()
objResultSet1 = _
objStatement1.executeQuery("Select `NA1`, `ID` FROM `Daten`.`Firmen` `Firmen` Order By `NA1` Asc")
DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
Dlg.Title = "Personenauswahl"
If Not IsNull(objResultSet1) Then
While objResultSet1.next
Dlg.getControl("ListBox2").addItem(objResultSet1.getString(1),j)
j = j+1
Wend
End If
Dlg.Execute()
lstListe = Dlg.getControl("ListBox2")
intPos = lstListe.selectedItemPos
If intPos > -1 Then
strFirma = lstListe.selectedItem(1)
MsgBox "Sie haben " & strFirma & intID & " ausgewählt!"
End If
objStatement = objConnection.createStatement()
objResultSet = _
objStatement.executeQuery("SELECT `Personen`.`Name` FROM `Daten`.`Firmen` `Firmen`, `Daten`.`Personen` `Personen` WHERE ( `Firmen`.`ID` = `Personen`.`Arb` ) AND ( ( `Firmen`.`NA1` = '" & strFirma & "') ) ORDER BY `Personen`.`Name` ASC")
If Not IsNull(objResultSet) Then
While objResultSet.next
Dlg.getControl("ListBox1").addItem(objResultSet.getString(1),i)
i = i+1
Wend
End If
Dlg.Execute()
lstListe1 = Dlg.getControl("ListBox1")
intPos1 = lstListe1.selectedItemPos
If intPos1 > -1 Then
strPerson = lstListe1.selectedItem
MsgBox "Sie haben als Kontaktperson der Firma " & strFirma & Chr(13) & strPerson & " ausgewählt!"
End If
REM objConnection2 = _
REM objDataSource.ConnectWithCompletion(objInteractionHandler)
REM objStatement2 = objConnection2.createStatement()
REM objResultSet2 = _
REM objStatement2.executeUpdate("INSERT INTO `Daten`.`Testangebeote` (`Firma`, `Person`) VALUES ('2', '3')")
objResultset.Close()
objResultset1.Close()
objStatement.Close()
objConnection.Close()
End Sub
bin auch nur mako- und basic-neuling, habe mir dieses programm mit hilfe eines buches zurechtgesucht. leider steht da zu meinem beschriebenen problem nix drin.
hoffe mir kann jemand von euch helfen!
gruß
Jens