Newsgroup: it.comp.appl.access
Titolo: FE - Sostituire separatore decimale, da virgola a punto

Dovrei sostituire il separatore decimale in una query di accodamento, ma 
non ci riesco.
 
Parto dal presupposto che la query fa il select da una tabella i cui 
campi numerici sono di tipo Precisione_Doppia, in formato Standard 
(quindi con il punto separatore delle migliaia e la virgola per i 
decimali) e 2 decimali.
 
I campi di richiamo della query sono Quantit, Imp_UNIT, IMPONIBILE, 
Un_Misura e ALIVA
 
I campi di destinazione, per evitare problemi di formattazione, li ho 
settati tutti come campi di testo.
 
 
Io ho provato a selezionare e modificare i campi come di seguito:
 
INSERT INTO DettaglioLinee ( NumeroLinea, Descrizione, Quantita, 
PrezzoUnitario, PrezzoTotale, AliquotaIVA, UnitaMisura )
SELECT CInt([NUMDETT]) AS NumLinea, VenditaMateriali.DESC_MAT, 
Replace([QUANTIT],".",",") AS Quantita, 
Format(CDbl(Replace([IMP_UNIT],",",".")),"#,#00") AS PrezzoUnitario, 
Format(CDbl(Replace([IMPONIBILE],".",",")),"#,#00") AS IMPON, 
Format(CDbl(Replace([ALIVA],".",",")),"#,#00") AS ALIQ, 
VenditaMateriali.UN_MISURA
FROM VenditaMateriali
WHERE (((VenditaMateriali.IDREGCON)=[Maschere]![TGFE]![txtREGCON]));
 
pero' al massimo, gli importi inferiori a 1 (ad es. 0,56) me li porta in 
numero intero (quindi da 0,56 me lo trasforma in 56).
 
E' da stamattina che cerco una soluzione, ma non ne vengo a capo.
Non c'è qualcuno che mi può far capire dove sbaglio?
Accidenti all'SDI e ai decimali con il punto invece della virgola!!!!!
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 


http://www.donkarl.com/it?FAQ6.21
 
 

 
 
Forse sono io che non ho afferrato.
 
Ho scritto, in un campo della query, per un importo di 0,56, la stringa 
Str([PrezzoUnitario])
 
Il prezzo lo accoda come .56; ovvero omette di inserirmi la parte intera.
 
Oltretutto, il campo, se contiene un valore intero, ad esempio 12,00, 
deve inserirmi 12.00, mentre invece mi inserisce solo 12.
 
Dove sbaglio?
 
-- 
Lamps a tutti from Naples's kingdom Carlo POTS on VFR VTEC '02
& Bmw F650GS '00 "insomma, e' un VFR, mica una zoccola che cede appena ci
provi..." (cit. PMF)



Funziona solo per i NUMERI POSITIVI e > 1 perchè convertendo in Stringa  sopprime lo ZERO, ma introduce anche uno spazio per il Segno... se verifichi infatti non è ".56" ma " .56"
 
Quindi il Replace credo sia meglio...
 
@Alex

 
 
 
Giustissimo, infatti ho risolto.
 
- Replace(Format([Campo];"00,00");",";".")
 
Ho preferito inserire solo due zeri prima della virgola, cosi' se non ho 
un numero espresso in centinaia, non mi mette zeri superflui
 
Grazie


Il 08/02/2019 18:53, @Alex ha scritto:

Vero!
Io, erroneamente, non avevo specificato che bisognava usare CStr() e non 
Str(). Infatti Cstr(0.56)="0,56" mentre Str(0.56)=" .56".
Io, proprio seguendo il suggerimento iniziale di Karl, negli enunciati 
Sql ho sempre usato Cstr e non ho mai dovuto tribolare.
Mi è sempre andata bene perché non sono mai incappato in numeri 
negativi?... Ne farò tesoro!
 
mantro

 
 
... risolto a meta'...!
 
	La query, volendola eseguire in SQL, funziona con questo codice qui:
 
---------------------------------------------------------------------------------
INSERT INTO DettaglioLinee ( NumeroLinea, Descrizione, Quantita, 
PrezzoUnitario, PrezzoTotale, AliquotaIVA, UnitaMisura )
SELECT CInt([NUMDETT]) AS NumeroLinea, VenditaMateriali.DESC_MAT, 
Replace(Format([QUANTIT],"Fixed"),",",".") AS Quantita, 
Replace(Format([IMP_UNIT],"Fixed"),",",".") AS PrezzoUnitario, 
Replace(Format([IMPONIBILE],"Fixed"),",",".") AS PrezzoTotale, 
Replace(Format([ALIVA],"Fixed"),",",".") AS AliquotaIVA, 
VenditaMateriali.UN_MISURA
FROM VenditaMateriali
WHERE (((VenditaMateriali.IDREGCON)=[Maschere]![TGFE]![txtREGCON]));
----------------------------------------------------------------------------------
 
	Il problema e' quando devo convertirla in VBA; ho digitato il codice in 
questo modo; la correzione non mi da errori, ma in esecuzioni mi da' 
errore di operatore mancante vicino al Replace.
	Sto smadonando da 2 ore ma non ne vengo a capo.
	Questo e' il codice che ho digitato:
 
-----------------------------------------------------------------------------------
	Dim Q_add as string
 
	Q_add = "INSERT INTO DettaglioLinee ( NumeroLinea, Descrizione, 
Quantita, PrezzoUnitario, PrezzoTotale, AliquotaIVA, UnitaMisura )"
 
     Q_add = Q_add & " SELECT CInt(NUMDETT) AS NumeroLinea, 
VenditaMateriali.DESC_MAT, "
     Q_add = Q_add & "'Replace(format(QUANTIT,'00,00'), ',', '.')' AS 
Quantita, "
     Q_add = Q_add & "'Replace(format(IMP_UNIT,'00,00'), ',', '.')' AS 
PrezzoUnitario, "
     Q_add = Q_add & "'Replace(format(IMPONIBILE, '00,00'), ',', '.')' 
AS PrezzoTotale, "
     Q_add = Q_add & "'Replace(format(ALIVA,'00,00'), ',', '.')' AS 
AliquotaIVA, VenditaMateriali.UN_MISURA"
     Q_add = Q_add & " FROM VenditaMateriali"
     Q_add = Q_add & " WHERE (VenditaMateriali.IDREGCON)='" & 
Me.txtREGCON & "'"
     MsgBox (Q_add)
     CurrentDb.Execute Q_add, dbfailonerror
------------------------------------------------------------------------------------
 
Dove sbaglio?



P.s.: quella riga "MsgBox(Q_Add)" la uso come "spia" alla fine della 
query per controllare che tutti dati siano instradati bene, per cui non 
ne tenete conto... :-)


>      CurrentDb.Execute Q_add, dbfailonerror
 
Come non detto.... Chi l'ha duro la vince:
 
Il codice giusto e':
--------------------------------------------------------------------
Dim Q_Add as string
 
Q_add = "INSERT INTO DettaglioLinee ( NumeroLinea, Descrizione, 
Quantita, PrezzoUnitario, PrezzoTotale, AliquotaIVA, UnitaMisura )"
 
Q_add = Q_add & " SELECT CInt(NUMDETT) AS NumeroLinea, 
VenditaMateriali.DESC_MAT, "
 
Q_add = Q_add & "Replace(format(QUANTIT,'0.00'), ',', '.') AS Quantita, "
 
Q_add = Q_add & "Replace(format(IMP_UNIT,'0.00'), ',', '.') AS 
PrezzoUnitario, "
 
Q_add = Q_add & "Replace(format(IMPONIBILE,'0.00'), ',', '.') AS 
PrezzoTotale, "
 
Q_add = Q_add & "Replace(format(ALIVA,'0.00'), ',', '.') AS AliquotaIVA, 
VenditaMateriali.UN_MISURA"
 
Q_add = Q_add & " FROM VenditaMateriali"
 
Q_add = Q_add & " WHERE (VenditaMateriali.IDREGCON)='" & Me.txtREGCON & "'"
 
     CurrentDb.Execute Q_add, dbfailonerror
 
--------------------------------------------------------------------------
 
Chiedo venia per lo "scomodo"
 
-- 
Carlo POTS
