Sqlite, activerecord e Float

Salve a tutti!
Sto realizzando una applicazione desktop che utilizza sqlite +
activereacord e
mi trovo ad avere un problema con il tipo di dato FLOAT. Mi spicego
megli, all’interno della tabella Articolo ho un campo “prezzo” che deve
rappresentare il prezzo in euro dell’articolo (quindi al massimo 2 cifre
decimali). Volevo quindi salvare il prezzo come Float, solo che quando
provo ad aggiungere un articolo con prezzo pari a 55.3 euro (per
esempio), ho il seguente errore:

SQL (0,000000) SQLite3::SQLException: 14 values for 13 columns: INSERT
INTO articolo (“carico”, “fornitore_id”, “marca_id”, “colore_id”,
“tipocapo_id”, “id_codice_a_barre”, “stagioneeanno_id”, “prezzo”,
“modello_id”, “rimanenza”, “scarico”, “taglia_id”, “codice_a_barre”)
VALUES(5, 1, 1, 1, 1, 1, 7, 55,3, 1, 5, 0, 1, ‘1’)

Il problema risiede nel modo con il quale il Float 55.3 viene convertito
in stringa, infatti 55.3 diventa 55,3 e la virgola crea il problema.
Infatti l’errore
che riporta SQLite e’ che vengono forniti 14 valori invece di 3, proprio
perche; 55,3 viene visto come due valori 55 e 3.

A qualcuno e’ mai successo qualcosa del genere? Se si’, come avete
risolto?

Grazie mille!

Gendag

non mi è mai capitato ma potresti cmq sostituire il carattere all’
interno
della stringa prima di mandarlo alla query.

Saluti Andrea

----- Original Message -----
From: “Gendag” [email protected]
To: [email protected]
Sent: Thursday, January 18, 2007 10:29 PM
Subject: [ruby-it] Sqlite, activerecord e Float

SQL (0,000000) SQLite3::SQLException: 14 values for 13 columns: INSERT

A qualcuno e’ mai successo qualcosa del genere? Se si’, come avete
risolto?

Grazie mille!

Gendag


Posted via http://www.ruby-forum.com/.


On 1/18/07, Gendag [email protected] wrote:

Salve a tutti!
Sto realizzando una applicazione desktop che utilizza sqlite +
activereacord e
mi trovo ad avere un problema con il tipo di dato FLOAT. Mi spicego
megli, all’interno della tabella Articolo ho un campo “prezzo” che deve
rappresentare il prezzo in euro dell’articolo (quindi al massimo 2 cifre
decimali). Volevo quindi salvare il prezzo come Float, solo che quando

Stessa soluzione suggerita a David:

def before_save
price = price_before_type_cast.sub(“,”, “.”)
end

Però ti consiglio di non usare float per la valuta. Meglio qualcosa
tipo DECIMAL(10,2)

Matteo

Però ti consiglio di non usare float per la valuta. Meglio qualcosa
tipo DECIMAL(10,2)

Non e male questo, in termini di Ruby... poi per il db, useresti 'cents'. Cosi uno evita del tutto una serie di possibili errori.

http://dist.leetsoft.com/api/money/


David N. Welton

Linux, Open Source Consulting