von Senekurios » Do, 21.04.2016 22:11
Hallo,
ich habe mir anhand des Handbuchs ein Makro gebaut, das einen Wert aus einer Tabelle "Client Data" ausliest und diesen in eine Tabelle "Basic Data" schreiben soll, wenn der "Client", welcher in einem Listenfeld verknüpft ist, verändert wird. Das Makro ist an das Listenfeld gebunden und wird mit dem Ereignis "Nach dem Aktualisieren" ausgeführt.
Code: Alles auswählen
SUB Update_Client_Charge
DIM oDoc, oDrawpage, oForm, oFeld, oClient, oResult, oDatenquelle, oVerbindung, oSQL_Anweisung AS OBJECT
DIM stSQL AS STRING
DIM charge AS Double
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Filter").getByName("Basic_Data")
oFeld = oForm.getByName("fmtID")
oClient = oForm.getByName("Selected by")
oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
' Read Client Fee from Client Data if a client is selected (List field!)
stSql = "SELECT ""ClientFee"" FROM ""Client Data"" WHERE ""ID_Client"" = '"+oClient.GetCurrentValue()+"' "
oResult = oSQL_Anweisung.executeQuery(stSql)
charge = oResult.getdouble()
oForm.updateFloat(oForm.findcolumn("Client Charge"),charge) ' Insert Client Charge in Basic Data
IF oForm.isNew THEN
oForm.insertRow()
ELSE
oForm.updateRow()
END IF
END SUB
Meine Tests ergeben, dass alles bis auf einen Punkt funktioniert. Wenn ich für "Charge" einen festen Wert eingebe, wird der Datensatz wie gewünscht aktualisiert. Will ich das Ergebnis der SQL-Abfrage verwenden, gibt es einen Typenkonflikt.
Ich habe auch schon versucht, das Zellenupdate mit dem SQL-Befehl "update" durchzuführen. Leider ohne Erfolg.
Wie kann ich diesen Typenkonflikt umgehen?
Gruß
Marko
Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
Hallo,
ich habe mir anhand des Handbuchs ein Makro gebaut, das einen Wert aus einer Tabelle "Client Data" ausliest und diesen in eine Tabelle "Basic Data" schreiben soll, wenn der "Client", welcher in einem Listenfeld verknüpft ist, verändert wird. Das Makro ist an das Listenfeld gebunden und wird mit dem Ereignis "Nach dem Aktualisieren" ausgeführt.
[code]SUB Update_Client_Charge
DIM oDoc, oDrawpage, oForm, oFeld, oClient, oResult, oDatenquelle, oVerbindung, oSQL_Anweisung AS OBJECT
DIM stSQL AS STRING
DIM charge AS Double
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("Filter").getByName("Basic_Data")
oFeld = oForm.getByName("fmtID")
oClient = oForm.getByName("Selected by")
oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
' Read Client Fee from Client Data if a client is selected (List field!)
stSql = "SELECT ""ClientFee"" FROM ""Client Data"" WHERE ""ID_Client"" = '"+oClient.GetCurrentValue()+"' "
oResult = oSQL_Anweisung.executeQuery(stSql)
charge = oResult.getdouble()
oForm.updateFloat(oForm.findcolumn("Client Charge"),charge) ' Insert Client Charge in Basic Data
IF oForm.isNew THEN
oForm.insertRow()
ELSE
oForm.updateRow()
END IF
END SUB[/code]
Meine Tests ergeben, dass alles bis auf einen Punkt funktioniert. Wenn ich für "Charge" einen festen Wert eingebe, wird der Datensatz wie gewünscht aktualisiert. Will ich das Ergebnis der SQL-Abfrage verwenden, gibt es einen Typenkonflikt.
Ich habe auch schon versucht, das Zellenupdate mit dem SQL-Befehl "update" durchzuführen. Leider ohne Erfolg.
Wie kann ich diesen Typenkonflikt umgehen?
Gruß
Marko
[color=#800000]Moderation,4[/color]: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst