Hej! Nu fungerar det. Men en sak är ett problem. Första värdet i listboxen är "Välj nummer här" När detta är valt vill jag ju inte uppdatera databasen. Hur gör jag detta. Användaren har alltså rätt att INTE välja nåt nummer. Du kan ju ge den posten värdet 0 och sen i IF satsen kolla om den också är 0. Cougarina, din kod är sårbar för SQL inject. Då du kör koden så länge den innehåller ett värde. Om det är et tal bör du istället kontrollera att det verkligen är ett tal. Uppdatera databas
Detta är förmodligen enkelt men...
Jag hämtar värden till en listbox i ett formulär ur en databas. Tabellen innehåller 3 kolumner. ID, nummer, used.
Jag skickar formulärinnehållet med CDONT. Samtidigt vill jag uppdatera tabellen så att posten som innehåller det i listboxen valda numret ges siffran i i kolumnen used. Den har default 0. Kolumnen är av datatypen Yes/No
Någon som förstår detta röriga inlägg?
Tack på förhandSv: Uppdatera databas
Hej
Vet inte riktigt om jag fattar, men jag försöker.
Du kan ju göra en update innan du postar ditt formulär, t ex:
dittNummer = Request.form("nummer") ' <= döp om till rätt namn
' lite felkontroll, ifall att dittNummer skulle vara tomt.
IF dittNummer ="" THEN
Response.write "Inget nummer angavs!!"
ELSE
strSQL = "UPDATE dinTabell " ' Döp om till rätt tabellnamn
strSQL= strSQL & " SET nummer = " & dittNummer
strSQL= strSQL & " , used = true "
strSQL= strSQL & " WHERE ID =" & dittID
' Om det strular ta bort och sätt det framför Connection.Execute
' så skrivs din SQL sats ut och du ser vilka värden som du får med
' Response.write "SQL = " & strSQL
Connection.Execute (StrSQL)
END IF
OBS!! Döp om Connection till vad din koppling heter, sen har jag förutsatt att nummer är tal i databasen och att used ska sättas till true.
//Anna-Karin
Sv: Uppdatera databas
Tackar igenSv: Uppdatera databas
IF dittNummer ="" OR dittNummer ="0" THEN
' oopps, feeel.
ELSE
' kör din SQL sats
END IF
//Anna-Karin
Sv: Uppdatera databas
Eftersom toma värden i ASP är av typen Variant: Empty(Gäller t.ex. Response.Form, Response.QueryString) kommer dessa att att vara 0 när den jämföras som tal och tom sträng när den jämförs med strängar.
Jag väljer därför att konvertera dem till strängar. Passar på att göra detta genom Trim(). Då "vita tecken" saknar betydelse före och efter ett tal.
Om sidan bara behöver tillgång till databasen bör man först öppna anslutningen då värdet är kontrollerat. Om man läser från databasen på fler ställe. Kan öppna och stänga anslutningen utanför ifs-atsen. Detta för att minimera resurerna en sida kräver. Om sidan inte skall göra någon uppdatering behöves ingen dataanslutning upprätas - Resursslöseri.
<code>
Dim lngNummer
Dim Connection
lngNummer = Trim(Request.form("nummer"))
' lite felkontroll
If IsNumeric(lngNummer) Then
Response.write "Inget nummer angavs!!"
Else
lngNummer = CLng(lngNummer)
strSQL = "UPDATE dinTabell SET nummer = " & lngNummer & " , used = true" & vbCrLf & _
"WHERE ID =" & dittID
' Om det strular ta bort och sätt det framför Connection.Execute
' så skrivs din SQL sats ut och du ser vilka värden som du får med
' Response.write "SQL = " & strSQL
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open ">>>Din anslutningssträng<<<"
Connection.Execute strSQL
Connection.Close
Set Connection = Nothing
End If
</code>
Jag hoppas detta inlägg tolkas som kreativ kritik. Vilket är mina avsikt när jag skrivit det. ;o)