sql >> Database >  >> RDS >> PostgreSQL

LibreOffice Calc voert een PostgreSQL-functie uit

Het is mogelijk om iets soortgelijks te doen in LibreOffice Calc, maar in plaats van de databaseverbinding in te stellen met verschillende menu's, wordt alles gedaan met macrocode.

Het volgende werkte voor mij met behulp van dit MySQL opgeslagen procedure :

Sub RunStoredProc
    Dim oParms(1) as new com.sun.star.beans.PropertyValue 
    oParms(0).Name = "user" 
    oParms(0).Value = "root" 
    oParms(1).Name = "password" 
    oParms(1).Value = "password" 
    oManager = CreateUnoService("com.sun.star.sdbc.DriverManager")
    sURL = "sdbc:mysql:jdbc:localhost:3306/world"
    oConnection = oManager.getConnectionWithInfo(sURL, oParms())
    sFormat = "Europe"
    oStmt = oConnection.prepareCall("CALL country_hos(?)")
    oStmt.setString(1, sFormat)
    oResult = oStmt.executeQuery()
    sResult = ""
    If Not IsNull(oResult) Then
      While oResult.Next()
        sResult = sResult & oResult.getString(1) & CHR(10)
      Wend
    End If
    MsgBox "Result: " & sFormat & " = " & CHR(10) & sResult
    oStmt.close()
End Sub

De code is aangepast van https://forum.openoffice. org/en/forum/viewtopic.php?f=21&t=41149 .

Om de code af te maken, wijzigt u deze om de resultaten in de spreadsheet te plaatsen in plaats van ze in een berichtvenster weer te geven. Lees ook de geselecteerde waarde uit de vervolgkeuzelijst in plaats van de waarde van sFormat hard te coderen .

Opmerking:sommige online informatie suggereert het gebruik van een tussenliggend .odb-bestand. Dat zou meer menu's inhouden in plaats van alles in de macro te doen. Dit werkt voor tabellen en query's, maar blijkbaar niet voor opgeslagen procedures, tenzij misschien met HSQLDB zoals vermeld hier .




  1. Voorkomen van sqlplus-afkorting van kolomnamen, zonder individuele kolomopmaak

  2. 2 manieren om alle triggers in een PostgreSQL-database op te sommen

  3. Laravel - Integriteitsbeperkingsschending:1452 Kan een onderliggende rij niet toevoegen of bijwerken:een externe sleutelbeperking mislukt

  4. Laravel PDOException-fout in Connector.php-regel 55