Pannello di Controllo Moderatore ]

[Risolto] Macro con istruzione sql: termine inaspettato

Creare una macro - Scrivere uno script - Usare le API

[Risolto] Macro con istruzione sql: termine inaspettato

Messaggioda marcocurreli » giovedì 6 maggio 2021, 13:28

Buongiorno,
ho una macro BASIC in calc che aggiorna una tabella del database da un record di calc.
Ho eseguito la macro diverse volte con successo, ma gli ultimi dati che ho cercato di esportare mi hanno dato un errore di runtime nell'istruzione sSql3:
Errore di runtime BASIC. Si è verificata un'eccezione
Type: com.sun.star.sdbc.SQLException
Message: Termine inaspettato: EMUNGIMENTO in statement [emungimento]

Il campo a cui si riferisce l'errore contiene la parola emungimento (Rinnovo concessione all'emungimento n. )
Non capisco perché mi dia quest'errore.
Inoltre l'istruzione sSql5, che fa riferimento a un campo contenente delle coordinate, va a buon fine solo se nella tabella del database il campo è formattato come testo.
Codice: Seleziona tutto   Espandi visualeStringi visuale
Dim oDBC As Object, Doc As Object
Dim oBD As Object, Sh As Object
Dim oConexion As Object, c As Object
Dim oDeclaracion As Object
Dim Database As String
'-----
Dim sSql3 As String, Dim sSql5 As String
Dim oggetto As String, Dim coordx As String

Doc = ThisComponent
Sh = Doc.Sheets.GetByIndex(0)
c = Sh.createCursor
c.gotoEndOfUsedArea(false)
Database = "ricerca_idrica"
oggetto = Sh.getCellByPosition(3, 1 ).String
coordx = Sh.getCellByPosition(5, 1 ).String

sSql3 = " UPDATE ""tPratiche"" SET ""oggetto"" =  '" & oggetto & "' WHERE  ""codsuape"" = '" & codsuape & "' "
sSql5 = " UPDATE ""tPratiche"" SET ""coordx"" =  '" & coordx & "' WHERE  ""codsuape"" = '" & codsuape & "' "

oDBC = createUnoService("com.sun.star.sdb.DatabaseContext")   
oBD = oDBC.getByName(Database)
oConexion = oBD.getConnection("","")
oDeclaracion = oConexion.createStatement()
 
oDeclaracion.executeUpdate(sSql3)
oDeclaracion.executeUpdate(sSql5)
Ultima modifica di marcocurreli il giovedì 6 maggio 2021, 16:13, modificato 1 volta in totale.
LibreOffice 7.0.5 -- Linux 5.11.11
marcocurreli
 
Messaggi: 19
Iscritto il: sabato 10 aprile 2021, 13:28

Re: Macro con istruzione sql: termine inaspettato e altri er

Messaggioda Gaetanopr » giovedì 6 maggio 2021, 15:23

marcocurreli ha scritto:.......
Il campo a cui si riferisce l'errore contiene la parola emungimento (Rinnovo concessione all'emungimento n. )
Non capisco perché mi dia quest'errore.
[/code]

L'errore sarà nell'apostrofo, avevo lo stesso problema in un mio database e ho risolto con una piccola funzione

Codice: Seleziona tutto   Espandi visualeStringi visuale
codsuape = Apice(codsuape)
sSql3 = " UPDATE ""tPratiche"" SET ""oggetto"" =  '" & oggetto & "' WHERE  ""codsuape"" = '" & codsuape & "' "

Prima dell'istruzione sql passi il campo incriminato che può contenere termini con l'apostrofo alla funzione Apice, l'apostrofo viene raddoppiato.

Codice: Seleziona tutto   Espandi visualeStringi visuale
Function Apice(Campo)
Apice = REPLACE(Campo, "'", "''")
End Function
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2903
Iscritto il: mercoledì 21 novembre 2012, 21:07

Re: Macro con istruzione sql: termine inaspettato e altri er

Messaggioda marcocurreli » giovedì 6 maggio 2021, 16:12

Tutto a posto. Grazie mille.
LibreOffice 7.0.5 -- Linux 5.11.11
marcocurreli
 
Messaggi: 19
Iscritto il: sabato 10 aprile 2021, 13:28

Re: [Risolto] Macro con istruzione sql: termine inaspettato

Messaggioda charlie » sabato 8 maggio 2021, 18:45

Sistema corretto per aggiungere [Risolto] viewtopic.php?f=2&t=5661
charlie
macOS 10.12 Sierra: Open Office 4.1.9 - LibreOffice 6.4.6.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
 
Messaggi: 7549
Iscritto il: mercoledì 19 dicembre 2012, 11:50


Torna a Macro e UNO API

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti