[Risolto] Macro con istruzione sql: termine inaspettato

Creare una macro - Scrivere uno script - Usare le API
Rispondi
marcocurreli
Messaggi: 104
Iscritto il: sabato 10 aprile 2021, 13:28

[Risolto] Macro con istruzione sql: termine inaspettato

Messaggio da marcocurreli »

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

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.3.0 -- Linux 5.16.4-arch
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

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

Messaggio da Gaetanopr »

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

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

Function Apice(Campo)
Apice = REPLACE(Campo, "'", "''")
End Function
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
marcocurreli
Messaggi: 104
Iscritto il: sabato 10 aprile 2021, 13:28

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

Messaggio da marcocurreli »

Tutto a posto. Grazie mille.
LibreOffice 7.3.0 -- Linux 5.16.4-arch
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

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

Messaggio da charlie »

Sistema corretto per aggiungere [Risolto] viewtopic.php?f=2&t=5661
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rispondi