Fai la tua domanda
0

[Risolto] Base e migrazione a Firebird

chiesto il 2019-09-12 12:23:15 +0200

Immagine gravatar per paolokap

updated 2019-09-16 12:45:58 +0200

Salve a tutti. Con la nuova versione di Base sembra che sia obbligatorio aggiornare il motore del database altrimenti ogni volta che si fa un'operazione compare la finestra che ti chiede di aggiornare. Per evitare ciò mi sono deciso a fare la suddetta migrazione. >Però ciò ha comportato problemi che ancora non sono riuscito a risolvere e quindi chiedo aiuto a chi ne sa più di me. Ecco il problema. Dopo aver effettuato la migrazione mi compare il seguente errore:

Codice di errore: 1 firebird_sdbc error: *Dynamic SQL Error*SQL error code = -804*Function unknown*CASEWHENcaused by'isc_dsql_prepare

Cercando in rete, anche dal link di suggerimento nella finestra di conversione, ho sostituito l'espressione:

SELECT "IngressoDati".*, "Imponibile" + "IVA" "Tot. Fattura", CASEWHEN( "Codice Tributo" = 'N.A.', 0, CASEWHEN( "Codice Tributo" = 1040, "Imponibile" * 20 / 100, "Imponibile" * 4 / 100 ) ) "R.A.", CASEWHEN( "Verifica Date" = 1, "Data Operazione", NULL ) "Data Versamento RA", "Imponibile" + "IVA" - CASEWHEN( "Codice Tributo" = 'N.A.', 0, CASEWHEN( "Codice Tributo" = 1040, "Imponibile" * 20 / 100, "Imponibile" * 4 / 100 ) ) "Importo Bonifico", "Imponibile" + "IVA" "Uscite" FROM "IngressoDati"

con la:

SELECT "IngressoDati".*, "Imponibile" + "IVA" "Tot. Fattura", IIF( "Codice Tributo" = 'N.A.', 0, IIF( "Codice Tributo" = 1040, "Imponibile" * 20 / 100, "Imponibile" * 4 / 100 ) ) "R.A.", IIF( "Verifica Date" = 1, "Data Operazione", NULL ) "Data Versamento RA", "Imponibile" + "IVA" - IIF( "Codice Tributo" = 'N.A.', 0, IIF( "Codice Tributo" = 1040, "Imponibile" * 20 / 100, "Imponibile" * 4 / 100 ) ) "Importo Bonifico", "Imponibile" + "IVA" "Uscite" FROM "IngressoDati"

Cioè in pratica ho sostituito CASEWHEN con IIF (ho fatto bene?). Ho salvato il tutto e sembrava andare bene. A questo punto ho aperto il relativo formulario e mi ha dat un altro errore:

codice di errore: 1 firebird_sdbc error: *conversion error from string "1" caused by 'isc_dsql_fetch'

Come posso risolvere? Grazie anticipatamente

modifica retag flag offensive close merge delete

3 Answers

0

risposto il 2019-09-12 13:54:20 +0200

Immagine gravatar per akurery

Non sono un esperto di database, ma ti consiglio di dare un'occhiata a questa pagina di istruzioni relative alla migrazione:
https://wiki.documentfoundation.org/D...
Nel caso dai un'occhiata anche alla sua versione in inglese, che è più affidabile.

modifica flag offensive delete link more

Commenti

Grazie avevo già consulto il link. Ma non ho trovato nulla di utile

Immagine gravatar per paolokap paolokap ( 2019-09-12 14:02:54 +0200 )modifica

Mah, se leggi le ultime righe alla fine della pagina a me pare che sarebbe preferibile usare la funzione CASE WHEN (staccato e senza uso di parentesi) al posto di CASEWHEN o IIF.
Capisco che anche IIF dovrebbe funzionare e che hai diversi annidamenti e forse con CASE WHEN diventa troppo complicata.
In questa forma, stando a quanto riportato nella tabella, dovrebbe essere compatibile con entrambi i motori di database.

Immagine gravatar per akurery akurery ( 2019-09-12 14:23:28 +0200 )modifica

Ancora una cosa, per i campi data e ora, hai seguito la procedura manuale descritta nella pagina?
Non vorrei che quell'errore di conversione stringa sia dovuto ad un valore sballato nelle date/orari generato dalla conversione automatica.

Immagine gravatar per akurery akurery ( 2019-09-12 14:35:06 +0200 )modifica

Sono a conoscenza del problema dei campi data/ora. Però da quello che ho capito io la conversione dovrebbe avvenire lo stesso solo che i dopo i suddetti campi non riportano più correttamente i dati inseriti.

Il messaggio di errore che ricevo si riferisce alla stringa "1". Chi sarebbe questa stringa 1? Nella prima colonna? o in quale colonna? Se si riuscisse a capire a chi si riferisce con stringa 1 forse potrebbe essere più semplice capire come correggere l'errore. Nel frattempo faccio un po' di prove a "esclusione"

Immagine gravatar per paolokap paolokap ( 2019-09-13 11:34:34 +0200 )modifica

Ho fatto la prima prova ed è come pensavo. Ho creato un semplice database con il motore HSQLDB con una colonna data. Ho inserito giusto tre date e l'ho salvato. Ho riaperto il file ed eseguito la conversione a firebird. La conversione è avvenuta senza errori apparenti ma la colonna data è cambiata riportando le date inizialmente inserire indietro di un giorno. Quindi almeno, nel mio caso, l'errore di conversione non è dovuto al campo data

Immagine gravatar per paolokap paolokap ( 2019-09-13 12:05:57 +0200 )modifica

Ho individuato dove c'è il problema. Sta nella seguente istruxzione:

IIF( "Verifica Date" = 1, "Data Operazione", VUOTO )

e la stringa che non converte è quel "1". "Verifica Data" è un valore booleano (Si/No) che corrisponde a 1 o 0. Come correggo??

Immagine gravatar per paolokap paolokap ( 2019-09-13 14:37:24 +0200 )modifica

Non so come è memorizzato il tipo di campo, se apri la tabella in modo struttura, dopo la conversione che tipo di campo dice di essere?
Se è in effetti booleano direi di sostituire l'1 con true, se invece dovesse essere un campo di tipo Char allora proverei a mettere "1" (in pratica aggiungerei le virgolette).

Immagine gravatar per akurery akurery ( 2019-09-13 15:26:34 +0200 )modifica

Ok ha funzionato. Ho messo true (che ha convertito in vero) e ora non mi da più errore. Resta solo da correggere il problema delle date :-((

Immagine gravatar per paolokap paolokap ( 2019-09-13 21:46:50 +0200 )modifica
1

risposto il 2019-09-12 14:48:40 +0200

Non è obbligatorio passare a Firebird, anzi io lo sconsiglio per evitare i problemi che hai riscontrato. Basta deselezionare la voce Abilita le funzionalità sperimentaliin Strumenti > Opzioni > LibreOffice > Avanzate

Se la mia riposta ti ha aiutato, votala con ✔ (qui a sinistra)

descrizione immagine

modifica flag offensive delete link more

Commenti

Ciao e grazie per la risposta. Comunque avevo già percorso questa strada ma il problema è che la casella è già senza spunta e comunque chiede di migrare

Immagine gravatar per paolokap paolokap ( 2019-09-13 00:32:03 +0200 )modifica

Nella mia versione (6.2.1.2 per macOS) funziona perfettamente. Togliendo e rimettendo la spunta Lo mi chiede di riavviare. A te succede?

Immagine gravatar per charlie.it charlie.it ( 2019-09-13 18:15:22 +0200 )modifica
0

risposto il 2019-09-13 12:32:03 +0200

Immagine gravatar per paolokap

Ma c'è un modo per evitare che ogni volta che apro il database mi appaia la finestra di conversione??

modifica flag offensive delete link more
Login/Signup to Answer

Question Tools

1 follower

Stats

Chieste: 2019-09-12 12:23:15 +0200

Seen: 36 times

Last updated: Sep 16