webForumDet fria alternativet

Sök databasfält och öka med ett ?

ASP

8 svar · 307 visningar · startad av Pellefant

Medlem sedan maj 20023 372 inlägg
Frågan#1

blev fel på frågan...återkommer

Medlem sedan maj 20023 372 inlägg
#2

Hej!

Hur tar man ut det högsta värdet som finns i "item_sku" och gör att det recordset som läggs in nu har item_sku+1(ett nummer högre alltså) (vill inte använda autonumber)

<%Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("videostore_2000.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM video_item" 

RecSet.Open SQL, Databas, adOpenStatic, adLockOptimistic 

RecSet.AddNew

RecSet("item_sku") = här ska det in...

RecSet("code") = request.form("code") + LCase(request.form("format")) 

RecSet("condition") = "good"

RecSet("rentable_flag") = "1"

RecSet.Update

RecSet.Close
Databas.Close
%>

Datatypen är "text" för item_sku, trots att det bara är siffror där. (Inte jag som designat db:n..., ska dock sen ge lite förslag till den som gjort det sedan)

Tack på förhand.

Medlem sedan apr. 2001425 inlägg
#3

SQL = "SELECT top 1 item_sku From video_item Order by item_sku Desc"

Vet inte db:n sorterar siffrorna rätt när det är "text" ?

Ändra från typen "text" till "tal" istället...

Medlem sedan maj 20023 372 inlägg
#4

Tjena, funkade jättebra. Även fast det inte gick att ändra från "text" då den hade kopplingar till andra tabeller existerande.

Lösning för den som är intresserad:

<%
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db.mdb")

Set RecSet2 = Server.CreateObject("ADODB.Recordset")
SQL2 = "SELECT top 1 item_sku From video_item Order by item_sku Desc" 
RecSet2.Open SQL2, Databas, adOpenStatic, adLockOptimistic 

Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM video_item" 
RecSet.Open SQL, Databas, adOpenStatic, adLockOptimistic 

RecSet.AddNew

RecSet("item_sku") = RecSet2("item_sku") + 1

RecSet("code") = request.form("code") + LCase(request.form("format")) 
RecSet("condition") = "good"
RecSet("rentable_flag") = "1"
RecSet.Update
Medlem sedan dec. 200012 464 inlägg
#5

Din kod fungerar inte om du har samtidiga besökare.
Varför vill du inte använda autonumber?

Medlem sedan maj 20023 372 inlägg
#6

Aha, du vill att jag ska låsa databasen när en besökare använder den? Det är väl "lock" eller liknande kommando? *gräver i minnet*

Jo, alltså, jag hade jättegärna använt autonumber. Jag håller på att hjälpa en kompis med denna, och designen är redan klar, och när jag försökte ändra till autonumber så gick det inte pga att det fältet(?) redan var kopplat till andra fält. Och är en pk. Men jag samlar på mig synpunkterna och berättar för honom att nästa gång han designar en databas så finns det något som heter autonumber... :)

Medlem sedan dec. 200012 464 inlägg
#7

Jag vill absolut inte att du skall låsa något.

Det går inte att ändra en befintlig kolumn till auto_number men om ni bara är i utvecklingsfasen så borde ni väl kunna definiera om de tabeller som påverkas.

Medlem sedan maj 20023 372 inlägg
#8

Det har du rätt i. Ska ta ett snack med honom.

Hm...hur kan du se att koden inte fungerar om jag har samtidiga besökare. Det är ungefär den kod jag brukar använda, så nu blir jag lite orolig. Utveckla gärna.

Hm...efter fem minuters tänkande.....du kanske menar att om två(eller fler) personer kommer till sidan med koden ovan så får de samma värde på RecSet2("item_sku") + 1
som de försöker lägga till databasen i item_sku, dvs inte så bra då item_sku är unikt. Var det så dina tankegångar också gick?

Medlem sedan dec. 200012 464 inlägg
#9

Jo

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)