---
title: "Kan inte kolla om recset är tomt =("
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/71662-kan-inte-kolla-om-recset-är-tomt"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "daniel_ra"
published: "2003-03-20T16:37:06.000Z"
updated: "2003-03-21T12:47:01.000Z"
replies: 21
views: 472
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/71662-kan-inte-kolla-om-recset-är-tomt"
---

# Kan inte kolla om recset är tomt =(

_Sida 1 av 2._

## #1 — daniel_ra, 2003-03-20T16:37Z

Har frågat detta förut och har använt mig av detta:

If recset.eof then

'recordset tomt
else
'recordset inte tomt
end if

men detta funkar inte om min tabell jag försöker hämta dada ifrån är tomt.. Jag har satt standardvärdena i tabellen till "" alltså tom sträng.. då kraschar allt. Sätter jag standardvärdet till 0 i dessa fält istället så tror den inte att recordsetet är tomt utan försöker gå vidare ändå.. Vad ska jag göra??

Permalänk: https://www.webforum.nu/p/71662

## #2 — daniel_ra, 2003-03-20T17:16Z

Testade även det här men det funkar inte heller..

```

sql_max = "select max(produktkategori_ID) from produktkategori"

set maxRecSet = Server.CreateObject("ADODB.Recordset")
maxRecSet.open sql_max, connect
    	
if not maxRecSet.EOF  or not maxRecSet.BOF then
    		
response.write("Inte tom")
   		
else	
    		
response.write("Tom")

end if	
	
maxRecSet.Close
```

Den blir aldrig tom hur jag än gör.. Beror det på sql frågan att jag letar efter max?

Permalänk: https://www.webforum.nu/p/984590

## #3 — trexter, 2003-03-20T20:13Z

Skippa "not maxRecSet.BOF". I och med att scriptet börjar avläsa databasen från början så uppfylls ju alltid detta (beginning of file).

 :)

Permalänk: https://www.webforum.nu/p/984685

## #4 — OveRRidE, 2003-03-20T20:13Z

```
"select max(produktkategori_ID)[b] as MaxAntal[/b] from produktkategori"
```

Kanske?

Permalänk: https://www.webforum.nu/p/984687

## #5 — daniel_ra, 2003-03-20T20:39Z

funkar inte iallafall

```

sql_max = "select max(produktkategori_ID) as MaxAntal from produktkategori"

set maxRecSet = Server.CreateObject("ADODB.Recordset")
maxRecSet.open sql_max, connect
    	
if maxRecSet.EOF or maxRecSet.BOF then
    		
max_ID = 1
			
else	
    		
Do Until maxRecSet.EOF
max_ID = maxRecSet(0)
maxRecSet.MoveNext
Loop
max_ID = max_ID +1
	   			   		    
end if	
	
maxRecSet.Close
```

Även om jag bara anvånder if maxRecSet.EOF så verkar mitt
recordset aldrig vara tomt.. Eftersom det inte ligger någonting i tabellen så försöker den göra max_ID = max_ID +1, detta trots att
max_ID aldrig får ett värde, dvs det kraschar.. grr

Permalänk: https://www.webforum.nu/p/984711

## #6 — solbulle, 2003-03-20T22:02Z

Om du testar att skriva:

max_ID = 1

Istället, vad får du ut för värde då på max_ID till slut?

Permalänk: https://www.webforum.nu/p/984764

## #7 — Engine^, 2003-03-21T08:02Z

kodsnutten

```
if maxRecSet.EOF or maxRecSet.BOF then
```

är redundant för dig, eftersom du gör en SELECT. End-Of-File räcker alldeles utmärkt. Det du har efter

```
Do Until maxRecSet.EOF
  max_ID = maxRecSet(0)
  maxRecSet.MoveNext
Loop
```

förstår jag inte vad det ska vara bra för. Ge tusan i defaultvärden. Dom ställer bara till med bekymmer ;)

```
sql_max = "SELECT (Max(produktkategori_ID) + 1) AS nNewValue FROM produktkategori"

maxRecSet.Open sql_max, connect

If maxRecSet.EOF Then
  [blue]'Ingen post... maxID = 1 ?[/blue]
Else
  maxID = maxRecSet("nNewValue")
End If
```

Det kan tänkas att jag inte förstog ditt problem, men jag antar att det är något sånt här du är ute efter.

Permalänk: https://www.webforum.nu/p/984883

## #8 — daniel_ra, 2003-03-21T09:22Z

okay, jag förstår att jag kanske krånglat till det lite för mig.. Använder mig av det du skrev här innan, Mitt problem fortfarande är dock att 

```
if maxRecSet.EOF then
```

aldrig blir sant. Trots att min tabell är tom och den inte borde ha nåt värde försöker den tilldela max_ID med någonting.. Förstår inte varför. Nu har jag i access inte satt något standardvärde alls. Jag antar att detta värde är NULL eller "" vet verkligen inte vad jag skall göra. Mitt max_ID får alltså inget värde då tabellen jag söker från är helt tom. Finns det en post och ett ID så går det bra men annars inte

Permalänk: https://www.webforum.nu/p/984934

## #9 — Engine^, 2003-03-21T09:39Z

Det är då väldigt konstigt...

```
If maxRecSet.RecordCount > 0 Then [blue]'Do stuff...[/blue]
```

Fungerar inte det så är det riktigt lurigt...

Permalänk: https://www.webforum.nu/p/984949

## #10 — niko, 2003-03-21T09:43Z

```
sql_max = "select max(produktkategori_ID) as MaxAntal from produktkategori"
'
'
if maxRecSet(0) is null then
	'produktkategori är tom
else
	'produktkategori är inte tom
end if
```

Permalänk: https://www.webforum.nu/p/984954

## #11 — daniel_ra, 2003-03-21T09:46Z

recordcount blir -1 så det blir aldrig \> 0 däremot blir det ju \<\>0

men om recordset blir -1 så är det väl tomt, eller

Permalänk: https://www.webforum.nu/p/984956

## #12 — Engine^, 2003-03-21T09:51Z

Ja, om recordset.recordcount är mindre än noll, så...

Permalänk: https://www.webforum.nu/p/984963

## #13 — @nders, 2003-03-21T09:53Z

om .recordcount är -1 brukar det innebära att recordsetet inte är öppnat på ett sätt som stöder propertyn, och då är värdet alltid -1, oberoende av hur många poster där finns. Använd nikos förslag, det är mitt förslag.

Permalänk: https://www.webforum.nu/p/984964

## #14 — daniel_ra, 2003-03-21T10:06Z

jag måste göra nåt annat fel. Såhär ser det ut nu, använde mig av nikos förslag:

```

sql_max = "select max(produktkategori_ID) as Maxvalue from produktkategori"

	set maxRecSet = Server.CreateObject("ADODB.Recordset")
    	maxRecSet.open sql_max, connect

if maxRecSet(0) is NULL then
max_ID = 1
response.write("TOMT")
else
max_ID = maxRecSet("Maxvalue")
end if
```

Resultatet blir fortfarande att max_ID inte har något värde

Permalänk: https://www.webforum.nu/p/984976

## #15 — daniel_ra, 2003-03-21T10:20Z

Verkar vara ett knasigt problem, men eftersom jag vet att recordcount blir -1 då tabellen är tom. kan jag då skriva:

```
if maxRecSet.recordcount = -1 then
	max_ID = 1
else
	max_ID = maxRecSet("Maxvalue") +1	   			   			   			   		    		
end if
```

utan att det ställer till några andra problem, alltså kan recordcount bli -1 i andra fall än detta?

Permalänk: https://www.webforum.nu/p/984985

## #16 — Engine^, 2003-03-21T10:36Z

[RecordCount](http://www.devguru.com/Technologies/ado/quickref/recordset_recordcount.html)

Permalänk: https://www.webforum.nu/p/985005

## #17 — daniel_ra, 2003-03-21T10:38Z

aah.. tackar

Permalänk: https://www.webforum.nu/p/985007

## #18 — daniel_ra, 2003-03-21T11:23Z

Det är helt otroligt, jag får det verkligen inte att fungera.

om jag skriver

```

sql_max = "select max(produktkategori_ID) as Maxvalue from produktkategori"
```

Vad får då Maxvalue för värde om tabellen jag hämtar från är tom..
Jag har testat med "" och is NULL men ingenting av detta blir sant
fattar verkligen inte

Permalänk: https://www.webforum.nu/p/985037

## #19 — @nders, 2003-03-21T11:26Z

Fungerar det inte om du använder funktionen isNull()?

```
if isNull(maxRecSet(0)) then
	'produktkategori är tom
else
	'produktkategori är inte tom
end if
```

mvh

Permalänk: https://www.webforum.nu/p/985039

## #20 — daniel_ra, 2003-03-21T11:34Z

Äntligen verkar det fungera

```
if isNull(maxRecSet(0)) then
	'produktkategori är tom
else
	'produktkategori är inte tom
end if
```

Grymt tack @nders!! fattar att man sliter håret av sig efter ett tag

någonting som fortfarande är konstigt är att maxRecSet.recordcount fortfarande blir -1 trots att det finns poster i tabellen. Ett problem som jag iof inte orkar bry mig om just nu =)

Permalänk: https://www.webforum.nu/p/985041

---

Tråden på webben: https://www.webforum.nu/amne/asp/71662-kan-inte-kolla-om-recset-är-tomt  
Nästa sida: https://www.webforum.nu/amne/asp/71662-kan-inte-kolla-om-recset-är-tomt/page2.md
