Avatar billede tblaster Nybegynder
01. september 2003 - 10:45 Der er 5 kommentarer og
1 løsning

Problem med rs.EOF og rs.BOF

Hvad er der lige galt med denne:

sql="SELECT KundeID From Kunder"
rs.Open Sql, Conn,1

Do While Not rs.EOF

KundeID = rs("KundeID")
   
    Set Conn2 = Server.CreateObject("ADODB.Connection")
    Set RS2 = Server.CreateObject("ADODB.Recordset")
    Conn2.Open Connection_string2

    sql2="SELECT ModulID From Modul Where KundeID = " & KundeID
response.write sql2
    rs2.Open Sql2, Conn2,1

    If rs.EOF and rs.BOF Then

    Response.write vbcrlf & "var Modul" & KundeID & " = new Array() ; " & vbcrlf
    Response.write "Modul1111" & KundeID & "[0] = new Entry(""1_1"","" [Opret Ny]                      "");"

    Else
    Response.write vbcrlf & "var Modul" & KundeID & " = new Array() ; " & vbcrlf
    Response.write "Modul22222" & KundeID & "[0] = new Entry(""1_1"","" [Opret Ny]                      "");"
        Response.write rs("ModulID")

    End If

    Rs2.Close
    Set sql2 = Nothing

rs.movenext
loop

Rs.Close
Set sql = Nothing


Jeg får denne fejl:
Item cannot be found in the collection corresponding to the requested name or ordinal

Og den henviser til følgende:
Response.write rs("ModulID")

Såvidt jeg kan se så liget meget om rs.EOF og rs.BOF så udskriver den altid noget. Jeg ved at den finder noget ved at der er noget i min database til 3 af mine værdier. Til de andre 10 er der intet og derfor skulle den gerne udskrive:
Response.write "Modul1111" & KundeID & "[0] = new Entry(""1_1"","" [Opret Ny] 

Hvad er der galt?
Avatar billede eagleeye Praktikant
01. september 2003 - 11:08 #1
Skulle alt dette inde i dit være være rs2 og ikke rs, da du åbener for rs2 recordset lige inden denne ifsætning:

    If rs.EOF and rs.BOF Then

    Response.write vbcrlf & "var Modul" & KundeID & " = new Array() ; " & vbcrlf
    Response.write "Modul1111" & KundeID & "[0] = new Entry(""1_1"","" [Opret Ny]                      "");"

    Else
    Response.write vbcrlf & "var Modul" & KundeID & " = new Array() ; " & vbcrlf
    Response.write "Modul22222" & KundeID & "[0] = new Entry(""1_1"","" [Opret Ny]                      "");"
        Response.write rs("ModulID")

    End If



Sådan her:

    If rs2.EOF and rs2.BOF Then

    Response.write vbcrlf & "var Modul" & KundeID & " = new Array() ; " & vbcrlf
    Response.write "Modul1111" & KundeID & "[0] = new Entry(""1_1"","" [Opret Ny]                      "");"

    Else
    Response.write vbcrlf & "var Modul" & KundeID & " = new Array() ; " & vbcrlf
    Response.write "Modul22222" & KundeID & "[0] = new Entry(""1_1"","" [Opret Ny]                      "");"
        Response.write rs2("ModulID")

    End If
Avatar billede eagleeye Praktikant
01. september 2003 - 11:09 #2
Fejlen: Item cannot be found in the collection corresponding to the requested name or ordinal

Og den henviser til følgende:
Response.write rs("ModulID")


Betyder at den ikke i recordset rs kan finde en kolonne som hedder ModuleID. Så der skal stå rs2 som før vist.
Avatar billede tblaster Nybegynder
01. september 2003 - 11:13 #3
Ups ... jo selvfølgelig skal det da være:
If rs2.EOF and rs2.BOF Then

Kan du fortælle mig hvad forskellen er på EOF og BOF? Skal jeg altid undersøge bægge eller hva?

Jeg køre med en MS SQL Server
Avatar billede eagleeye Praktikant
01. september 2003 - 11:19 #4
EOF står for EOF End of File og BOF står Before File

Nårmalt skulle der være nok at tjekke for EOF når man loop ned gennem sit recordset. Hvis man køre frem og tilbage med movenext og moveprevios så kan man havde behov for at tjekke om man er kommet til starten af sit recordset.

Hvis recordsetet er tomt vil både EOF og BOF være true.
Avatar billede eagleeye Praktikant
01. september 2003 - 11:21 #5
Her er lidt fra MS som også brskriver hvordan se sættes :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdapro01_7.asp
Avatar billede tblaster Nybegynder
01. september 2003 - 11:32 #6
Tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester