Avatar billede eyesonly Nybegynder
19. juni 2006 - 11:10 Der er 1 løsning

Hvorfor "låser" RecordCount nogle gange recordset, men ikke altid

Er der nogen der kan fortælle mig hvorfor objRSList.RecordCount nogen gange "låser" recordsettet så man ikke kan tilgå det bagefter?

Ved første eksempel her låses recordsettet og jeg kan ikke skrive listen ud medmindre jeg eksekverer sql kommandoen på ny.

Set objRSList = Server.CreateObject("ADODB.RecordSet")
strSQLList = "SELECT articleid, variant1 " &_
            "FROM web_col " &_
            "WHERE category=1 " &_
            "AND deleted=0 " &_
            "ORDER BY articleid, variant1"
objRSList.Open strSQLList, strConnectionXAL, 1, 1

...kode udeladt...
  intPageCount  = objRSList.RecordCount / intPageSize
...kode udeladt...
HEREFTER UDKRIVES LISTEN


Ved andet eksempel her virker låses den ikke og jeg kan skrive listen (eksemplet er lidt langt, men det var lige det jeg havde).

Set objRSList = Server.CreateObject("ADODB.RecordSet")
strSQLList = "SELECT DISTINCT lagerkart.varenummer, lagvariantpost.variant1 " &_
            "FROM lagerkart, lagvariantpost " &_
            "WHERE lagerkart.dataset='" & Session("dataset") & "' " &_
            "AND lagvariantpost.dataset='" & Session("dataset") & "' " &_
            "AND lagerkart.varenummer=lagvariantpost.varenummer " &_
            "AND ( lagerkart.varenummer IN " &_
            "(SELECT DISTINCT varenummer " &_
            "FROM ordrepost " &_
            "WHERE dataset='" & Session("dataset") & "' " &_
            "AND ordrenummer='        1' " &_
            "AND varenummer<>'993' " &_
            "AND varenummer<>'98000') " &_
            "OR lagerkart.varenummer IN " &_
            "(SELECT DISTINCT TO_CHAR( TO_NUMBER( varenummer )+1 ) " &_
            "FROM ordrepost " &_
            "WHERE dataset='" & Session("dataset") & "' " &_
            "AND ordrenummer='        1' " &_
            "AND varenummer<>'993' " &_
            "AND varenummer<>'98000') " &_
            "OR lagerkart.varenummer IN " &_
            "(SELECT DISTINCT TO_CHAR( TO_NUMBER( varenummer )-1 ) " &_
            "FROM ordrepost " &_
            "WHERE dataset='" & Session("dataset") & "' " &_
            "AND ordrenummer='        1' " &_
            "AND varenummer<>'993' " &_
            "AND varenummer<>'98000') ) " &_
            "AND varenavn IN " &_
            "(SELECT varenavn " &_
            "FROM lagerkart " &_
            "WHERE dataset='" & Session("dataset") & "' " &_
            "AND varenummer IN " &_
            "(SELECT DISTINCT varenummer " &_
            "FROM ordrepost " &_
            "WHERE dataset='" & Session("dataset") & "' " &_
            "AND ordrenummer='        1' " &_
            "AND varenummer<>'993' " &_
            "AND varenummer<>'98000')) " &_
            "ORDER BY lagerkart.varenummer, lagvariantpost.variant1"
objRSList.Open strSQLList, strConnectionXAL, 1, 1

...kode udeladt...
  intPageCount  = objRSList.RecordCount / intPageSize
...kode udeladt...
HEREFTER UDKRIVES LISTEN

Begge er ganske almindelige SELECT sql sætninger, så jeg kan ikke se hvad der gør at den bliver låst ved den første.
Avatar billede eyesonly Nybegynder
19. juni 2006 - 13:35 #1
Har fundet en løsning.

Hvis jeg bruger en statisk cursor (objRSList.Open strSQLList, strConnectionXAL, 3, 1) så virker det hver gang.

Men forstår stadig ikke hvorfor den med en keyset cursor virker med nogle select sætninger, men ikke alle.
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