Vraag : IIf - waarom evalueert het beide reacties?

Opstelling:
I am die een prijslijst report.
I produceren heeft een vorm waar de gebruiker de „code“ kan selecteren die met de correcte kleinhandels of in het groot waarden correspondeert om de prijs list.
If de vorm NIET wordt geladen, wil ik het me de standaardwaarden (wat de groothandelsprijs is) enkel geven.

I hoopte om het rapport te hebben recordsource één vraag zijn waar ik ELookup gebruik om de correcte die markeringen op de vorm selection.

So worden gebaseerd te vinden. In een vraag, gebruik ik een verklaring IIf om te bepalen als de vorm wordt geladen.

What die ik ben dit heb gewild:
If de vorm, dan gebruik de informatie van die vorm wordt geladen om de verkoopprijzen te berekenen, anders me de waarde zonder de berekening (d.w.z. de basis groothandelsprijs) enkel geven.

What gebeurt is dat wanneer de vorm niet (de eval valse gelijken) wordt geladen, de vraag me hoe dan ook om nog de parameter op de vorm vraagt (alsof het de ware reactie verwerkt).  Als ik enkel raakte ga (geef het een reactie) binnen, is de waarde in de resulterende vraag wordt getoond correct (namelijk enkel de waarde zonder geen berekening die).  Maar waarom het me om de parameter bij allen vraagt?

What ik ga omhoog beëindigen doend (minstens tot u deskundigen me kunt vertellen wat) gebeurt is hebben twee die vragen en enkel veranderen recordsource van het rapport wordt gebaseerd op of de vorm of niet in het bezit van OnOpen van het rapport open is.  Niet zo koel aangezien ik zou houden van.  :)

Anyway, hier is één van mijn prijsberekeningen:
CHMQPrice: IIf (fIsLoaded („frmChoosePriceList“), IIf ([CHMQ] , (RoundToLarger (RoundToLarger ( [CHMQ] *ELookup („WholesaleMultiplier“, „tblPriceListMarkups“, „ (((MarkupCode) = „“ & [Vormen]! [frmChoosePriceList]. [Choose] & „“))„), 0) *ELookup („RetailMultiplier " , „tblPriceListMarkups“,“ (((MarkupCode) = „„& [Vormen]! [frmChoosePriceList]. [Choose] &““))„), 0)), Verklaar), [CHMQ])

..... nietig Wanneer de geladen vorm niet, om Vormen vraagt! frmChoosePriceList.Choose, maar keert correct anderzijds de waarde van [CHMQ] terug in de vraag result.

Striped van berekeningen om daar te worden al die extra haakjes uit:
CheckingIffs: IIf (fIsLoaded („frmChoosePriceList“), IIf ([CHMQ] , [/>ameter DummyParoadedAndNoPrice“), „NotLoaded“)

..... Wanneer de geladen vorm niet, om DummyParameter vraagt, maar keert correct anderzijds „NotLoaded“ zo eenvoudig mogelijk in de vraag result.


Striped terug om te zijn:
CheckingIffSimple: IIf (1=2, [Valse WhyOhWhy],)

..... Wanneer de geladen vorm niet, om WhyOhWhy vraagt, maar keert correct anderzijds 0 in de vraag result.


Oh terug, en door de manier, doet het het nog met het omgekeerde:
CheckingIffs: IIf (fIsLoaded („frmChoosePriceList“) =0, „NotLoaded“, [/>Parameter Dummy)

..... Wanneer de geladen niet vorm, nog vraagt om DummyParameter, maar terugkeert anderzijds „NotLoaded“ correct in de vraag result.


Why is het die nog zoeken die parameterwaarden?  Niet is dat het gehele doel van een verklaring IIf is calcs u wil niet te mijden?

Obviously, wil ik het niet om de vraagparameter (en mijn gebruikers verwarren) vragen als zij op de een of andere manier het rapport openen zonder de vorm te gebruiken.  Of, voor wanneer ik herhalingen op het rapportontwerp maak - ik wil niet de vorm moeten gebruiken telkens als ik voorproef wil drukken mijn report.

I ken er een alternerende actie is, maar dit enkel geen aan houdt me steek.  Als iemand me kan vertellen is dit „als ontworpen“ - o.k.  Maar misschien ben ik stom en iemand kan dit voor me bevestigen.  :)


Note:  fIsLoaded, ELookup, en RoundToLarger is douanefuncties die allen gemakkelijk kunnen worden gevonden het gebruiken van Google.

Antwoord : IIf - waarom evalueert het beide reacties?

> hoe dat de code teweeggebracht wordt

wanneer Coldfusion een CFINCLUDE ziet, houdt op het verwerkend het huidige dossier en verwerkt het inbegrepen dossier alvorens te werk te gaan.



U kunt dit nemen…

e ") >
 
   
   
     
    l, „@“),“. „) eq 0>
     
   


  >
      SELECTEER E-mail
        VAN SubscriberTestEmailGroup
      WAAR e-mail = >
   

   
     
   

   
 >
     tussenvoegsel in SubscriberTestEmailGroup (e-mail)
     waarden („#form.email#“)
   


 
   
 

 





en verander het in dit….


e ") >
 

     

 
   
 

 


1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
Dit zou de inhoud van SendEmail.cfm zijn


    
    
      
    
      
    

  
      SELECTEER E-mail
        VAN SubscriberTestEmailGroup
      WAAR e-mail =  
    
    
      
     
    
    
     tussenvoegsel in SubscriberTestEmailGroup  (e-mail)
     waarden („#form.email#“)
     
Andere oplossingen  
 
programming4us programming4us