/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
count og "Variable is undefined"
Fra : Ukendt


Dato : 18-04-03 21:07

Jeg har nogle problemer med at få min count til at virke. Jeg er næsten
sikker på at det ligger i måden jeg åbner Recordsettet på, men har ikke
kunne finde på at løse problemet uden at ændre måden hvorpå Recordsettet
åbnes. Denne metode vil jeg gerne beholde hvis det kan lade sig gøre?


Dim strSQL
Set strSQL = oConn.Execute("Select count(NewsSygeplejeskerID) FROM tblNews
WHERE NewsSygeplejeskerID = "& strPersonId &" ")

Ovenstående bruger jeg til at tælle antal poster der er i en tabel, men den
giver fejlen

Error Type:
Microsoft VBScript runtime (0x800A01F4)
Variable is undefined: 'oConn'

Men oConn er jo defineret, se nedenstående funktion der åbner Recordsettet.
Nogen der har et bud på hvad der skal gøres anderledes for at få det til at
virke?

Function openRecordset(strSQL)
Dim oRs, oConn
Set oConn = Server.CreateObject("ADODB.Connection")
Set oRs = Server.CreateObject("ADODB.Recordset")

oConn.Open Session("DBGYM")


oRs.ActiveConnection = oConn
oRs.CursorType = adOpenKeyset
oRs.LockType = adLockOptimistic
oRs.Source = strSQL
oRs.Open
Set openRecordset = oRs
Set oRs = Nothing
End Function

--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk ICQ: 25308942
" If something's hard to do, then it's not worth doing. Homer J. Simpson"




 
 
Jens Gyldenkærne Cla~ (18-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-04-03 21:34

Christian M. Nielsen skrev:

> Dim strSQL
> Set strSQL = oConn.Execute("Select count(NewsSygeplejeskerID)
> FROM tblNews WHERE NewsSygeplejeskerID = "& strPersonId &" ")

Det er ikke en fejl, men det virker lidt underligt at du bruger
variabelnavnet strSQL til at gemme et recordset. Jeg ville bruge
rsCount eller lignende (eller evt. bruge executescalar og helt
undvære recordsettet)

> Variable is undefined: 'oConn'
>
> Men oConn er jo defineret, se nedenstående funktion der åbner
> Recordsettet.

oConn er defineret inden i din funktion - derfor kan den kun ses
derinde.

Hvis du vil beholde din funktion kan du bare kalde den med sql-
sætningen som parameter:


Dim sqlCount, rsCount
Dim intCount
sqlCount = "Select count(NewsSygeplejeskerID)FROM tblNews WHERE
NewsSygeplejeskerID = " & strPersonId

rsCount = openRecordset(sqlCount)

If Not rsCount.EOF Then
intCount = rsCount(0)    
End If
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Thomas Voller (19-04-2003)
Kommentar
Fra : Thomas Voller


Dato : 19-04-03 11:55

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev ...
> sqlCount = "Select count(NewsSygeplejeskerID)
> FROM tblNews
> WHERE NewsSygeplejeskerID = " & strPersonId
> rsCount = openRecordset(sqlCount)

Et lille tillægsspørgsmål. Plejer man ikke at benytte SELECT AS når man
samtidig benytter count? Altså
SELECT COUNT(Felt) AS myCount...

Hvorfor er det ikke tilfældet i denne situation?


Mvh. Voller.



Jens Gyldenkærne Cla~ (20-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 20-04-03 21:10

Thomas Voller skrev:

> Et lille tillægsspørgsmål. Plejer man ikke at benytte SELECT
> AS når man samtidig benytter count?

Jo, det er ret almindeligt,

> Hvorfor er det ikke tilfældet i denne situation?

....men det er ikke strengt nødvendigt. Man kan altid referere til
felterne i et recordset via deres indeksnummer - altså rs(0) =
første felt i recordsettet, rs(1) = andet felt etc.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jakob Andersen (23-04-2003)
Kommentar
Fra : Jakob Andersen


Dato : 23-04-03 22:05

Jens Gyldenkærne Clausen skrev:
> Det er ikke en fejl, men det virker lidt underligt at du bruger
> variabelnavnet strSQL til at gemme et recordset. Jeg ville bruge
> rsCount eller lignende (eller evt. bruge executescalar og helt
> undvære recordsettet)

Så vidt jeg husker er ExecuteScalar ikke en del af ADO, men derimod et
ADO.NET begreb.

--
Jakob Andersen

Jens Gyldenkærne Cla~ (23-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 23-04-03 22:46

Jakob Andersen skrev:

> Så vidt jeg husker er ExecuteScalar ikke en del af ADO, men
> derimod et ADO.NET begreb.

Det har du vist ret i. Man kan dog stadig undgå et recordset i
asp.old ved at bruge ADODB.Command med en output-parameter (et
eksempel kan ses her:
<http://www.aspalliance.com/stevesmith/articles/sprocs.asp>)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jakob Andersen (23-04-2003)
Kommentar
Fra : Jakob Andersen


Dato : 23-04-03 22:57

Jens Gyldenkærne Clausen skrev:
> Det har du vist ret i. Man kan dog stadig undgå et recordset i
> asp.old ved at bruge ADODB.Command med en output-parameter (et
> eksempel kan ses her:
><http://www.aspalliance.com/stevesmith/articles/sprocs.asp>)

Understøtter Access "stored procedure" output parametre?

--
Jakob Andersen

Jens Gyldenkærne Cla~ (24-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 24-04-03 11:43

Jakob Andersen skrev:

> Understøtter Access "stored procedure" output parametre?

Sikkert ikke. Jeg bliver ved at glemme hvor meget man ikke kan i
Access.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste