Avatar billede SilenceWar Nybegynder
29. marts 2011 - 00:25 Der er 11 kommentarer og
1 løsning

Fejl nogle gange

Hejsa...

Jeg har nogle grundlæggende spørgsmål med hensyn til ASP.
Jeg spørger eftersom mit site har en kode af 3400 linier + design og anden valideringskode (i alt ret mange linier)..

Til dette benytter jeg mig af denne connection-string i min MySQL database:

<%
TheConn = "Driver={MySQL ODBC 3.51 Driver};server=mydb20.surftown.dk;Database=******;uid=*****;pwd=*******;"
set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open TheConn
%>


I løbet af, at siden bliver loadet mødes der dog fejl - problemet er bare at dette ikke er konstant, men kun nogle gange.. Sådan ca. 1 gang i timen pr. bruger faktisk....

Derudover får jeg følgende fejlkoder:

ADODB.Recordset error 800a0cc1

Item cannot be found in the collection corresponding to the requested name or ordinal.

/v1/Game/Building/Worktasks/CheckComplete.asp, line 1112

&

ADODB.Recordset error 800a0cc1

Item cannot be found in the collection corresponding to the requested name or ordinal.

/v1/Game/Building/Worktasks/CheckComplete.asp, line 42

-------------

Linie 1112:
RaastoflagerValues = TheCity("raastoflager")

Linie 42:
VaabensmedValue2 = by("vaabensmed")

-------------

Det er altså oftest sådanne linier der bliver meldt fejl på..

by og TheCity består af koderne:

set by = Conn.execute("SELECT * FROM byinfo")
if by.eof or by.bof then
else
DO WHILE NOT by.eof or by.bof

by.movenext
loop
end if


(TheCity er ligeså) :)


Jeg har prøvet at omskrive koden så meget som muligt, og har selv følgende teorier:

Kan siden evt. melde fejl ved den ene bruger, hvis en anden bruger opdaterer noget i databasen?

Er koden for lang?

Kan det have noget at gøre med, at der er for mange SELECT strings på sitet, som crasher engang imellem ved "overarbejde"??


Jeg har som sagt prøvet en del og omskrevet en del.
Er ret lost, da jeg endnu ikke har kunnet neutralisere fejlen.

Håber på noget hjælp herfra :)

På forhånd tak for ethvert forslag! - Udlover 200 point

Med Venlig Hilsen
SilenceWar
Avatar billede claes57 Ekspert
29. marts 2011 - 09:09 #1
det er muligvis hvis feltet er tomt - så prøv at tage højde for det med fx

RaastoflagerValues=0
if not isnull(TheCity("raastoflager")) then RaastoflagerValues = TheCity("raastoflager")

så er den 0, hvis den er tom, og ellers får den databasens værdi.
Avatar billede SilenceWar Nybegynder
29. marts 2011 - 13:26 #2
Tak. Jeg prøver at udskifte mine koder med dit forslag :)

Jeg vil dog lige vente én dag eller maks 2 før jeg giver point.
Vil lige vide om det har hjulpet :)
Avatar billede SilenceWar Nybegynder
29. marts 2011 - 14:15 #3
Hm.. Det tog så ikke så lang tid alligevel, desværre.. :s

Jeg modtager stadig fejlen..
Hm...

Kan det have noget at gøre med, hvis jeg laver en:

RaastoflagerPointValue = 0
if not isnull(TheCity("raastoflager")) then RaastoflagerPointValue = TheCity("raastoflager")

SplitRaastoflager = split(point("raastoflager"), ",")

pointraastoflager = SplitRaastoflager(RaastoflagerPointValue)


Altså, laver en split fra en databaseværdi ved hvert Komma - og derefter vælger jeg værdien i databasen ved hjælp af den øverste værdi..?
Kan det udrette en fejl?.
Avatar billede claes57 Ekspert
29. marts 2011 - 15:43 #4
jeg gik bare ud fra, at
TheCity("raastoflager")
var et tal
Hvad er der i feltet er det fx 0,4,5,7, så kan du


RaastoflagerPointValue = 0
pointraastoflager = 0
if not isnull(TheCity("raastoflager")) then
  RaastoflagerPointValue = TheCity("raastoflager")
  SplitRaastoflager = split(point("raastoflager"), ",")
  pointraastoflager = SplitRaastoflager(RaastoflagerPointValue)
end if
Avatar billede SilenceWar Nybegynder
29. marts 2011 - 16:03 #5
point("raastoflager") indeholder noget i stil med:

0,4,5,7,...... osv..

TheCity("raastoflager") indeholder lige nøjagtigt et tal.

Dette tal kan fx være 1 - og det er så meningen at:

pointraastoflager = SplitRaastoflager(RaastoflagerPointValue)

skal hente værdien 4 (i dette tilfælde) - og derved har jeg fundet værdien som mit browserspils bruger skal have for den bygning i det level..

Ved ikke om du forstår det lidt bedre nu?
Avatar billede claes57 Ekspert
29. marts 2011 - 16:10 #6
så burde #4 virke
Avatar billede SilenceWar Nybegynder
29. marts 2011 - 16:21 #7
Jeg indsætter og opdatere senere.. :)
Avatar billede SilenceWar Nybegynder
30. marts 2011 - 08:38 #8
Så stødte jeg på fejlen igen:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/v1/Game/Building/Worktasks/CheckComplete.asp, line 1022


Linie 1022:

if not isnull(TheCity("raastoflager")) then



Desuden giver det ret mange fejl efterhånden :s


Hm, kan det ikke være noget andet der gør sig gældende?
En ustabil SQL-connection?
For lang en kode?

Et eller andet, der ikke nødvendigvis er kodens skyld..?

Vil bare lige så mange muligheder igennem.. ;)
Avatar billede claes57 Ekspert
30. marts 2011 - 10:52 #9
det kunne så måske være noget timeout undervejs, så maskinen ikke når at hente data, eller taber data pga for meget i brug på en gang.

Jeg ved ikke, om man kan stress-teste opsætningen og databasen.
Avatar billede SilenceWar Nybegynder
31. marts 2011 - 21:18 #10
Jeg ved heller ikke 100% hvad der er galt..

Jeg har rykket lidt sammen for, at formindske min kode. Bl.a. hvor jeg har gjort så den ikke henter alt for meget unødvendigt fra databasen.

Du kan bare smide et svar her. Jeg har et andet spørgsmål - men må hellere lade vær med at blande tingene for meget sammen, så opretter et nyt ;)
Avatar billede claes57 Ekspert
01. april 2011 - 10:27 #11
bare luk - vi fandt jo ikke en løsning
Avatar billede SilenceWar Nybegynder
01. juni 2011 - 02:28 #12
luk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester