|
| Funktion retunerer intet (Expert) Fra : Søren |
Dato : 27-03-03 16:47 |
|
Dette problem har de sidste dage betragteligt forøget mængden af
grå hår i min hovedbund.
Jeg ønsker med funktionen [erFerie] at undersøge om en dags dato
ligger imellem to datoer, FRADATO og TILDATO, registreret i en
SQL tabel.
Det fungerer således:
Med en løkke gennemløbes SQL tabellen, og så snart dags dato
ligger imellem én af feriedagene, er det hensigten at funktionen
skal retunere TRUE, og ellers skal den retunere FALSE. Men det
gør den bare ikke. Den rutunerer slet ingen ting.
Ved Response.Write på THEN og ELSE sekvenserne kan jeg se at
selve If-udtrykket fungerer korrekt. Jeg får de rigtige data fra
SQL-tabellen, og der udskrives et ”JA” når dags dato ligger
imellem en ferieperiode og et ”NEJ” for hver gang dags dato ikke
ligger i en ferie. Men funktionen retunerer altså ingen ting.
En Response.Write erFerie() giver intet resultat. Hvad i alverden
kan jeg have gjort forkert????
<%
Function erFerie()
' Variabler erklæres
Dim strSQLfer
Dim ferie
Dim ferieStart 'ASP dato-objekt med dato fra ferie-tabellen
Dim ferieSlut 'ASP dato-objekt med dato fra ferie-tabellen
Dim dagsDato
dagsDato = Date
' SQL forespørgsel
strSQLfer = "Select * from ferie"
' Udfører forespørgsel
Set ferie = objCN.Execute(strSQLfer)
' Finder den første record i tebellen Ferie
' De konverteres fra tekst-strenge til ASP-datoer. Dette fungerer
fint, ingen problemer her
ferieStart = CDate( Trim(ferie("FRADATO")) )
ferieSlut = CDate( Trim(ferie("TILDATO")) )
' Her starter mit problem
Do Until ferie.EOF
if ( (dagsDato >= ferieStart) AND (dagsDato <= ferieSlut) ) Then
erFerie = TRUE
Exit Do
Else
erFerie = FALSE
End If
ferie.MoveNext
ferieStart = CDate( Trim(ferie("FRADATO")) )
ferieSlut = CDate( Trim(ferie("TILDATO")) )
Loop
set ferie = Nothing
End Function
%>
Det er så hensigten at Response.Write erFerie(), skal resultere i
TRUE eller FALSE, men det gør den ikke. Hvordan kan det være?????
Mange forhåbningsfulde hilsner
Søren
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Michael (27-03-2003)
| Kommentar Fra : Michael |
Dato : 27-03-03 17:17 |
|
Jeg er ikke særligt vandt i asp, er mere til php.
Men så vidt jeg kan se har du ikke nogen return, jeg ved så ikke om asp ser
det du skriver
> if ( (dagsDato >= ferieStart) AND (dagsDato <= ferieSlut) ) Then
> erFerie = TRUE
> Exit Do
>Else
> erFerie = FALSE
>End If
"erFerie = TRUE", er det det samme som at få funktionen til at retunere?
Som jeg kan se, har du intet sted erklæret erFerie. Er erFerie en global
variable, eller noget?
Hvis ikke det du gør "erFerie = TRUE" får funktionen til at returnere TRUE,
så skal du nok lave en reTurn i slutningen af funktionen.
// Claw
| |
Søren (27-03-2003)
| Kommentar Fra : Søren |
Dato : 27-03-03 17:33 |
|
> Jeg er ikke særligt vandt i asp, er mere til php.
> Men så vidt jeg kan se har du ikke nogen return, jeg ved så ikke om asp ser
> det du skriver
> > if ( (dagsDato >= ferieStart) AND (dagsDato <= ferieSlut) ) Then
> > erFerie = TRUE
> > Exit Do
> >Else
> > erFerie = FALSE
> >End If
> "erFerie = TRUE", er det det samme som at få funktionen til at retunere?
> Som jeg kan se, har du intet sted erklæret erFerie. Er erFerie en global
> variable, eller noget?
>
Det kan være noget om det du skriver, og så aligevel ikke. Fordi når
resultatet er TRUE retunerer funktionen fint, men ikke hvis den bliver false.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Michael (27-03-2003)
| Kommentar Fra : Michael |
Dato : 27-03-03 17:49 |
|
Når du sætter erFerie = TRUE, er det så det samme som at returne?
Altså at den returner og exitter ud af funktionen?
Kan man ikke lave en return, ligesom i php?
if(dagsDato >= ferieStart && dagsDato <= ferieSlut){
return TRUE;
}
p.s. Hey er du fra HTML.dk??
| |
Søren (27-03-2003)
| Kommentar Fra : Søren |
Dato : 27-03-03 17:56 |
|
> Kan man ikke lave en return, ligesom i php?
>
> if(dagsDato >= ferieStart && dagsDato <= ferieSlut){
> return TRUE;
> }
>
Det er jeg faktisk ikke helt klar over. Men (function = 1) svarer
til hvad der i PHP skrives (Return = 1). Men når man skriver
function = 1, exitter den ikke.
Men den får som sagt værdien TRUE, når dags dato ligger i
ferie-tabellen, men den får ingen værdi, når den gerne skulle
retunere FALSE
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Michael (27-03-2003)
| Kommentar Fra : Michael |
Dato : 27-03-03 18:02 |
|
> Det er jeg faktisk ikke helt klar over. Men (function = 1) svarer
> til hvad der i PHP skrives (Return = 1). Men når man skriver
> function = 1, exitter den ikke.
>
> Men den får som sagt værdien TRUE, når dags dato ligger i
> ferie-tabellen, men den får ingen værdi, når den gerne skulle
> retunere FALSE
Og hvis du laver en Response.Write mellem Else og End If, så bliver det
skrevet?
| |
Søren (27-03-2003)
| Kommentar Fra : Søren |
Dato : 27-03-03 18:07 |
|
> Og hvis du laver en Response.Write mellem Else og End If, så bliver det
> skrevet?
Jeg forstår ikke helt dit sprøgsmål, men her er som jeg forstår dig:
Hvis jeg indsætter en Response.Write...
if ( (dagsDato >= ferieStart) AND (dagsDato <= ferieSlut) ) Then
erFerie = TRUE
Response.Write "Dags dato er ferie" 'Denne bliver skrevet
ud fint
Exit Do
Else
erFerie = FALSE
Response.Write "Dags dato er IKKE ferie" ' Denne skrives også fint
ud
End If
Funktionen retunerer fint, hvis bare resultatet er TRUE. Hvis det er false
retuneres intet.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Michael (27-03-2003)
| Kommentar Fra : Michael |
Dato : 27-03-03 18:11 |
|
> Jeg forstår ikke helt dit sprøgsmål, men her er som jeg forstår dig:
> Hvis jeg indsætter en Response.Write...
>
> if ( (dagsDato >= ferieStart) AND (dagsDato <= ferieSlut) ) Then
> erFerie = TRUE
> Response.Write "Dags dato er ferie" 'Denne bliver skrevet
> ud fint
> Exit Do
> Else
> erFerie = FALSE
> Response.Write "Dags dato er IKKE ferie" ' Denne skrives også fint
> ud
> End If
>
>
> Funktionen retunerer fint, hvis bare resultatet er TRUE. Hvis det er false
> retuneres intet.
Det var også det jeg mente med det jeg skrev!
Kan det være noget med ASP at gører? Har du prøvet at lave en tom funktion
der bare returner FALSE og se om det er det samme problem?
Function returnFalse()
returnFalse = FALSE
End Function
| |
Søren (27-03-2003)
| Kommentar Fra : Søren |
Dato : 27-03-03 18:20 |
|
> Kan det være noget med ASP at gører? Har du prøvet at lave en tom funktion
> der bare returner FALSE og se om det er det samme problem?
>
> Function returnFalse()
> returnFalse = FALSE
> End Function
>
>
Det var en god idé!
Jeg har afprøvet denne funktion der fungerer efter samme princip, den fungerer
efter hensigten.
<%
Function test(x)
If x mod 2 = 0 Then
test = TRUE
Else
test = FALSE
End If
End Function
For i = 0 to 5
Response.Write test(i)
Next
%>
Jeg har ingen idé om hvorfor erFerie ikke fungerer korrekt!!
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Michael (27-03-2003)
| Kommentar Fra : Michael |
Dato : 27-03-03 18:37 |
|
> Det var en god idé!
>
> Jeg har afprøvet denne funktion der fungerer efter samme princip, den
fungerer
> efter hensigten.
>
>
> <%
>
> Function test(x)
>
> If x mod 2 = 0 Then
> test = TRUE
> Else
> test = FALSE
> End If
>
> End Function
>
> For i = 0 to 5
> Response.Write test(i)
> Next
> %>
>
>
> Jeg har ingen idé om hvorfor erFerie ikke fungerer korrekt!!
Nu er det bare gætterier!
Men det du tester den med, det lægger ikke i starten af tabellen vel?
Hvad sker der hvis man sætter erFerie til noget flere gange?
Det jeg mener er, at hvis det nu er at man i asp ikke kan sætte erFerie =
FALSE flere gange, at det laver noget fuck, så hvis det du søger efter i
tabellen allerede er i starten, så bliver den jo kun en gang sat til true,
erFerie = TRUE, og så Exitter den DO, så hvis det er at det laver fuck at
sige erFerie = FALSE flere gange, så kan det jo være derfor?
Er det tilfældet?
| |
Søren (27-03-2003)
| Kommentar Fra : Søren |
Dato : 27-03-03 18:45 |
|
> Nu er det bare gætterier!
> Men det du tester den med, det lægger ikke i starten af tabellen vel?
> Hvad sker der hvis man sætter erFerie til noget flere gange?
> Det jeg mener er, at hvis det nu er at man i asp ikke kan sætte erFerie =
> FALSE flere gange, at det laver noget fuck, så hvis det du søger efter i
> tabellen allerede er i starten, så bliver den jo kun en gang sat til true,
> erFerie = TRUE, og så Exitter den DO, så hvis det er at det laver fuck at
> sige erFerie = FALSE flere gange, så kan det jo være derfor?
> Er det tilfældet?
Gætterrier, er skam fint, jeg har ikke lavet andet de sidste par dage.
Ja, det har jeg prøvet, ferie-tabellen indeholder 6-8 rækker. Den er ikke
afhængig af hvornår en TRUE eller FALSE optræder.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Michael (27-03-2003)
| Kommentar Fra : Michael |
Dato : 27-03-03 18:51 |
|
> Gætterrier, er skam fint, jeg har ikke lavet andet de sidste par dage.
>
> Ja, det har jeg prøvet, ferie-tabellen indeholder 6-8 rækker. Den er ikke
> afhængig af hvornår en TRUE eller FALSE optræder.
Ja det er det nemli! Dem laver jeg også når jeg sidder i skolen og burde
følge med i timerne! Men altså, meget sjovere at scripte! :P
Nåh.
Hmm, jeg fatter det sku hellere ikke helt!
Hvordan tester du så funktionen? Det er ikke sådan at der kan være fejl i
det script som tester den,?
| |
Søren (27-03-2003)
| Kommentar Fra : Søren |
Dato : 27-03-03 19:13 |
|
> > Ja, det har jeg prøvet, ferie-tabellen indeholder 6-8 rækker. Den er ikke
> > afhængig af hvornår en TRUE eller FALSE optræder.
> Ja det er det nemli! Dem laver jeg også når jeg sidder i skolen og burde
> følge med i timerne! Men altså, meget sjovere at scripte! :P
> Nåh.
>
> Hmm, jeg fatter det sku hellere ikke helt!
>
> Hvordan tester du så funktionen? Det er ikke sådan at der kan være fejl i
> det script som tester den,?
Hej Michael
Jeg har fået løst problemet. Jeg takker for din hjælp, det er fedt du gad
hjælpe. Tak for hjælpen. Jeg håber vi kan snakkes ved en anden gang.
Venlig hilsen
Søren
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Jonas Schmeltz Aaber~ (29-03-2003)
| Kommentar Fra : Jonas Schmeltz Aaber~ |
Dato : 29-03-03 22:47 |
|
> Det kan være noget om det du skriver, og så aligevel ikke. Fordi når
> resultatet er TRUE retunerer funktionen fint, men ikke hvis den bliver false.
Kan du så ikke få den til at returnere noget andet, og få en anden funktion til
at checke det?!
Eks.
Function minFunktion()
If [A] Then
minFunktion = "sand"
ElseIf [B] Then
minFunktion = "falsk"
End If
End Function
...
Function checkEnAnden()
denAnden = minFunktion()
If denAnden = "sand" Then
checkEnAnden = TRUE
ElseIf denAnden = "falsk" Then
checkEnAnden = FALSE
Else
checkEnAnden = 0
End If
End Function
Response.Write checkEnAnden()
Jonas
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Tom Jensen (27-03-2003)
| Kommentar Fra : Tom Jensen |
Dato : 27-03-03 19:55 |
|
"Søren"
> ' Her starter mit problem
>
> Do Until ferie.EOF
>
> if ( (dagsDato >= ferieStart) AND (dagsDato <= ferieSlut) ) Then
> erFerie = TRUE
> Exit Do
> Else
> erFerie = FALSE
> End If
>
>
> ferie.MoveNext
> ferieStart = CDate( Trim(ferie("FRADATO")) )
> ferieSlut = CDate( Trim(ferie("TILDATO")) )
>
> Loop
Du har ikke skrevet en funktion. Du går ind i et loop og tester og så
sætter du en variabel sand eller falsk afhængig af om betingelsen er
opfyldt. Du vil altid gå ud med den sidste tilstand variablen havde da
du altid vil køre hele løkken igennem.
Du kan starte med at sætte variablen til false og så fjerne else delen
erFerie = FALSE
Do Until ferie.EOF
ferieStart = CDate( Trim(ferie("FRADATO")) )
ferieSlut = CDate( Trim(ferie("TILDATO")) )
if ( (dagsDato >= ferieStart) AND (dagsDato <= ferieSlut) ) Then
erFerie = TRUE
End If
ferie.MoveNext
Loop
På den måde vil du få sat variablen til sand hvis den bare bliver sand
en gang i gennemløbet.
--
Med venlig hilsen
Tom Jensen
FF Soft
www.ffsoft.dk
Hent en gratis web shop
| |
Søren (27-03-2003)
| Kommentar Fra : Søren |
Dato : 27-03-03 19:07 |
|
> Du har ikke skrevet en funktion. Du går ind i et loop og tester og så
> sætter du en variabel sand eller falsk afhængig af om betingelsen er
> opfyldt. Du vil altid gå ud med den sidste tilstand variablen havde da
> du altid vil køre hele løkken igennem.
> Du kan starte med at sætte variablen til false og så fjerne else delen
>
> erFerie = FALSE
> Do Until ferie.EOF
> ferieStart = CDate( Trim(ferie("FRADATO")) )
> ferieSlut = CDate( Trim(ferie("TILDATO")) )
> if ( (dagsDato >= ferieStart) AND (dagsDato <= ferieSlut) ) Then
> erFerie = TRUE
> End If
> ferie.MoveNext
> Loop
>
> På den måde vil du få sat variablen til sand hvis den bare bliver sand
> en gang i gennemløbet.
>
Stod du ved siden af mig nu, havde jeg kysset dig!! Jeg takker ærbødigt!
Tak for hjælpen Tom!!!
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
|
|