Multidesk.be » Forums » ASP » GetRows() (gesloten)

Helpinformatie
Dit onderwerp bevindt zich in het archief.
Het is bijgevolg niet mogelijk er nog op te reageren.
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door een gast op vrijdag 21 november 2003 om 16:35:34.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ik heb net in de FAQ gelezen over GetRows en ben wat uit gaan proberen. Maar het lukt me niet.

Als ik dit doe:
CODE
  1. array=objNaam.GetRows

blijft array leeg.
Maar objNaam is wel degelijk gevuld, want als ik
CODE
  1. objNaam.RecordCount

doe, dan blijkt dat er 30 records in objNaam zitten.

Wat doe ik verkeerd?
^ Reactie #1 geschreven door Bridge_Burner op donderdag 20 november 2003 om 16:14:17.
Bridge_Burner heeft nog geen avatar toegevoegd
Multiviteit: 404
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
kzal anders effe dees stukske code hier zetten als voorbeeld, je code hier effe posten mag ook altijd is handiger voor effe na te kijken ...

een voorbeeldje :
CODE
  1.  
  2. objRS.Open "SELECT * FROM Table1", objConn
  3.  
  4. Dim aArray
  5.  
  6. aArray = objRS.GetRows
  7.  
  8. 'Now let's retrieve the total number of columns and rows in our array
  9.  
  10. Dim iColumnCount, iRowCount
  11.  
  12. iColumnCount = UBound(aArray, 1)
  13.  
  14. iRowCount = UBound(aArray, 2)
  15.  
  16. 'Output the first column of the first row
  17.  
  18. Response.Write aArray(0,0)
  19.  
  20.  


btw 1 : om te kijken of je array wel een array is kan je steeds de functie "IsArray(arrayvariable)" doen

btw 2 : gebruik best niet het woord array als variabele naam maar noem het arrayRecords of aArray ofzo ....

btw 3 : best dat je je code hier even post ...
^ Reactie #2 geschreven door Tom op donderdag 20 november 2003 om 18:09:29.
Tom's avatar
Multiviteit: 254
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
en voor verdere uitleg en voorbeeld verwijs ik u gaarne door naar w3schools.org ;)

http://www.w3schools.com/ado/met_rs_getrows.asp
^ Reactie #3 geschreven door TimS op donderdag 20 november 2003 om 20:58:39.
TimS heeft nog geen avatar toegevoegd
Multiviteit: 209
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Dit is de code die ik nu gebruik

CODE
  1. set conn=Server.CreateObject("ADODB.Connection")
  2. conn.Provider="Microsoft.Jet.OLEDB.4.0"
  3. conn.Open(Server.Mappath("<locatie database>"))
  4. set rs = Server.CreateObject("ADODB.recordset")
  5. rs.Open "SELECT naam FROM DraaienProd WHERE mat LIKE '%" + strMat + "%' AND np ='" + strNP + "' AND op LIKE '%" + strOp + "%' AND " + strOmst + " = True", conn, 1, 1
  6. p=rs.GetRows()
  7.  

Als ik rs.RecordsCount doe zie ik dat er 30 records zijn.
Als ik UBound(p) doe, zie ik dat p 0 velden heeft.

Ik heb eerst het voorbeeld letterlijk overgenomen die op w3schools staat, alleen mijn SQL statementdatabase locatie gewijzigd. toen had ik dus

CODE
  1. rs.Open "<sql>", conn

maar toen kreeg ik bij RecordsCount -1. Daarna heb ik het dus veranderd in

CODE
  1. rs.Open "<sql>", conn, 1, 1

Toen kreeg ik met rs.RecordsCount dat er 30 records waren. Maar p bleef leeg.
Zou het dus aan LockType en CursorType liggen dat ik de GetRows niet kan gebruiken?

-- edit -- ff code tags laten werken ;) -- robke --
^ Reactie #4 geschreven door Martijn op donderdag 20 november 2003 om 21:18:07.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Wat krijg je als je een simpele RS doet met daarin een teller die gewoon vermeerdert elke keer je een waarde tegenkomt?

Locktype kan het normaal niet liggen, aangezien dit standaard goed staat, je kan eventueel mode 3 eens proberen en zien ofdat dat helpt :-)
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #5 geschreven door TimS op donderdag 20 november 2003 om 21:31:36.
TimS heeft nog geen avatar toegevoegd
Multiviteit: 209
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Zolang ik geen GetRows gebruik werkt alles.
Dus ik kan wel gewoon met een teller werken.
Maar wanneer ik GetRows gebruik, wordt het script uitgevoerd tot waar GetRows staat. Daarna gebeurd er niks meer.
Ik krijg dan ook geen foutmelding. :-s
^ Reactie #6 geschreven door Martijn op donderdag 20 november 2003 om 22:02:01.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Heb zelf al redelijk lang niet meer met deze methode gewerkt en ben wat beginnen opzoeken. Ik dacht ook aan dit: hoe roep (output) je je array? (dus zonder Recordcount he).
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #7 geschreven door TimS op vrijdag 21 november 2003 om 10:00:04.
TimS heeft nog geen avatar toegevoegd
Multiviteit: 209
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ik kijk met UBound(array) of mijn array gevuld is.
Ik krijg dan dat mijn array uit 0 velden bestaat.
^ Reactie #8 geschreven door TimS op vrijdag 21 november 2003 om 10:12:25.
TimS heeft nog geen avatar toegevoegd
Multiviteit: 209
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ik doe nu dit:
CODE
  1.  
  2. set conn=Server.CreateObject("ADODB.Connection")
  3. conn.Provider="Microsoft.Jet.OLEDB.4.0"
  4. conn.Open(Server.Mappath("<locatie database>"))
  5. set rs = Server.CreateObject("ADODB.recordset")
  6. rs.Open "<SQL statement>", conn, 1, 1
  7.  
  8. If (rs.EOF AND rs.BOF) Then
  9.  Response.Write "geen resultaten gevonden"
  10. Else
  11.  i=0
  12.  Do until rs.EOF
  13.   arNamen(i) = rs.Fields.Item("naam").value
  14.   i=i+1
  15.   rs.Movenext
  16.  loop
  17. End If
  18.  
  19. rs.close
  20. conn.close
  21.  
  22. For i=0 to UBound(arNamen)
  23.  Response.Write arNamen(i) & "<BR>"
  24. next
  25.  


Dit werkt wel, maar GetRows is veel sneller denk ik, of heb ik dat fout?
^ Reactie #9 geschreven door Bridge_Burner op vrijdag 21 november 2003 om 14:05:29.
Bridge_Burner heeft nog geen avatar toegevoegd
Multiviteit: 404
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
yep veel sneller omdat hij voor elke veldopvraging en movenext anders terug naar de database moet

maar er is een fout bij je uitvoer :)
je moet in je array 2 parameters doorgeven
de tweede is "de rij" en de eerste is "de kolom" die begint vanaf 0

dus
CODE
  1.  
  2. For i=0 to UBound(arNamen,2)
  3.      Response.Write arNamen(0,i) & "<BR>"
  4. next
  5.  

zou normaal moeten werken

om u code nu nog wat mooier te maken kan je altijd een procedure schrijven voor je db te open en eentje voor terug te sluiten, dat dan in een apart bestand steken en include'n :) dat bespaart u veel werk als ge op meerdere pagina's u db nodig hebt en tis overzichtelijker
om het wat mooier uit te werken :
http://www.multidesk.be/upload/forum/109.txt (alsek da hier poste da deden de smileys raar) :)

^ Reactie #10 geschreven door TimS op vrijdag 21 november 2003 om 15:19:36.
TimS heeft nog geen avatar toegevoegd
Multiviteit: 209
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Als ik de code uit http://www.multidesk.be/uploads/forum/109.txt gebruik, dan krijg ik de volgende foutmelding:
CODE
  1. ADODB.Recordset error '800a0bb9'
  2.  
  3. Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
  4.  
  5. /nieuw/producten/draaien/test.asp, line 18


Op die regel staat
CODE
  1. oRs.Open sSql, conn, 1, 1

Ik heb een simpel sql-statement gebruikt waarvan ik zeker weet dat hij werkt.
^ Reactie #11 geschreven door TimS op vrijdag 21 november 2003 om 15:39:55.
TimS heeft nog geen avatar toegevoegd
Multiviteit: 209
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
JA! ik ben er eindelijk uit. De code werkt, en met GetRows nog wel. Het laatste probleem was dat conn nog niet goed gedefinieerd was. Alles werkt nu goed.
Heel erg bedankt voor jullie hulp! (worship)
^ Reactie #12 geschreven door Bridge_Burner op vrijdag 21 november 2003 om 16:35:34.
Bridge_Burner heeft nog geen avatar toegevoegd
Multiviteit: 404
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
yep btw als die fout in mijn stukske code hier zat sorry dan ma kwas eigenlijk me java bezig en tussendoor effe gedaan :D
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten