webForumDet fria alternativet

Räknare

ASP

7 svar · 510 visningar · startad av SoulGod

Medlem sedan aug. 20051 200 inlägg
Frågan#1

Håller på att spara in den del info i en databas, och vill ha följande funktion.

Jag vill att en "räknare" skall tilldela varje rad i databasen, ett visst numer,
baserat på fältet "pos".
Om:
"pos" = chef , så skall det börja på 81xx
"pos" = dag , så skall det börja på 85xx
"pos" = kvall , så skall det börja på 89xx

Alltså t.ex 8101 , 8501 & 8901 o.s.v.

Hur gör jag detta?

Medlem sedan jan. 20022 440 inlägg
#2
dim intPos
If pos = "chef" Then
	intPos = 8101
ElseIf pos = "dag" Then
	intPos = 8501
Else
    intPos = 8901
End If

Detta får du ju lägga in i loopen som skriver till databasen och modifiera som du vill. Inte snyggaste lösningen kanske men den fungerar :)

Medlem sedan aug. 20051 200 inlägg
#3

Ehm, nu är jag lite väck här ..
loop ?
Menar du i :

                  <%
if Request.QueryString("do") = "fixa" THEN
	namn = Request("namn")
	pos = Request("pos")
	fodd = Request("fodd")
	bor = Request("bor")
	mail = Request("mail")
	press = Request("press")

			Connect.Execute("INSERT INTO anstallda (namn,pos,fodd,bor,mail,press) VALUES('"& namn &"','"& pos &"','"& fodd &"','"& bor &"','"& mail &"','"& press &"')")

'	Next
	Connect.Close 
	Set Connect = Nothing
%>

För jag har ingen loop i det dokumentet.

Medlem sedan nov. 20017 144 inlägg
#4

Tror att CatZ menar om du vill uppdatera en redan befintlig tabell med de värdena.

Function [red]getInt[/red](value)
Dim intPos
    Select Case value
        Case "chef" : intPos = 81
        Case "dag" : intPos = 85
        Case "kvall" : intPos = 89
    End Select
    getInt = intPos
End Function

INSERT...VALUES('"& namn &"',"& [red]getInt[/red](pos) &"...

Men vad skall du ha där xx står?

Medlem sedan aug. 20051 200 inlägg
#5

Ah... jag vet inte, alltså, jag vill att detta id skall fixas "samtidigt" som jag lägger in infon första gången i databasen så att säga..

xx skall alltså vara (81xx) , skall bli 8101 , och nästa blir 8102 o.s.v.

Medlem sedan apr. 20031 660 inlägg
#6

HEJ!

För att få rätt slutsiffra, hämta ur databasen vilken som är högst av 81xx/85xx/89xx. Lägg därefter till ett.
(...MAX id WHERE id>8200)

Vad händer när du kommer till 8199? Eller "det ska inte hända"?

Medlem sedan aug. 20051 200 inlägg
#7

Det kommer aldrig hända, eftersom vi ej har så många anställda.
Men hur gör jag nu, för att ens "skapa" idét från början då?

Medlem sedan apr. 20031 660 inlägg
#8

HEJ!

Med fortsättning på Jesper T:s kod, och hoppas det var det du undrade om:

Function getInt(value)
    Select Case value
    Case "chef"
        'intPos = 81 denna lär väl inte behövas längre?
        str_sqldel = " id<8200"
        ...
    End Select
    getInt = intPos
End Function

pos = getInt(request("pos"))

Set RSmax = Connect.Execute("SELECT MAX id FROM tbl WHERE" & str_sqldel)
str_maxid = RSmax("id") + 1

Connect.Execute("INSERT INTO anstallda (namn,pos...) VALUES('"& namn &"',"& str_maxid &"...)")
269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)