webForumDet fria alternativet

Ifsats och en tom array

3 svar · 231 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 441 inlägg
#1

Tjena
Plockar ut data från en databas med getRows och sparar detta i en array.
Får dock ett felmeddelande när array'en är tom, även fast jag försöker undvika detta med

If isArray()...

Såhär har jag gjort:

<%
	sSql	=	"SELECT iId, pId, iItem, iCost " &_
			"FROM tbl_item " &_
			"WHERE pId = " & pId & " " &_
			"ORDER BY initDate ASC"

	Set oConn = Server.CreateObject("ADODB.Connection")
	oConn.Open dbConn
	Set rs = oConn.Execute(sSql)
	If Not rs.EOF Then myArr = rs.GetRows()
	rs.Close
	Set rs = Nothing
		If isArray(myArr) Then
			i = 0
			For i = 0 To UBound(myArr, 2)
				iId		= myArr(0, i)
				pId		= myArr(1, i)
				[b]iItem	= myArr(2, i)[/b]
				iCost	= myArr(3, i)

				Response.Write(	"<tr>" & VbCrLf &_
						"<td class=""longTxt"">" & iItem & "</td>" & VbCrLf &_
						"<td class=""shortTxt"">" & iCost & "</td>" & VbCrLf &_
						"<td class=""shortTxt""></td>" & VbCrLf &_
						"<td class=""shortTxt"">Påbörja</td>" & VbCrLf &_
						"</tr>" & VbCrLf)
			Next
		Else
			' Inget finns god damn it...
		End If
	closeDB()
%>

På den felstilta raden får jag ett felmess (inkompatibla typer) när inga träffar finns, alltså när villkoren i frågan inte uppfylls.
Bör inte Else-satsen uppfyllas när det inte finns något i databasen? Om något hittas, funkar det klockrent, annars inte.

Vad kan vara fel?
Tack!

J.N.Medlem sedan apr. 20031 660 inlägg
#2

HEJ!

Ingen direkt lösning på felet, men ta bort if-satsen If isArray(myArr) Then och låt If Not rs.EOF Then myArr = rs.GetRows() vara den if-sats som avgör om du ska köra genom din kod.

En GetRows-array är ju ingen riktigt riktig array, jag vet inte om det beror på det? När jag använt GetRows har det i alla fall fungerat med IsArray, vad jag kan minnas.

1066 inlägg, slaget vid Hastings!

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

Tjena!
Tack för svaret, men är lite kluven iaf.
Har använt Palle's pagingscript som finns under filerna och där används både If not rs.EOF samt If isArray() så jag gjorde likadant. Skillnaden är att när det inte finns något i Db'n så körs inte det som ligger under isArray, utan elsesatsen tar vid.

Kan det ha med att göra att det är MySQL den här gången? Har nämligen bara kört liknande kod mot Access vid tidigare tillfällen.

Fler idéer?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#4

Nu provade jag lite saker och löste problemet.
Bytte ut:

If Not rs.EOF Then myArr = rs.GetRows()

till

If Not rs.EOF Then myArr = rs.GetRows() Else myArr = "" End If

Det gör ju att Elsesatsen körs när

 If isArray(myArr)

och då fungerar det.

Tack för tipsen!

130 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)