Newsgroup: it.comp.appl.access
Titolo: select case

Buongiorno 
 
non riesco  ad abbinare il peso in grammi a questa istruzione:
 
If Me.ZonaSpRAC = "1" Then
 
            Select Case PesoLordoRAC
 
                Case Is <= 0, 20   'grammi
                    Me.CostoSpedizione = 6.6
 
                Case Is <= 0, 50   'grammi
                    Me.CostoSpedizione = 8.8
 
                Case Is <= 0, 100    'grammi
                    Me.CostoSpedizione = 9.8
 
                Case Is <= 0, 250 'grammi
                    Me.CostoSpedizione = 11.8
 
                Case Is <= 0, 350 'grammi
                    Me.CostoSpedizione = 13.2
 
                Case Is <= 1000 'grammi
                    Me.CostoSpedizione = 17.95
 
                Case Is <= 2000 'grammi
                    Me.CostoSpedizione = 26.35
 
            End Select
 
                    End If 
 
Se scrivo nel controllo PesoLordorac 
0.035  oppure 0,150  oppure 1.250   la risposta è sempre 17,95 
ovvero il valore  >= 1000
 
perchè succede questo , dove sbaglio ? 
 
Grazie Giuseppe


occhio a quella virgola nei valori del select
 
scrivi cosi
  		Case Is <= 0.2    'grammi
                     Me.costospedizione = 6.6
 
                 Case Is <= 0.5    'grammi
                     Me.costospedizione = 8.8
 
                 Case Is <= 0.1      'grammi
                     Me.costospedizione = 9.8
 
                 Case Is <= 0.25  'grammi
                     Me.costospedizione = 11.8
 
                 Case Is <= 0.35  'grammi
                     Me.costospedizione = 13.2
 
                 Case Is <= 1000 'grammi
                     Me.costospedizione = 17.95
 
                 Case Is <= 2000 'grammi
                     Me.costospedizione = 26.35
 

ok grazie  funziona ma deve essere così  nei primi tre casi 
 
                 Case Is <= 0.02   'grammi
                     Me.CostoSpedizione = 6.6
 
                Case Is <= 0.05   'grammi
                    Me.CostoSpedizione = 8.8
 
                Case Is <= 0.11      'grammi
                    Me.CostoSpedizione = 9.8
 
Giuseppe


scusa non ho capito
nel post di apertura hai scritto
 
If Me.ZonaSpRAC = "1" Then
 
             Select Case PesoLordoRAC
 
                 Case Is <= 0, 20   'grammi
                     Me.CostoSpedizione = 6.6
 
                 Case Is <= 0, 50   'grammi
                     Me.CostoSpedizione = 8.8
 
                 Case Is <= 0, 100    'grammi
                     Me.CostoSpedizione = 9.8
 
 
 
l'errore è quella vigola tra 0 e 20 e tra 0 e 50 e tra 0 e 100
devi mettere il punto altrimenti quello che scrivi tu vuo dire "se è 
minore uguale a 0 OPPURE è uguale a 20 allora 6.6"
 
 
ciao
BFS
 
 
 
 
 
 
 
 

Secondo me non intende grammi con la virgola ma l'intervallo 0÷20 ecc... lo ipotizzo solo perché sospetto siano vvalori troppo piccoli...
 
Quindi il codice non va bene proprio, ma aspetterei spiegazioni, poi vedremo...
 
@Alex


ah
 
forse vuol fare
 
  Select Case PesoLordoRAC
 
                 Case 0 to 20   'grammi
                     Me.CostoSpedizione = 6.6
 
                 Case 0 to 50   'grammi
                     Me.CostoSpedizione = 8.8
 
 
 
 
 

Daniele... che senso ha quel codice...
Basta mettere solo 1 limite...
 
Case =0
Case < 20
Case < 50
 
Ecc...
 
@Alex


0÷20  21÷50   51÷100  INDICA  se il valore in grammi è tra 0 e 20  tra 21 e 50 ecc ecc

Come ti ho detto già 3 volte... Non serve confrontare 2 margini... la Select Case ha una esecuzione sequenziale... quindi ipotizzo questi casi:
 
Select case Valore
  Case <0 : Valore negativo, solo per sicurezza
  Case <=20: Valore compreso tra 0÷20
  Case <=50: Valore compredontra 21÷50
End select
 
Fai debug su questo codice...
Quindi dovresti aver capito come modificare visto che te l'ho anche scritto... 
 
Se non ti torna, poiché alla 3° mi viene il dubbio tu non abbia compreso... spiegherai cosa non ti è chiaro e se fai e come, debug per capire la logica di funzionamento.
 
@Alex


premetto che il valore  è indicato come 
tra 0 e 20 grammi 
tra 21 e 50 grammi 
tra 51 e 100 grammi  
 
in effetti  l'unico  sistema che mi funziona è questo :
 
If Me.ZonaSpRAC = "1" Then
 
            Select Case PesoLordoRAC
 
                Case 0 To 20  'grammi
                 Me.CostoSpedizione = 6.6
 
                Case 21 To 50   'grammi
                 Me.CostoSpedizione = 8.8
 
                Case 51 To 100 'grammi
                    Me.CostoSpedizione = 9.8
 
                Case 101 To 250 'grammi
                    Me.CostoSpedizione = 11.8
 
                Case 250 To 350 'grammi
                    Me.CostoSpedizione = 13.8
 
                Case 350 To 1000  'grammi
                    Me.CostoSpedizione = 17.95
 
                Case 1000 To 2000   'grammi
                    Me.CostoSpedizione = 26.35
 
mi sembra sia affidabile o sbaglio 
 
ciao 
 

Io rinuncio... perché non hai capito...
Se ti soddisfa... bene, tecnicamente pur funzionando è una cavolata...
 
Saluti
@Alex


bahh , non sono d'accordo , quando una cosa funziona è pur sempre soddisfacente perchè le differenze anche se sono tecnicamente diverse 
il risultato è quello serve 8 detto da uno che non capisce nulla in merito)
 
comunque ho modificato l'enunciato così come suggerito 
 
Select Case PesoLordoRAC
 
                Case Is < 0:   'Valore negativo, solo per sicurezza
                    Me.CostoSpedizione = 6.6
 
                Case Is <= 20: 'Valore compreso tra 0÷20
                    Me.CostoSpedizione = 6.6
 
                Case Is <= 50: 'Valore compreso tra 21÷50
                    Me.CostoSpedizione = 8.8
 
                Case Is <= 100: 'Valore compreso tra 50÷100
                    Me.CostoSpedizione = 9.8
 
                Case Is <= 250: 'Valore compreso tra 100÷250
                    Me.CostoSpedizione = 11.8
 
                Case Is <= 350:  'Valore compreso tra 250÷350
                    Me.CostoSpedizione = 13.2
 
                Case Is <= 1000: 'Valore compreso tra 350÷1000
                    Me.CostoSpedizione = 17.95
 
                Case Is <= 2000: 'Valore compreso tra 1000÷2000
                    Me.CostoSpedizione = 26.35
 
 
il funzionamento è perfetto come lo era prima 
grazie di tutto

Proprio uguale non é, per lo meno in cicli di cpu, motivo sufficiente x ben programmare, visto che oggi va quasi tutto a batteria, e più cicli=più consumo di energia!! Poi se avessi un ciclo particolarmente impegnativo, o dovessi eseguire l'operazione su un set di records corposo, la differenza tra un codice ottimizzato e uno no si sente eccome!!! Oggi abbiamo tutti dei carri armati come pc, ma mica é sempre così....

Serve distinguere una considerazione soggettiva basata su scarse conoscenze da considerazioni tecniche oggettive più rigide ma anche meno passibili di errori di leggerezza.
Le prime escludono il confronto, e nemmeno serve dover convincere... le seconde sono basate su dati e tecnica quindi ci si può discutere...
 
Di fatto da sempre le cose si possono fare male o bene, l'importante è averne la percezione e non "Secondo me"...
 
Il tuo codice infatti raddoppia i confronti inutilmente per case... e se pensi ad una funzione chiamata in una query... le differenze di esecuzione possono essere molto evidenti.
 
La cosa più importante è capire che se un confronto è inutile... significa che non serve e la volontà di lasciarlo spetta alla competenza ed alle capacità di chi sviluppa.
 
Siccome il NG deve dare indicazioni oggettive di buona tecnica... lascio a te concludere.
 
Saluti.
@Alex

 @Alex
 
 
Tutto quello che dici è esatto ma deve essere rivolto soprattutto a chi 
di programmazione ne fa una professione .
Io faccio tutt'altro e un'applicazione con access è solo un esercizio di testardaggine , l'applicazione in oggetto l'ho creata per la prima volta con access versione 1 del 1993  poi mi ha appassionato, ma quel poco che ho imparato l'ho letto sui libri in dotazione nelle prime due versioni .
 
Scusate per questa mia divagazione che non interessa nessuno. 
Sono comunque contento che c'è sempre qualcuno pronto ad aiutarti .
 
buona serata a tutti 
Giuseppe 

Bene allora daremo risposte tecnicamente errate per te, basta che funzionino tanto tu capisci poco, è più intelligenti per tutti gli altri...
 
Ovviamente è una provocazione per farti capire che sarai tu con i suggerimenti a farci quello che vuoi... ma noi li diamo precisi ed ottimizzati perché questo 3d magari lo legge chi, diversamente da te, vuole avere una visione meno superficiale.
 
@Alex

 Se non ti torna, poiché alla 3° mi viene il dubbio tu non abbia compreso... spiegherai cosa non ti è chiaro e se fai e come, debug per capire la logica di funzionamento.
 
Sei sempre un grandissimo /spasso/ ;-)
 
-- 
ac (x=y-1)
Aborro il Killfile
(La violenza e' l'ultimo rifugio degli incapaci -Salvor Hardin-)

 ac (x=y-1)
 
Finalmente...speravo intervenissi prima... invece ho faticato... meno male che alla fine hai ceduto.
Grazie
 
@Alex

 Sei sempre un grandissimo /spasso/ ;-)
 
+ 1 :-)
 
Daniele

Ciao ragazzo...
 
@Alex

 @Alex
 

 siete uno spasso anche a distanza di anni!
 
Facciamo allenamento molto spesso :-)
 
ciao Matteo
 
Daniele

 Facciamo allenamento molto spesso :-)
 
e malgrado di spesso allenarmi un po' nella vostra lingua da >25 anni 
non ancora capisco più della meta del spasso...
 
-- 
:-/
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it