Hello, I have a basic script that I think would probably be easier and faster to modify using Python. It's pretty simple, it involves a MySQL database and a base form.
I suppose the confusing bit would be where the UNO components come in, how are these handled in Python? And just for reference here is the basic macro I'm toying around with: ' TODO Move this RSR stuff to the ' library RSR Commons, as it ' is duplicate code. Type RSR DatabaseContext As Object DataSource As Object Connection As Object InteractionHandler As Object Statement As Object ResultSet As Object Query As String End Type Function RecordSetRetrievorFactrory() DIM registered_db_name As String Dim recSetRet As RSR registered_db_name = "DESP" recSetRet.DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext") recSetRet.DataSource = recSetRet.DatabaseContext.getByName(registered_db_name) If Not recSetRet.DataSource.IsPasswordRequired Then recSetRet.Connection = recSetRet.DataSource.GetConnection("","") Else recSetRet.InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler") recSetRet.Connection = recSetRet.DataSource.ConnectWithCompletion(recSetRet.InteractionHandler) End If RecordSetRetrievorFactrory = recSetRet End Function ' Inputs Global featureName As String ' The Feature Name to Update Global despName As String ' The DESP to Update Global setToState As Integer ' The state to set it to: ' 5 Awaiting Response ' 6 Supports It ' 7 Will Support It ' 8 Does NOT Support It ' UI Document and Form Global Doc As Object Global TheForm As Object ' UI Components Global CbBoxFeature As Object Global CbBoxDESPName As Object Global cbUpdateToState As Object Global txtDetails As Object Global lblStatus As Object Global formReady As Boolean ' This method gets run when the page is loaded. Sub Init(oEv) formReady = False ' Doc = ThisComponent ' TheForm = Doc.DrawPage.Forms.GetByName("Form") TheForm = oEv.Source CbBoxFeature = TheForm.getByName("CbBoxFeature") CbBoxDESPName = TheForm.getByName("CbBoxDESPName") cbUpdateToState = TheForm.getByName("cbUpdateToState") txtDetails = TheForm.getByName("txtDetails") lblStatus = TheForm.getByName("lblStatus") formReady = True End Sub Sub Main ' Init() Dim tempStateName As String ' Get Input Fields featureName = CbBoxFeature.text despName = CbBoxDESPName.text tempStateName = cbUpdateToState.text setToState = getStateId(tempStateName) If setToState = -1 Then MsgBox "Error Retrieving Requestd Update State." Exit Sub End If Dim fk_desp_id AS Integer Dim fk_dfws_id As Integer Dim Feature_f_id As Integer IF getRecordForUpdate(fk_desp_id, fk_dfws_id, Feature_f_id) THEN 'MsgBox "Got Record for Update: fk_desp_id: " & fk_desp_id & ", fk_dfws_id: " & fk_dfws_id & ", Feature_f_id: " & Feature_f_id IF updateTheRecord(fk_desp_id, fk_dfws_id, Feature_f_id) THEN lblStatus.label = "Update Successful" Else lblStatus.label = "Update Failed" End If ELSE lblStatus.label = "Error retrieving record for Update: fk_desp_id: " & fk_desp_id & ", fk_dfws_id: " & fk_dfws_id & ", Feature_f_id: " & Feature_f_id ' Missing Record? Add missing record? If fk_desp_id = 0 AND fk_dfws_id = 0 AND Feature_f_id = 0 THEN End If End If End Sub Function getStateId(stateName As String) As Integer Dim rsr As Object listLength = 0 rsr = RecordSetRetrievorFactrory() rsr.Query = "SELECT dfws_id FROM DESP_Feature_Weak_State WHERE name=?" rsr.Statement = rsr.Connection.prepareStatement(rsr.Query) rsr.Statement.setString(1, stateName) rsr.ResultSet = rsr.Statement.executeQuery() Dim loopIterations As Integer loopIterations = 0 If Not isNULL(rsr.ResultSet) Then While rsr.ResultSet.next() getStateId = rsr.ResultSet.getShort(1) loopIterations = loopIterations + 1 Wend Else MsgBox "No Records were returned for stateName: " & stateName getStateId = -1 End If rsr.Connection.Close() if loopIterations > 1 Then MsgBox "Error more than one record returned: stateName: " & stateName getStateId = -1 Else IF loopIterations = 1 THEN End If End If End Function Function getRecordForUpdate(ByRef fk_desp_id AS Integer, _ ByRef fk_dfws_id As Integer, _ ByRef Feature_f_id As Integer) _ As Boolean Dim rsr As Object listLength = 0 rsr = RecordSetRetrievorFactrory() rsr.Query ="SELECT dfw.fk_desp_id, dfw.fk_dfws_id, dfw.Features_f_id, desp.name AS DESP_Name, f.name AS FeatureName, dfws.name As ResponseState " & _ "FROM " & _ "DESP_Feature_Weak_State dfws INNER JOIN (DigitalEditionsSolutionProvider desp INNER JOIN (Features f INNER JOIN DESP_Features_Weak dfw ON f.f_id = dfw.Features_f_id) ON desp.desp_id = dfw.fk_desp_id) ON dfws.dfws_id = dfw.fk_dfws_id " & _ "WHERE f.name=? AND desp.name=? " & _ "ORDER BY fk_desp_id;" 'MsgBox featureName & featureName rsr.Statement = rsr.Connection.prepareStatement(rsr.Query) rsr.Statement.setString(1, featureName) rsr.Statement.setString(2, despName) rsr.ResultSet = rsr.Statement.executeQuery() Dim loopIterations As Integer loopIterations = 0 If Not isNULL(rsr.ResultSet) Then While rsr.ResultSet.next() fk_desp_id = rsr.ResultSet.getShort(1) fk_dfws_id = rsr.ResultSet.getShort(2) Feature_f_id = rsr.ResultSet.getShort(3) loopIterations = loopIterations + 1 Wend Else MsgBox "No Records were returned for featureName: " & featureName & ", despName: " & despName getRecordForUpdate = False End If rsr.Connection.Close() if loopIterations > 1 Then MsgBox "Error more than one record returned: featureName: " & featureName & ", despName: " & despName getRecordForUpdate = False Else IF loopIterations = 1 THEN getRecordForUpdate = True End If End If End Function Function updateTheRecord(fk_desp_id AS Integer, _ fk_dfws_id As Integer, _ Feature_f_id As Integer) As Boolean Dim rsr As Object rsr = RecordSetRetrievorFactrory() rsr.Query = "UPDATE DESP_Features_Weak SET fk_dfws_id=?, details=? WHERE fk_desp_id=? AND fk_dfws_id=? AND Features_f_id=?" rsr.Statement = rsr.Connection.prepareStatement(rsr.Query) rsr.Statement.setShort(1, setToState) rsr.Statement.setString(2, txtDetails.text) rsr.Statement.setShort(3, fk_desp_id) rsr.Statement.setShort(4, fk_dfws_id) rsr.Statement.setShort(5, Feature_f_id) updateTheRecord = rsr.Statement.executeUpdate() rsr.Connection.close() End Function Sub clearResults 'IF formReady THEN lblStatus.label = "" 'End IF End Sub Thank you, Andrew J. Leer -- View this message in context: http://nabble.documentfoundation.org/How-to-convert-a-basic-script-into-Python-tp3986621.html Sent from the Users mailing list archive at Nabble.com. -- For unsubscribe instructions e-mail to: users+h...@global.libreoffice.org Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/ Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette List archive: http://listarchives.libreoffice.org/global/users/ All messages sent to this list will be publicly archived and cannot be deleted