[asp] 2d array doorgeven vanaf functie

Pagina: 1
Acties:

  • coldasice
  • Registratie: September 2000
  • Laatst online: 09:48

coldasice

business intelligence

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Function GegevensArrayOphalen(byRef arrTijdelijkeGegevens)
    Set oSession = OpenSessieAnoniem
    If Not oSession Is Nothing Then
        Set oPublic = OpenPublicRoot(oSession)
        For Each oMessage In oRDBO.Messages
    if Veld(oMessage, conVolledigeNaam) = "" then
    else
          reDim arrTijdelijkeGegevens(m,10)
                       arrTijdelijkeGegevens(m,0)=Veld(oMessage, conVolledigeNaam) 
          arrTijdelijkeGegevens(m,5)=Veld(oMessage, conVolledigeNaam)  
                  Response.Write arrTijdelijkeGegevens(m,0)
                      m=m+1
    end if


Dit bovenstaande is de functie...

en als ik de response.write laat staan geeft hij keurig de waarde!

Hieronder staat de code waar vanuit ik de functie aanroep...maar hier geeft hij een lege array terug...wat doe ik verkeerd...


code:
1
2
3
4
5
6
7
8
9
Dim arrVerjaardag(2,15)

GegevensArrayOphalen(arrVerjaardag)

for k=0 to UBound(arrVerjaardag) -1
    Response.Write "<tr><td>" & arrVerjaardag(k,0) & "</td></tr>"
    Response.Write "<tr><td>" & arrVerjaardag(k,5) & "</td></tr>"

next


edit:
het lijkt op mijn andere post maar hij is niet hetzelfde.....ze hebben niets met elkaar te maken

business-intelligence.info/freelance


  • coldasice
  • Registratie: September 2000
  • Laatst online: 09:48

coldasice

business intelligence

Topicstarter
Ik heb de oplossing gevonden....
http://www.aspmessageboar.../asp.asp?M=72404&F=20&P=1

een ingewikkeld verhaaltje over het gebruik van haken maar wel iets om te onthouden.....

business-intelligence.info/freelance


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 10:26

pistole

Frutter

waarom doe je uberhaupt een functie icm byref parameter passing? Tamelijk nutteloos, lijkt me

Ik frut, dus ik epibreer


  • coldasice
  • Registratie: September 2000
  • Laatst online: 09:48

coldasice

business intelligence

Topicstarter
Hoe zou jij het dan aanpakken?...

je wilt een waarde gebruiken in de functie en die wil je tevens teruggeven aan je hoofdprogramma.....lijkt me niet echt nutteloos

business-intelligence.info/freelance


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 10:26

pistole

Frutter

lottumracing schreef op 24 december 2003 @ 12:20:
Hoe zou jij het dan aanpakken?...

je wilt een waarde gebruiken in de functie en die wil je tevens teruggeven aan je hoofdprogramma.....lijkt me niet echt nutteloos
dan zou ik er een sub van maken als je functie geen resultaat oplevert.

Maar laat de rest van die functie eens zien? Wat er nu staat maakt weinig duidelijk

[ Voor 64% gewijzigd door pistole op 24-12-2003 13:47 ]

Ik frut, dus ik epibreer


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 26-05 18:25

Sponge

Serious Game Developer

Je array heeft al dimensies, en dan ga je redimmen? :) In Vb6 kan dat niet, in ASP wel? Nooit geweten :)

Trouwens, je kan toch altijd zoiets doen als:

code:
1
2
3
4
5
6
7
8
9
10
Dim arrVerjaardag(2,15)

Dim nieuwearray 
NieuweArray = GegevensArrayOphalen(arrVerjaardag) '//functie returned array..

for k=0 to UBound(NieuweArray ) -1
    Response.Write "<tr><td>" &    NieuweArray (k,0) & "</td></tr>"
    Response.Write "<tr><td>" &    NieuweArray (k,5) & "</td></tr>"

next


(en evt. arrVerjaardag weer updaten met NieuweArray)

[ Voor 36% gewijzigd door Sponge op 24-12-2003 13:52 ]


  • coldasice
  • Registratie: September 2000
  • Laatst online: 09:48

coldasice

business intelligence

Topicstarter
Je kunt een array dinamisch aanmaken en daarna redimmen...maar niet als je hem byRef doorgeeft want dan wordt hij op de een of andere manier gelocked....

Waar jij het over hebt...is preserve...dat zorgt ervoor dat je niks meer kunt veranderen aan het aanta dimensies....

msdn:
If you use the Preserve keyword, you can resize only the last array dimension, and you can't change the number of dimensions at all

[ Voor 47% gewijzigd door coldasice op 24-12-2003 14:15 ]

business-intelligence.info/freelance


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 26-05 18:25

Sponge

Serious Game Developer

Ik bedoel als je al een array gedimensioneerd maakt, dat je hem niet meer kunt redimmenm volgens mij. En "Dim arrVerjaardag(2,15)" maakt een array dus al gedimensioneerd.

Aangezien het toch bijna Kerst is, en hier op stage weinig te doen valt:
code:
1
2
3
4
<%
Dim arrVerjaardag(2,15)
Redim arrVerjaardag(2,100)
%>


Geeft:

code:
1
2
3
Runtimefout Microsoft VBScript (0x800A000A)
Deze matrix ligt vast of is tijdelijk vergrendeld.
/testje.asp, line 3


Omdat hij dus al gedimmed is bij het begin. Dit werkt echter wel:

code:
1
2
3
Dim arrVerjaardag()
ReDim arrVerjaardag(2,15)
Redim arrVerjaardag(2,100)


:)

  • coldasice
  • Registratie: September 2000
  • Laatst online: 09:48

coldasice

business intelligence

Topicstarter
tnxs..

helaas is dit niet echt een oplossing omdat je niet weet hoe groot hij de array moet maken...en als ik het goed heb kun je maar 1 keer redimmen....dan leg je de dimensies vast en kun je niks meer veranderen...

blijft dus hetzelfde....

[ Voor 97% gewijzigd door coldasice op 30-12-2003 10:00 ]

business-intelligence.info/freelance

Pagina: 1