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.
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.
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.