Toon posts:

[VBscript] if.. else.. selectie werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Allereerst het stuk code:

code:
1
2
3
4
5
6
7
8
9
<% if oRS("Peiler") = "_stu" AND oRS("Bedrijf") = "" Then %>

      'code die uitgevoerd wordt

            <% else %>

      'code die uitgevoerd wordt 

            <% end If %>


Het probleem is dat hij nu altijd eerst de Else pakt. Terwijl dit dus niet het geval moet zijn. De else moet aangeroepen worden zodra het veld "Bedrijf" ingevuld is. Het veld "Peiler" is altijd ingevuld alleen de waarde hiervan varieert.

Wat doe ik fout?

Acties:
  • 0 Henk 'm!

  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
Als ik het zo zie aan het gebruik van '<%' en '%>' haal je server- en clientside doorelkaar...

[ Voor 4% gewijzigd door rrrandy op 07-05-2007 11:00 ]


Acties:
  • 0 Henk 'm!

  • Marcj
  • Registratie: November 2000
  • Laatst online: 09:48
Wat voor waarde krijgt oRS("Bedrijf") dan als je niets invult? Heb je dat al wel gecontroleerd? Ik gok dat deze bijvoorbeeld de waarde null krijgt terwijl jij alleen controleert of hij gelijk is aan een lege string. Je zult dan toch eerst iets aan debuggen moeten gaan doen.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Het eerste code blok wordt alleen uitgevoerd als Peiler gelijk is aan _stu. Elke andere waarde wordt de else uitgevoerd. Als de enige voorwaarde is dat bedrijf ingevuld is, wat doet peiler dan in die if?

Bedenk trouwens dat er een verschil is tussen een 'lege string' en 'helemaal geen waarde' (null).

[ Voor 19% gewijzigd door Janoz op 07-05-2007 11:03 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Marcj schreef op maandag 07 mei 2007 @ 11:01:
Wat voor waarde krijgt oRS("Bedrijf") dan als je niets invult? Heb je dat al wel gecontroleerd? Ik gok dat deze bijvoorbeeld de waarde null krijgt terwijl jij alleen controleert of hij gelijk is aan een lege string. Je zult dan toch eerst iets aan debuggen moeten gaan doen.
Dus als ik het goed begrijp krijgt hij dan toch een waarde (Null) mee en behandeld hij het als Else?

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 00:32

TeeDee

CQB 241

Bevat oRS("Bedrijf") gegevens of niet? Weet je dat zeker?

Je zou ook je constructie anders kunnen doen. Als de else toch alleen uitgevoerd moet worden als Bedrijf data bevat, dan zou je ook alleen daar op kunnen checken.

VBScript:
1
2
3
4
5
if oRS("Bedrijf")="" then
' doe dingen
else
' doe andere dingen ;)
end if


edit:
sodeknetter, spuit fscking 11

[ Voor 7% gewijzigd door TeeDee op 07-05-2007 11:03 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op maandag 07 mei 2007 @ 11:02:
Het eerste code blok wordt alleen uitgevoerd als Peiler gelijk is aan _stu. Elke andere waarde wordt de else uitgevoerd. Als de enige voorwaarde is dat bedrijf ingevuld is, wat doet peiler dan in die if?
Er zijn 4 waarden voor "Peiler" dus hier wordt ook een selectie op gemaakt. En zodra de waarde van "Peiler" _stu is en de waarde voor "Bedrijf" leeg is moet hij het eerst blok gebruiken. Is de waarde van "Bedrijf" ingevuld dan moet het tweede blok gebruikt worden. Zoals ik al eerder zei is de waarde van "Peiler" altijd ingevuld.

Zie je anders een andere oplossing waarin ik kan aangeven dat:

code:
1
if "Peiler" = _stu AND "Bedrijf" = "ingevuld" (hoe kan ik dit schrijven in code?) Then

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 00:32

TeeDee

CQB 241

if not Isnull(oRS("Bedrijf") ?

[ Voor 68% gewijzigd door TeeDee op 07-05-2007 11:08 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Gelukt!

Heb de if regel aangepast naar:

code:
1
<% if oRS("Peiler") = "_stu" AND oRS("Bedrijf") = "" OR Isnull(oRS("Bedrijf")) Then %>

Acties:
  • 0 Henk 'm!

  • Marcj
  • Registratie: November 2000
  • Laatst online: 09:48
Verwijderd schreef op maandag 07 mei 2007 @ 11:02:
[...]


Dus als ik het goed begrijp krijgt hij dan toch een waarde (Null) mee en behandeld hij het als Else?
Ja, over het algemeen is het zo dat wanneer een waarde niet geinitialiseerd is, dat deze de waarde Null krijgt. En aangezien Null niet gelijk is aan een lege string zal hij dan de Else uitvoeren. Heb je al een keer gewoon de waarde van oRS("Bedrijf") geprint? Dan kun je het snel genoeg zien :)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Ik raad je aan opm wel even haakjes te zetten om het laatste stuk. Ik weet neit hoe de prioriteit ligt in VB, maar het kan best zijn dat je nu wel het eerste code blok krijgt omdat bedrijf null is, maar Peiler helemaal neit gelijk is aan _stu.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op maandag 07 mei 2007 @ 11:21:
Ik raad je aan opm wel even haakjes te zetten om het laatste stuk. Ik weet neit hoe de prioriteit ligt in VB, maar het kan best zijn dat je nu wel het eerste code blok krijgt omdat bedrijf null is, maar Peiler helemaal neit gelijk is aan _stu.
Alles werkt naar behoren, er zijn namelijk meer gegevens met andere "Peiler" waarden en deze worden niet geladen, dus er hoeven in dit geval geen haakjes omheen (misschien geluk). Toch bedankt voor je opmerking.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Maar je moet dat niet op geluk doen en dan testen, je moet gewoon weten wat de precedence van de diverse operators is. Als je het niet weet of wil weten, gebruik dan altijd haakjes.

{signature}

Pagina: 1