Newsgroup: it.comp.appl.access
Titolo: applicare una scala di sconti presi da una tabella

ciao a tutti,
ho un problema legato all'applicazione di una scala di sconti:
ho una tabella prodotti con un campo prezzi ed una altra tabella con
una scala di sconti articolata in questa maniera
prezzo Maggiore di	prezzo Minore di	listinocliente1 	  listinocliente2
0,01	                            4,99
1,495	                    1,4
5	                               9,99
1,416	                      1,36
10	                              24,99
1,357	                    1,3
praticamente se:
prezzo della tabella prodotti è compreso tra  00,1 e 4,99 dovrebbe
uscirmi il prezzoprodotto*1,495
prezzo della tabella prodotti è compreso tra  5 e 9,99 dovrebbe
uscirmi il prezzoprodotto*1,416
ecc
come posso fare?
grazie anticipatamente a tutti
Stb

(.....)

PrezzoScontato=PrezzoProdotto * Nz(Dlookup("ListinoCliente2","TabSconti","PrezzoMag<=" & PrezzoProdotto & " AND
PrezzoMin>=" & PrezzoProdotto ),1)
Vincenzo Turturro
Certificato Eucip Core Level
ITA 0000-002299 del 14/05/2007
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------
risorse Access:
http://www.accessgroup.it
---------------------------------------------
Il sito comune di it.comp.as400
http://www.faq400.com
---------------------------------------------

OT
hai provato la soluzione che ti ho proposto per la stampante ad aghi?
Ciao, Carlo 

Ciao, Carlo 



Ciao,
scusa la mia ignoranza ma non so dove mettere questa funzione: ho
provato a crearlo come campo calcolato in una query ma mi da errore.
grazie comunque per la risposta, continuo a provare.


Se vuoi calcolare il prezzo scontato in una query:
- creane una nuova
- ignora la richiesta di seleziona tabella
- fai click sul pulsante SQL della barra degli strumenti
- incolla il codice seguente:
SELECT Prodotti.Prezzo * Nz(TabSconti.ListinoCliente1;1)
AS PrezzoScontato
FROM TabProdotti, TabSconti
WHERE TabProdotti.Prezzo 
BETWEEN Nz(TabSconti.PrezzoMag;0) AND Nz(TabSconti.PrezzoMin;0)
Dovrebbe funzionare anche con :
SELECT
TabProdotti.Prezzo*Nz(Dlookup("ListinoCliente1";"TabSconti";"PrezzoMag<="
& TabProdotti.Prezzo & " AND
PrezzoMin>=" & TabProdotti.Prezzo );1) AS PrezzoScontato
FROM TabProdotti
Ovviamente in entrambi i casi devi controllare nomi di tabelle e campi
per adeguarli alla tua struttura.


 Vincenzo Turturro
Ciao,
ci siamo quasi ma ho due problemi diversi sulle funzioni:
nella prima pur avendo io in catalogo 8577 prodotti, quando eseguo la
funzione me li porta a 41285
credo che sia causato dal fatto che le due tabelle non sono collegate.
nel secondo caso invece quando eseguo la query mi esce due volte lo
stesso errore:
Errore di sintassi (virgola) nell'espressione della query
'prezzoMag<=782,00 AND 'prezzoMin>= 782,00'.
ed all'apertura della query al posto degli 8577 record ho la scritta
#Errore
Stefano

Stefano


 >Stefano
Ciao,
intanto grazie per la pazienza,
allora il problema era legato al formato del campo: la tabella di
origine dei dati era una tabella esterna collegata, ho modificato il
formato dei dati in valuta e la funzione sembra andare ma non per
tutti i valori:
facendo una prova su 30 record
però mi da degli errori:
se inserisco valori pari funziona tutto
StartPrice	PrezzoScontato
€ 9,00	          70,092
€ 19,00	          69,207
€ 29,00	          64,923
€ 39,00		  30,01734
€ 49,00		  29,279
€ 59,00		  28,57683
invece in caso di importi diversi
mi funziona solo sui numeri interi
StartPrice	PrezzoScontato
€ 49,50		#Errore
€ 51,00		62,577
€ 51,00		62,577
€ 23,58		#Errore
€ 23,00		31,211
€ 23,29		#Errore
€ 22,71		#Errore
€ 23,29		#Errore
€ 54,63		#Errore
€ 25,88		#Errore
€ 52,00		63,804
l'SQL è
SELECT tabnegozio.StartPrice, [tabnegozio].
[StartPrice1]*Nz(DLookUp("scala1","TabSconti","PrezzoMag<=" &
[tabnegozio].[StartPrice] & " AND PrezzoMin>=" & [tabnegozio].
[StartPrice]),1) AS PrezzoScontato
FROM tabnegozio;
e gli scaglio dei prezzi inseriti sono
PrezzoMag	PrezzoMin	scala1
€ 0,01		     € 4,99		1,495
€ 5,00	             € 9,99	        1,416
€ 10,00		    € 24,99	      1,357
€ 25,00	            € 49,99	      1,273
€ 50,00	            € 99,99	      1,227
€ 100,00	   € 199,99	   1,205
€ 200,00	  € 499,99	   1,186
€ 500,00	  € 999,99	   1,16
€ 1.000,00	€ 1.999,99	1,142
€ 2.000,00	€ 4.999,99	1,115
€ 5.000,00	€ 9.999,99	1,099
€ 10.000,00	€ 14.999,99   1,089
€ 15.000,00	€ 19.999,99   1,075
€ 20.000,00	€ 29.999,99    1,071
€ 30.000,00	€ 100.000,00  1,0705
ho impostato i campi a
startprice = precisione singola Euro 2 decimali
PrezzoMag = precisione singola Euro 2 decimali
PrezzoMin = precisione singola Euro 2 decimali
scala1 = precisione singola Euro 2 decimali
Stefano




 ha scritto nel messaggio 
news:1187973307.0...@r23g2000prd.googlegroups.com...


StartPrice PrezzoScontato
? 9,00           70,092
? 19,00           69,207
? 29,00           64,923
? 39,00   30,01734
? 49,00   29,279
? 59,00   28,57683
invece in caso di importi diversi
mi funziona solo sui numeri interi
StartPrice PrezzoScontato
? 49,50 #Errore
? 51,00 62,577
? 51,00 62,577
? 23,58 #Errore
? 23,00 31,211
? 23,29 #Errore
? 22,71 #Errore
? 23,29 #Errore
? 54,63 #Errore
? 25,88 #Errore
? 52,00 63,804
l'SQL è
SELECT tabnegozio.StartPrice, [tabnegozio].
[StartPrice1]*Nz(DLookUp("scala1","TabSconti","PrezzoMag<=" &
[tabnegozio].[StartPrice] & " AND PrezzoMin>=" & [tabnegozio].
[StartPrice]),1) AS PrezzoScontato
FROM tabnegozio;
e gli scaglio dei prezzi inseriti sono
PrezzoMag PrezzoMin scala1
? 0,01      ? 4,99 1,495
? 5,00              ? 9,99         1,416
? 10,00     ? 24,99       1,357
? 25,00             ? 49,99       1,273
? 50,00             ? 99,99       1,227
? 100,00    ? 199,99    1,205
? 200,00   ? 499,99    1,186
? 500,00   ? 999,99    1,16
? 1.000,00 ? 1.999,99 1,142
? 2.000,00 ? 4.999,99 1,115
? 5.000,00 ? 9.999,99 1,099
? 10.000,00 ? 14.999,99   1,089
? 15.000,00 ? 19.999,99   1,075
? 20.000,00 ? 29.999,99    1,071
? 30.000,00 ? 100.000,00  1,0705
ho impostato i campi a
startprice = precisione singola Euro 2 decimali
PrezzoMag = precisione singola Euro 2 decimali
PrezzoMin = precisione singola Euro 2 decimali
scala1 = precisione singola Euro 2 decimali
Stefano
se ti va prova cosi:
SELECT tabnegozio.StartPrice, 
tabnegozio.StartPrice1*Nz(DLookUp("[scala1]","TabSconti","Ccur([PrezzoMag ])<='" 
& tabnegozio.StartPrice & "' AND ccur([PrezzoMin])>='" & 
tabnegozio.StartPrice & "'"),1) AS PrezzoScontato
FROM tabnegozio;

 FROM tabnegozio;
allora, ho provato entrambe le soluzioni ma ancora non riesco ad
ottenere i risultati sperati.
questa è la query fatta (metterò la seconda in un altro messaggio)
SELECT TabProdotti.PrezzoUFivaesc,
TabProdotti.PrezzoRIVivaesc*Nz(DLookUp("scalae1","TabSconti","PrezzoMag<="
& TabProdotti.PrezzoRIVivaesc & " AND PrezzoMin>=" &
Kael.PrezzoRIVivaesc),1) AS PrezzoScontato
FROM Kael;
la tabella collegata è un csv, tutti i campi prezzo sono completi e
sono in formato numerico eppure ottengo degli errori ed anche i valori
ottenuti non sono corretti: per testare il tutto ho messo una scala
sconti di test
PrezzoMag------PrezzoMin-------scalaebay
€ 0,01------------€ 4,99-------------2
€ 5,00------------€ 9,99-------------4
€ 10,00----------€ 24,99-----------6
€ 25,00----------€ 49,99-----------8
€ 50,00----------€ 99,99-----------10
€ 100,00--------€ 199,99---------12
€ 200,00--------€ 499,99---------14
€ 500,00--------€ 999,99---------16
€ 1.000,00------€ 1.999,99------18
€ 2.000,00------€ 4.999,99------20
€ 5.000,00------€ 9.999,99------22
€ 10.000,00----€ 14.999,99----24
€ 15.000,00----€ 19.999,99----26
€ 20.000,00----€ 29.999,99----28
€ 30.000,0-----€ 100.000,00---30
eppure i valori ottenuti non tornano ed ho ancora errore in alcuni
casi
PrezzoUFivaesc------------PrezzoScontato
11,67------------------------66
11,67------------------------66
11,67------------------------66
11,8-------------------------#Errore
12,08------------------------66
12,08------------------------#Errore
12,08------------------------66
12,08------------------------#Errore
12,08------------------------66
12,08------------------------#Errore
11,67 * 6 dovrebbe venire 70,02 invece viene 66 ( i decimali non
vengono moltiplicati)
inoltre su valori uguali in alcuni casi mi da errore...
stefano

 FROM tabnegozio;
questa invece è la seconda query
SELECT tabnegozio.StartPrice, [tabnegozio].
[StartPrice]*Nz(DLookUp("scalaebay","TabSconti","Ccur(PrezzoMag )>='"
& [tabnegozio].[StartPrice] & "' AND ccur(PrezzoMin)<='" &
[tabnegozio].[StartPrice] & "'"),1) AS PrezzoScontato
FROM tabnegozio;
ho creato all'interno del db una tabella (tabnegozio) per capire se il
problema veniva dalla tabella collegata
la scala sconti rimane la stessa
PrezzoMag------PrezzoMin-------scalaebay
€ 0,01------------€ 4,99-------------2
€ 5,00------------€ 9,99-------------4
€ 10,00----------€ 24,99-----------6
€ 25,00----------€ 49,99-----------8
€ 50,00----------€ 99,99-----------10
€ 100,00--------€ 199,99---------12
€ 200,00--------€ 499,99---------14
€ 500,00--------€ 999,99---------16
€ 1.000,00------€ 1.999,99------18
€ 2.000,00------€ 4.999,99------20
€ 5.000,00------€ 9.999,99------22
€ 10.000,00----€ 14.999,99----24
€ 15.000,00----€ 19.999,99----26
€ 20.000,00----€ 29.999,99----28
€ 30.000,0-----€ 100.000,00---30
i risultati proprio non li capisco :)
StartPrice-------------PrezzoScontato
€ 1,00------------------1
€ 2,00------------------60
€ 3,00------------------90
€ 4,00------------------4
€ 5,00------------------5
€ 6,00------------------6
€ 7,00------------------7
€ 8,00------------------8
€ 9,00------------------9
€ 10,00----------------10
€ 20,00----------------600
€ 30,00----------------900
€ 40,00----------------40
€ 50,00----------------50
€ 60,00----------------60
€ 70,00----------------70
€ 80,00----------------80
€ 90,00----------------90
€ 100,00--------------100
€ 110,00--------------3300
€ 120,00--------------3600
€ 130,00--------------3900
€ 140,00--------------4200
Stefano