[ASP] Typen komen niet overeen

Pagina: 1
Acties:

  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Topicstarter
Excuus voor mijn permanente newby-vragen, maar ik moet 't ergens vandaan halen, en de GoT-search en mijn favo sites 4Guys, W3Schools, ASP101 en 15minutes bieden geen uitleg.

Ik zeg ergens in mijn code:
code:
1
2
3
IF Session("MijnVar")="" THEN
  Session("MijnVar")=Request.Form("MijnVar")
END IF

Dit levert mij de foutmelding "De typen komen niet overeen" op. Ik heb deze alternatieven geprobeerd: IF Session("MijnVar")=NULL; ="NULL"; ='NULL'; =''; en zelfs IF LEN(Session("MijnVar"))<1... Ik blijf dezelfde foutmelding krijgen.
Wat moet ik doen?

Bloed, zweet & koffie


Verwijderd

probeer dit eens:
code:
1
2
3
IF cint(Session("MijnVar"))=0 THEN
  cint(Session("MijnVar"))=cint(Request.Form("MijnVar"))
END IF

Ow ja, hij geeft ook vast wel een regelnummer bij de foutmelding, tis prettig om te weten of het om de eerste regel uit je code gaat die je gaf of om de tweede

  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Topicstarter
Bij mijn code komt de foutmelding op de eerste regel.. bij de jouwe op de tweede.

Cool! Nog maar 377 regels te gaan, en de melding valt buiten het bereik van mijn code :P

Bloed, zweet & koffie


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Topicstarter
De inhoud van de sessievariabele is een selectie van een aantal checkboxes door de gebruiker. Die moet bewaard blijven (anders moet ik die variabelen door alle pagina's meezeulen).
Op pagina 2 zeg ik: als de sessievariabele leeg is, haal 'm dan van pagina 1 (Request.Form).

Misschien is dat niet de beste manier.. (Tsja, als het niet kan...) Is er een andere manier om hetzelfde te bereiken?

Bloed, zweet & koffie


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:11

Crazy D

I think we should take a look.

Op zaterdag 02 februari 2002 11:11 schreef Vilenin het volgende:
Misschien is dat niet de beste manier.. (Tsja, als het niet kan...) Is er een andere manier om hetzelfde te bereiken?
Hidden input box, met daarin de betreffende waardes. Werkt bij mij altijd prima. Nadeel van alles in een sessie stoppen is dat je in de problemen kan komen als je een 2e browser opent, of als je te lang wacht met submitten.

Exact expert nodig?


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Topicstarter
De waarden worden van pag. 1 naar pag. 2 gestuurd. Pag. 2 is een duidelijk vormgegeven output van een database. Dmv icoontjes e.d. kan je die db bewerken. Druk je bv. op een kruisje, dan komt er een pop-up (=nieuwe browser!) die om bevestiging vraagt. Bevestig je, dan wordt de opdracht gegeven "sluit huidig window (=de pop-up) en load pag. 2 in window van pag. 2".
Betekent dat dan dat ik mijn sessie-variabele kwijt ben?

Bloed, zweet & koffie


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
nee je sessie blijft standaard 20 Min bestaan dus ook je sessie variabelen

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Topicstarter
Hmm.. dat is dus het probleem niet. Maar hoe kan het dan dat "de typen niet met elkaar overeen komen"?

Bloed, zweet & koffie


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Topicstarter
Wat extra info in deze verborgen trap naar boven:
De info in de sessievariabele is een Array, tenminste, het ziet er zo uit: "blabla, blah, bladiebla, enz, usw, ect". Maakt dat nog wat uit?
Ik heb ook dit geprobeerd:
code:
1
2
3
IF LEN(Session("naampje")) < 1 THEN
 Session("naampje") = Request.Form("naampje")
END IF

Dit geeft mij dus de foutcode op de eerste lijn...
Zelfde met dit:
code:
1
2
3
IF LEN(Session("naampje")(0)) < 1 THEN
 Session("naampje") = Request.Form("naampje")
END IF

Bloed, zweet & koffie


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
probeer je Request.Form eens in een Var te gooien
code:
1
2
3
4
5
6
7
8
9
<%
Dim Var1

Var1 = Request.Form("Blaat")

If Session("Blaat1") = "" Then
    Session("Blaat1") = Var1
End If
%>

Something like that

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
code:
1
2
3
If IsNull(Session("Mijnvar(0)")) = True Then
    'iets
End If

Je kan ook eens door de var loopen om te kijken of er wel wat in zit.
code:
1
2
3
For i = 0 to UBound(Session("Mijnvar"))
    Response.Write Session("Mijnvar(" & i & ")") & "<br>"
Next

  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Topicstarter
Op zondag 03 februari 2002 21:35 schreef 4of9 het volgende:
probeer je Request.Form eens in een Var te gooien
code:
1
2
3
4
5
6
7
8
9
<%
Dim Var1

Var1 = Request.Form("Blaat")

If Session("Blaat1") = "" Then
    Session("Blaat1") = Var1
End If
%>

Something like that
Heb ik gedaan (aan het begin al, stond nl. ook in het voorbeeld van 4GuysFromRolla) maar dit levert dezelfde foutmelding op.
Op zondag 03 februari 2002 23:27 schreef Gert het volgende:
code:
1
2
3
If IsNull(Session("Mijnvar(0)")) = True Then
    'iets
End If
Dit ga ik straks eens proberen, want naar zó iets was ik eigenlijk op zoek! Je kan nl. wel zeggen "als Session("Var") een tekstuele waarde heeft van "geen" karakters (="") - maar als je die variabele al benoemd hebt als array, dan kan ik me voorstellen dat dat niet werkt..
Je kan ook eens door de var loopen om te kijken of er wel wat in zit.
code:
1
2
3
For i = 0 to UBound(Session("Mijnvar"))
    Response.Write Session("Mijnvar(" & i & ")") & "<br>"
Next
Dit heb ik in het begin al gedaan met een voor de rest blanco pagina, om te kijken of het überhaupt kon werken. Er zit een array in zoals ik beschreven heb: "sdf, sdfasdf, sad, werwer, lkj, werflkj, dsf" (incl. de komma's).

Bloed, zweet & koffie


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
volgens mij kun je geen hele array in een Session gooien en mischien ook wel alleen een string.

Kijk eens op de msdn.microsoft en zoek eens op session. Mischien dat je dan vind waarom je typen niet overeen komen.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Topicstarter
Dat IsNull-voorbeeld werkt. :) Nu kapt m'n script er een paar regels verder mee:
Aantal = UBound(Session("MijnVar")) :(

Bij 4GuysFromRolla en ASP101 is een Sample Chapter van de ASP Bible te vinden, en daarin staat dat je alles, incl. arrays, in een sessievariabele kan stoppen.

Bloed, zweet & koffie


  • Nazgul
  • Registratie: Februari 2000
  • Laatst online: 11-10-2022

Nazgul

Digital Pizza Crew

Het is inderdaad mogelijk om allerlei types in het Session object te plaatsen. (Zelfs objecten)

Misschien is het ook handig om een extra check in te bouwen met isArray(), aangezien de Ubound fout gaat neem in aan dat hij denkt dat het geen array is.

No trees were killed in the sending of this message. However a large number of electrons were terribly inconvenienced.


  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 22:50

Greyfox

MSX rulez

UBound levert inderdaad een fout op als het argument geen array bevat.

MSX 2 rulez more


  • Nazgul
  • Registratie: Februari 2000
  • Laatst online: 11-10-2022

Nazgul

Digital Pizza Crew

Op maandag 04 februari 2002 08:43 schreef Vilenin het volgende:

Dit heb ik in het begin al gedaan met een voor de rest blanco pagina, om te kijken of het überhaupt kon werken. Er zit een array in zoals ik beschreven heb: "sdf, sdfasdf, sad, werwer, lkj, werflkj, dsf" (incl. de komma's).
Als ik dit zo lees, is het helemaal geen array, maar een komma gescheiden lijst in een string. :?

Lees ik het nu verkeerd of...

(BTW. Naar mijn weten kan een Session variabele nooit Empty of Nothing zijn. Een ongedefinieerde Session variabele geeft altijd een "" terug)

No trees were killed in the sending of this message. However a large number of electrons were terribly inconvenienced.


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Hmm handig om te weten wat er allemaal in het sessie object geplaatst kan worden, nooit geweten (nooit gebruikt ook :))

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

Topicstarter
Ik ging er eigenlijk vanuit dat "asdf, sdf, sdfsdf, sdf, er, dfg, dfsa" een array was - maar dat is het dus niet. :? Het is het resultaat van een aantal checkboxjes met dezelfde naam die uit een HTML-pagina met de Form-tag (Post) worden verstuurd. Wat je te zien krijgt, is dus: "waarde_check_1, waarde_check_2, waarde_check_3" (waarbij "waarde" staat voor de Value of Name oid die ik aan de checkboxen heb gegeven).

Ik heb het voorbeeld gebruikt van Asp101.com: http://www.asp101.com/samples/checkbox.asp - voorbeeld #3: "Multiple Checkboxs With The Same Name".

Zou wel een hoop verklaren als dit geen array is :D Asp101 zegt er idd bij dat het een CSV, oftewel Comma Seperated Value is. Het verschil is natuurlijk de spatie na de komma (die mij best wel veel tijd heeft gekost).

Bloed, zweet & koffie

Pagina: 1