webForumDet fria alternativet

räkna upp värde och behålla de inledande nollorna

ASP

7 svar · 429 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!

Jag hämtar ett värde från en databas. sNextTaskNr. Värdet är en sträng och kan se ut: "002" Värdet är lagrat som text i databasen. (går inte att ändra)

Hur gör jag för att lägga till 1 så värdet blir "003" och behålla nollorna framför 3.

det samma skall gälla om värdet är "011" tex. dvs behålla nollan framför talet

Mvh
henrik

Medlem sedan juni 200032 967 inlägg
#2

Om längden på strängen skall vara 3:

strVal = right("000" & clng(strFoo)+1, 3)
Medlem sedan jan. 20013 582 inlägg
#3

great!

Testar!

Mvh
Henrik

Medlem sedan juni 200032 967 inlägg
#4

Det här resulterar såklart i att saker och ting går åt pipan när talen blir för stora.
Borde gå enkelt att lösa genom att kontrollera om första siffran i strängen är en nolla, då körs koden, annars är det ju bara att använda clng() och lägga till 1.

Eller ska det alltid vara minst en nolla först? Ska "talen" alltid vara tre siffror? Vad händer då efter 999?

Medlem sedan jan. 20013 582 inlägg
#5

Hej!

Vårt system bygger på ett prefix tex "HL2005" och ett löpnummer "001" vilket då blir HL2005001 som första uppdragsnumret för montören HL under år 2005.
Att en montör skulle göra över 999 uppdrag på ett år är osannolikt.

Har testat lite och får Syntaxfel i Updateuttryck... :(

SQL-satsen ser ut så här:

sSQL = "UPDATE tblSettings SET Value = '" & sNextTaskNr & "' WHERE Key = 'NextTaskNr'"

skriver jag ut sql-satsen ger detta:

UPDATE tblSettings SET Value = '003' WHERE Key = 'NextTaskNr'

både value och key i databasen är text

sNextTaskNr ser ut så här:

sNextTaskNr = right("000" & clng(Request.Cookies("Task")("nextTaskNr"))+1, 3)

Mvh
henrik

Medlem sedan maj 200591 inlägg
#6

Som vanligt när det gäller tal så är det förstås bäst att lagra dem som just tal. Hur det ska formatteras när man tittar på det löser man vid just visningen. Att plocka ut delsträngar, addera, och sedan slå ihop strängarna igen ger mest rörig kod och i längden är det inte nån hållbar lösning. I ditt fall tycker jag det låter vettigast att dela upp det hela i tre fält: montör, år och löpnummer.

Medlem sedan jan. 20013 582 inlägg
#7

Som vanligt när det gäller tal så är det förstås bäst att lagra dem som just tal. Hur det ska formatteras när man tittar på det löser man vid just visningen. Att plocka ut delsträngar, addera, och sedan slå ihop strängarna igen ger mest rörig kod och i längden är det inte nån hållbar lösning. I ditt fall tycker jag det låter vettigast att dela upp det hela i tre fält: montör, år och löpnummer.

Det finns saker att göra åt dbstrukturen, jag vet.... problemet är att jag inte kan göra något åt den.. Det jag har, har jag sas...

Mvh
Henrik

Medlem sedan jan. 20013 582 inlägg
#8

:)
Syntaxfelen berodde på reserverade fält i databastabellen..

Funkar fint nu... Tack @nders!

Mvh
Henrik

268 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)