---
title: "textfiler = Subscript out of range: What to do???"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/53131-textfiler-subscript-out-of-range-what-to-do"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "T_Codez"
published: "2002-09-13T12:15:55.000Z"
updated: "2002-09-13T13:23:23.000Z"
replies: 11
views: 294
page: 1
pages: 1
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/53131-textfiler-subscript-out-of-range-what-to-do"
---

# textfiler = Subscript out of range: What to do???

## #1 — T_Codez, 2002-09-13T12:15Z

Hej igen

Nu har jag följande lilla "Kryp" i koden som jag inte kan tygla...

Först så kollar jag ett tidigare värde om det finns i databasen...

SQL = "SELECT \* FROM tblartiklarlager WHERE fltcountrycode = '" & txt_Jvs2 &"'"
	  
Set db = Server.CreateObject("ADODB.Connection")
db.Open "int_hardoxDSN"
Set rs = db.Execute (SQL)

Om det inte vill sig så öppnar jag en textfil med lite bkupvärden. Dessa värden läggs sedan i en array:

Do until rs.BOF = False

Dim text, textfil3, arrRows

Set fso = CreateObject("Scripting.FileSystemObject")
Set textfil3 = fso.OpenTextFile(server.mappath("./") & "\\grannar.txt",1, False)
text = textfil3.ReadAll
arrRows = split(text, vbCrLf)	
textfil3.close

rs.close 'stänger recset så att en ny fresh kan jobba nedan
db.close 'stänger db så att en ny fresh kan jobba nedan

rakna = rakna + 1 'deklareras och tilldelas värdet tidigare i koden

  SQL = "SELECT \* FROM tblartiklarlager WHERE fltcountrycode = '" & arrRows(rakna) &"'"   rad 126
  
  Set db = Server.CreateObject("ADODB.Connection")
  db.Open "int_hardoxDSN"
  Set rs = db.Execute (SQL)

If rs.bof = False Then
	testa = 1
End If
Loop

Nu kan det faktiskt vara så att det inte ens räcker med mina bkup värden. Det blev jag varse via följande ERROR MESS:

Error Type:
Microsoft VBScript runtime (0x800A0009)
Subscript out of range: '4'
/se/tock.asp, line 126

Som ni förstår så är rad 4 tom. Jag skulle vilja få in en kontroll någonstans för att förhindra detta meddelande. Och istället så kommer det ett message om att "No Records Found", eller någe annat bra.

Har sprungit in i väggen och har inte en susning om hur jag ska lösa detta. Har ni någon ide!?

Tack för uppmärksamheten

/TT

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

## #2 — Jesper T, 2002-09-13T12:24Z

on error resume next
Kanske?!

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

## #3 — @nders, 2002-09-13T12:25Z

Typ:

```
if ubound(arrRows) > 0 then
    ' jihoo, här finns grejer
else
    ' nähoo, här finns ju inga grejer :(
end if
```

\----

> **JesperT skrev:**
>
> on error resume next

Nej, är du galen? Det är *helt* fel sätt att lösa buggar.

Mvh,

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

## #4 — Jesper T, 2002-09-13T12:28Z

> Nej, är du galen? Det är helt fel sätt att lösa buggar

\*Rinkebysvenska\*:Nej, kompis, bara rationell

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

## #5 — T_Codez, 2002-09-13T12:28Z

Okay... Så är det säkert...

Nu är det  bara så att det däringa med Errorbehandling har jag aldrig pulat med. Vart slänger man in en sådan rad i min kod t ex.?

Vart kan man läsa om Error stuff?

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

## #6 — T_Codez, 2002-09-13T12:29Z

Jädrans va svar det blev under tiden jag skrev :e

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

## #7 — Jesper T, 2002-09-13T12:32Z

Du skall nog "lyda" @nders råd.

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

## #8 — @nders, 2002-09-13T12:36Z

Om man skall använda sig av on error resume next, jag gör det själv i undantagsfall, så ska man se till att plocka upp felen också.

```
on error resume next

' kod som eventuellt, av någon anledning, kan skapa fel

' koll om det har blivit fel
If Err.number <> 0  then
    Response.write Err.Number & " - " & Err.Description
    Err.Clear ' nollställer error-objektet för användning senare i kod
End if

' stänger av felhanteringsspecialaren
on error goto 0
```

Det som är bra med *on error resume next* är alltså att man kan fånga upp fel, och utföra saker och ting, exempelvis skicka ett mail till webmaster, göra insert i en feltabell, eller vad man nu vill göra.

Mvh,

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

## #9 — T_Codez, 2002-09-13T12:41Z

"Tjatta aldrig med @nders Styler's" De vet man ju...   ;) 

Men om jag nu använder mig av

if ubound(arrRows) \> 0 then
     JiHo JAAAAA
else
      Jiho Not 
end if

Så är ju det underförutsättning att filen är tom. Och det kan ju vara okay om de är det ibland.

Men för mig kommer de inte vara det... Det är bara att värdena inte finns att hitta i db. Eller är jag helt ute och trampar trehjuling nu? Och inte kunnat baka in koden riktigt bara...  :q 

sen är ju det så att i textfilen kan det variera mellan 1 till 5 rader...

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

## #10 — @nders, 2002-09-13T12:43Z

Jag vet inte om det är du eller jag som är ute och simmar på galen cykel, men kan borde det inte gå bra att kontrollera innan du ställer sql-frågan så rakna inte är större än ubound?

```
if not rakna>ubound(arrRakna) then
    ' jippihoo! ställ sql-frågan!
else
    ' näppeligen! :'(
end if
```

Mvh,

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

## #11 — T_Codez, 2002-09-13T13:11Z

Nope

Samma mess:

Error Type:
Microsoft VBScript runtime (0x800A0009)
Subscript out of range: '1'
/se/tock.asp, line 126

Do until rs.BOF = False

	Dim text, textfil3, arrRows

	Set fso = CreateObject("Scripting.FileSystemObject")
	Set textfil3 = fso.OpenTextFile(server.mappath("./") & "\\grannar.txt",1, False)
	text = textfil3.ReadAll
	arrRows = split(text, vbCrLf)	
	textfil3.close

	rs.close 'stänger recset så att en ny fresh kan jobba nedan
	db.close 'stänger db så att en ny fresh kan jobba nedan

	rakna = rakna + 1 'deklareras och tilldelas värdet tidigare i koden

	if not rakna \> ubound(arrRows) then

   SQL = "SELECT \* FROM tblartiklarlager WHERE fltcountrycode = '" & arrRows(rakna) &"'"
  
   Set db = Server.CreateObject("ADODB.Connection")
   db.Open "int_hardoxDSN"
   Set rs = db.Execute (SQL)

	else
	Response.Write "No NO" 
	end if

	If rs.bof = False Then
		testa = 1
	End If
Loop

Säkert någe smått som jag missat...

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

## #12 — @nders, 2002-09-13T13:23Z

Hmm.

Varför loopar du mot BOF och inte EOF?
Varför öppnar du textfilen inne i loopen? Du öppnar ju bara samma fil om och om igen.
Du behöver inte heller använda mer än ett databasobjekt.

Jag förstår inte din kod riktigt, men vore det inte en idé att istället utföra någonting en gång per rad i textfilen?

```
for i = 0 to ubound(arrRows)
    ' bla
Next
```

Och du, använd \[ kod\]-taggar så blir din kod mer lättläst.

Mvh,

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/53131-textfiler-subscript-out-of-range-what-to-do
