webForumDet fria alternativet

Samma kod för två saker

ASP

11 svar · 322 visningar · startad av Eclipse

Medlem sedan juli 20003 825 inlägg
Frågan#1

True = -1
False = 0

Om jag har en checkbox vill jag byta värdet på den...

UPDATE tabell SET checkbox = checkbox *-1

Ja... det fungerar inte med *-1.

Vad jag vill åstakomma är alltså med samma kod byta värdet på variabeln.

Medlem sedan juni 200032 967 inlägg
#2

Gissar:

UPDATE tabell SET checkbox = Iif(checkbox = -1, 0, -1)

Du borde nog kunna använda True resp. False direkt i SQL-frågan om du är sugen på det.

Mvh,

Medlem sedan juli 20003 825 inlägg
#3

Givetvis kan jag använda true eller false i frågan!

Poängen är att komma i från det! Det finns ju bara två värden och vet man det ena så ska det bli det andra!

Med det resonemanget skulle man kunna använda samma kod i båda fallen och optimera bort några rader kod!

Medlem sedan juni 200032 967 inlägg
#4

Ja, men det jag menar är att vilken som helst av följande frågor bör göra det du frågar efter:

UPDATE tabell SET checkbox = Iif(checkbox = -1, 0, -1)
UPDATE tabell SET checkbox = Iif(checkbox = false, true, false)

Mvh,

Medlem sedan juli 20003 825 inlägg
#5

Ah!

Dumt inlägg av mig, sorry!

Exempel #2 är lite snyggare fakktiskt. Där framgår lite tydligare vad som avsers.

***
request("intID")

Vad är det för kod att få ut intID? Alltså namnet, inte det skickade värdet!

Exempel:
request("bolConfirm")

UPDATE news WHERE bolConfirm = " & request("bolConfirm")

Are you with!?

Medlem sedan juni 200032 967 inlägg
#6

Njaee... jag är inte riktigt med på vad du menar, så jag slänger fram en kontrollfråga.

Menar du att du har ett formulär där du inte vet vilka checkboxar som finns?

mvh

Medlem sedan juli 20003 825 inlägg
#7

Jag menar att ta reda på vad det står i URL:en på båda sidor om "=" -tecknet.

index.asp?Xxxxxx=123

Medlem sedan juni 200032 967 inlägg
#8

ok

strQS = Request.Querystring
varQS = split(strQS, "=")
if not ubound(varQS) = -1 then
    strFieldName = varQS(0)
    strFieldValue = varQS(1)
end if

mvh

Medlem sedan juli 20003 825 inlägg
#9

Stabilt...!!

Vi går vidare:

SELECT n.intID, n.bolView From News n;

// gör till myRow till array med mySQL.GetRows()

// gör loop med FOR j = UBound...

response.write myRow(1,j)

Detta skriver ut värdet på bolView, TRUE eller FALSE.

Frågan:
Kan jag med Access få ut namnet av myRow(1,j)???

Detta går med SQL Server, det vet jag.

response.write theNameOf(myRow(1,j))

... och det står bolView där!

Medlem sedan juli 20003 825 inlägg
#10

En annan luring...
confirm.asp?bolView=3&page=2

I detta läget blir:
strFieldName = bolView
strFieldValue = 3&page

Hur gör jag den snyggaste lösningen här? Köra en split till eller finns det andra alternativ?

Medlem sedan juni 200032 967 inlägg
#11

Problem 1: Jag brukar, direkt efter getRows, öka på storleken på arrayen med 1. I denna nya "rad", lägger jag fältnamnen, och kommer sedan åt de med myArray(x, ubound(myArray,2)). Jag har demonstrerat den lösning här på wF vid ett tidigare tillfälle, men har inte möjlighet att söka upp den tråden just nu.

Problem 2: Istället för att använda arrayen för att plocka ur värdet kan du ju alltid plocka direkt från QS. strFieldValue = Request.Querystring(strFieldName). Du kan också loopa igenom Querystring collection om det är fler fält där som du vill komma åt på samma sätt.

Mvh

Medlem sedan juli 20003 825 inlägg
#12

1. Det var ett bra svar men inte relevant i denna tråden! :-) Relevant i denna tråden!

2. Jag löste det på detta viset:

' ## TRUE/FALSE
FUNCTION funcTrueFalse(myVar)
    DIM strQS, varQS
    DIM strFieldName, strFieldValue

    ' ## COLLECT VALUES
    strQS = Request.Querystring
    varQS = split(strQS, "=")
  if not ubound(varQS) = -1 then
    strFieldName = varQS(0)
    strQS = varQS(1)
    varQS = split(strQS, "&")
  strFieldValue = varQS(0)
  END IF
 
 ' ## UPDATE
  SQL = "UPDATE [" & myTable & "] SET " & strFieldName & " = Iif(" & strFieldName &" = FALSE, TRUE, FALSE) WHERE intID = " & strFieldValue & ";"
  Conn.Execute(SQL)
END FUNCTION

Ine världens snyggaste med det fungerar.

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