Vet inte var jag ska börja men förklarar scriptet lite snabbt.
Vill inte posta koden här då den är på nästan 600 rader :r
I alla fall så fyller användaren i ett formulär med olika värden på sida1.
Sida2 använder informationen där jag kontrollerar den mot info i en tabell (RaceStats) . Här sker en del uträkningar och med den infon så körs en hel hög med If Elseif satsatser som kollar mot Summan som jag fick i uträkningen.
När summan överrenstämmer med uträkningen så skall 2 tal (som ligger i fält) slumpas fram från tabellen (RaceStats).
Alltihop postas sedan in i tabellen Practice med info om användaren och lite annat.
Använder sen Meta Refresh för att komma tillbaka till Sida1.
I alla fall koden ska skapa 1 slumpad tid men ibland skapar den 2 tider och de är helt olika.
Jag kör inga loopar i koden heller så jag är helt ställd här.
Använder en cache rensare också.
Har försökt att luska ut och har ändrat i koden många gånger för att få bukt på det här.
Några vanliga fel som Ni vet om som gör att en kod skapar dubbla poster??
Jag kan ju länka till filen (som textfil) om någon känner för att kolla på filen åt mig.
Får man fråga varför du har en och samma funktion med i tvåtusen if-satser? Lägg funktionen på ett ställe, och kalla bara på funktionen från if-satserna.
Edit: i den koden är det jättemycket som är roligt att bråka om. Jag återkommer. :D
Se till att indentera din ASP-kod, så den blir lättare att följa.
Istället för att använda 40 olika variabler att lagra tider i, använd en array med 40 platser. (Jag gillar inte heller att du har 40 fält för tider i din tabell, men det kan vi lämna så länge.)
I slutet av koden, i dina sista hemska if-satser, använder du timevariabler du inte skapat (Time41-50). Dessutom med samma villkor i if-satserna, så du gör tio if-satser ogiltiga.
Du skapar en del recordsetobjekt tidigt i koden, men stänger de inte förrän sist på sidan. Det är lika bra att du stänger objekten så fort du är färdig med dem.
I din kod står "meta refresh här". Ha gärna med refresh-koden i kod du visar, så man får en helhet.
Du har en del variabler som du prefixat med str. Det är bra att använda ungersk notation, men det är snudd på spöstraff att prefixa heltalsvariabler som om de vore strängar. int eller helt enkelt bara i hade varit bättre prefix på heltalsvariablerna strS, strH, strI och strW.
Om du förenklar koden med if-satserna enl. mitt förra inlägg, och bygger array istället för mängder av time-variabler kan du få ner kodmassan väsentligt.
Jag har klippt bort drygt 220 rader kod som är onödig....
Det är just det här som sållar amatörerna från proffsen *harkel* :r ;)
Jag visste att det fanns en hel del att "Bråka" :e om i min kod.
Har inte själv varit nöjd med den men tja den har funkat, nästan.
1. fixar till det.
2. Vad jag är ute efter är att slumpa tider mellan 2 fält med hjälp av if-satserna. Det ska igentligen vara 80fält den ska kunna slumpa från. Tja jag har försökt med Arrayer men är ingen vidare på att få till det så jag löste det med if-satserna.
3. Det är 30 poster i tabellen RaceStats med 80tid fält (datatyp text) och en del annan info.
4. fixar till det :)
5. Hade med dem men den körde koden även i *.txt
Det är en refresh på 0s till sidan practice.asp.
6. *hum* hänger inte riktigt med där. Jag har kört ut värdena som str för att kunna använda de i flera uträkningar.
Men jag knåpar lite själv nu så jag lär mig av det.
Så återkommer jag när jag har något nytt att visa
:)
3. Det är 30 poster i tabellen RaceStats med 80tid fält (datatyp text) och en del annan info.
Urk! :)
Du borde ha en tabell för tiderna, med en tid per post. Om man måste förändra en tabelldefinition för att kunna lagra ett till värde, då är man ute på tunt vatten.
6. *hum* hänger inte riktigt med där. Jag har kört ut värdena som str för att kunna använda de i flera uträkningar.
Det är inget fel på användandet, bara namngivningen. Dina variabler innehåller heltal, då tycker jag att det är jättefel att påstå att de innehåller strängar genom att prefixa variabelnamnen med str. Sen förstår jag inte heller vad du menar med detta:
Jag har kört ut värdena som str för att kunna använda de i flera uträkningar
Det är ju just när man ska räkna med värden som det inte ska vara strängar?
3. De 30 posterna i RaceStats kommer aldrig att ändras utan de är fasta. Jag ska bara hämta data från tabellen. Time1 - Time80 ska innehålla tider (vilket är tal 123456) med +333 skillnad och det varierar beroende på vilken av de 30 posterna det är.
6. tja jag tar ju + - * på värdena och jag hade problem att få till dem med rs("fält") + - * rs("fält") så då gjorde jag helt enkelt så som jag gjorde för att få det att fungera.
Ska jobba vidare här lite nu ;)
Finns det någon speciell anledning till att du använder meta refresh istället för response.redirect i ASP?
Nej det finns ingen anledning.. Efter att koden har körts vill jag bara tillbaks till sidan med formuläret.
Jag förstår inte vad du pratar om ang. 6:an. Jag är endast kritisk till din namngivning av variablerna strS, strH, strI och strW. Eftersom det inte är strängar som lagras i variablerna, utan tal, känns det mycket mer logiskt att kalla variablerna för intS, intH, intI och intW för att markera att de innehåller heltal (integers).
Du har annars använt typkonverteringsfunktionerna alldeles riktigt för att du ska kunna räkna med fältvärdena, så jag antar att du helt enkelt inte förstår vad jag menar. :)
Nej det finns ingen anledning.. Efter att koden har körts vill jag bara tillbaks till sidan med formuläret.
Ok. Då rekommenderar jag att du gör en response.redirect istället.
Så nu har jag gjort en hel del ändringar som du föreslog @nders och koden är betydligt mindre :) Härligt.
Och för första gången förstod jag mig på det här med Array och nyttan med det..
Och nu är det lättare att se vilka variabler som är text eller tal :r
Tror att det är de 40 If satserna och att man kan använda sig av just array för att få till det.
Har börjat med
dim arrTime(40)
dim arrManSum(40)
for i = 1 to 40
for j = 3750 to 0 step -50
arrTime(i) = Clng(rsCal("Time" & i))
arrManSum = (j)
If intManSum >= arrManSum Then
Tid = GetRndNr(arrtime
next
next
End If
Men jag vet inte hur jag ska göra med arrTime(1) osv..
Det ska ju vara mellan 2 arrTime som tiden ska slumpas fram.
Tid = GetRndNr(arrTime(1),arrTime(2))
Du kan väl säga om jag är rätt på det är helt ute och cyklar @nders :e
Det är klart att du istället för alla ifsatser kan lägga det in i en loop, men jag är i min sjukdom lite osäker på om du är inne på helt rätt spår, men helt fel kan det ju i alla fall inte vara. :)
Det finns en mellanväg, lite enklare, som jag tänkte på i första hand. Alla dina if-satser går att förkorta till en rad per styck. Exempel:
If detena = detandra then
gör något
end if
kan ersättas med:
If detena = detandra then gör något
If-satserna sätter du alltså för sig själva, och droppar alla elseif.
mvh
278 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e