webForumDet fria alternativet

Köra funktioner och UPDATE

ASP

46 svar · 1 296 visningar · startad av Sanji · sida 2 av 3

Frågan, av Sanji

Hej! Jag fick idag en uppgift att göra om en sida för att hantera en meny i klassisk asp, så att man kan flytta på menyalternativen upp och ner i listan. Jag började med att lägga till en ny kolumn i databasen som jag namngav till position, där en siffra representerar menyalternativens ordning i listan. Nu återstår koden för att få detta att fungera som jag vill... Så här ser den ut hittills:

Läs frågan i sin helhet →
Medlem sedan juli 2009355 inlägg
#21

jag tänkte testa med recordset istället för den där connection... men skriver straxt!

Medlem sedan juni 20019 519 inlägg
#22

Ett Recordset kräver ju också en connection (om det är mot en databas)

kollade din sub/metod:

sub menuitemdown(pos)
movingItemID = "SELECT ID FROM kategorier WHERE (position =" & str(pos) & ")"
adaptingItemID = "SELECT ID FROM kategorier WHERE (position =" & str(pos+1) & ")"

Connect.Execute "UPDATE kategorier SET position=(pos+1) WHERE (ID =" & int(movingItemID) & ")"
Connect.Execute "UPDATE kategorier SET position=pos WHERE (ID =" & int(adaptingItemID) & ")"
end sub

Du vet att movingItemID och adaptingItemID bara är en sträng och inte något tal på något sätt. så den kommer crashar om du ens försöker köra den

Medlem sedan juli 2009355 inlägg
#23

ändrade den till:

sub menuitemdown(pos)
movingItemID = "SELECT ID FROM kategorier WHERE (position =" & str(pos) & ")"
adaptingItemID = "SELECT ID FROM kategorier WHERE (position =" & str(pos+1) & ")"

RecSet.Open movingItemID, Connect
RecSet2.Open adaptingItemID, Connect

RecSet("position") = (pos+1)
RecSet2("position") = pos
RecSet.Update
RecSet2.Update

RecSet.Close
RecSet2.Close
end sub

borde väl fungera?

Medlem sedan juni 20019 519 inlägg
#24

Om jag har pos som den som är längst ner och trycker så kommer den att crashar, då RecSet2 kommer vara EOF. skulle jag gissa, annars kan det väl fungera. Jag hade gjort tvärtom, kollat om Recset2 INTE är EOF och sen hämtar vad som skall flyttas och göra flytten, först om man vet att det finns en position som är högre då kan man göra flytten.

Medlem sedan juli 2009355 inlägg
#25

smart :) jag tror jag kör på det, inte så kul om det kraschar för sånt där ^^
Men för att kunna få värdet i request.querystring, vilken sida är det jag ska peka länken till? samma sida, eller den som innehåller alla frames?

Medlem sedan juni 20019 519 inlägg
#26

jag gissar på samma sida.... för om det är framen som skall uppdatera så är det det innehållet som kommer visas vid en klick på en länk, om du inte ha satt något target på att den skall rendera om "huvud"-fönstret. skulle jag gissa.

Medlem sedan juli 2009355 inlägg
#27

När jag håller på länken så visas alla värden rätt, men när jag trycker på den så säger den "The page can not be found"

okej, jag ska testa ^^

Medlem sedan juli 2009355 inlägg
#28

Nu verkar det som att det enda problemet som är kvar är att få SELECT-satserna i funktionerna korrekta... hur gör jag för att få denna att läsas korrekt?

"movingItemID = "SELECT * FROM kategorier WHERE (position =" & pos & ")""

hur använder jag "pos" så att det fungerar?

Medlem sedan juni 20019 519 inlägg
#29

pos kommer ifrån din metod, du sätter den där anropet körs.

Medlem sedan juli 2009355 inlägg
#30

ja den får värde och allting, men jag menar i funktionen, i sql-satsen... är det bara att göra som jag redan gör? för jag får fram ett unspecified error som jag nästan är helt säker på att det kommer på grund av slq-satsen...

Felet kommer nämligen på raden där jag kör RecSet.Open

Medlem sedan juni 20019 519 inlägg
#31

Hur ser din metod ut nu?

Medlem sedan juli 2009355 inlägg
#32

Här har vi den:

sub menuitemup(pos)
movingItemID = "SELECT * FROM kategorier WHERE position =" & pos & "" 
adaptingItemID = "SELECT * FROM kategorier WHERE position =" & pos-1 & ""

RecSet.Open movingItemID, Connect
RecSet2.Open adaptingItemID, Connect

RecSet("position") = (pos-1)
RecSet2("position") = pos
RecSet.Update
RecSet2.Update
RecSet.Close
RecSet2.Close
end sub

jag tog nyss bort parenteserna i sql-satserna

Medlem sedan juni 20019 519 inlägg
#33

Vad få du för felmeddelande då?

Är Connect något?

Medlem sedan juli 2009355 inlägg
#34

jo då, connect är något... det är samma som det är på sidan jag höll på med igår, det ligger i opcon.asp.

Felmeddelandet:

error '80004005'

Unspecified error

/stadmin/categories.asp, line 26

fick något liknande fel igår, och då var det "Order by position ASC" som var i sql-satsen som sabbade...

Medlem sedan juni 20019 519 inlägg
#35

movingItemID = "SELECT * FROM kategorier WHERE position =" & pos & ""
adaptingItemID = "SELECT * FROM kategorier WHERE position =" & pos-1 & ""

måste du hämta * ? Du använder ju bara position i din fråga längre ner, men kategorier och position är inte resarverade ord vad jag vet är position rätt datatyp i din databas?

Medlem sedan juli 2009355 inlägg
#36

voigtann1 skrev:

movingItemID = "SELECT * FROM kategorier WHERE position =" & pos & ""
adaptingItemID = "SELECT * FROM kategorier WHERE position =" & pos-1 & ""

måste du hämta * ? Du använder ju bara position i din fråga längre ner, men kategorier och position är inte resarverade ord vad jag vet är position rätt datatyp i din databas?

jag tror att position var reserverat ändå... jag satte [position] så fungerade det.

nej jag ska egentligen bara hämta id och position, jag testade bara att byta till "*" för att se om det var fel där.

Medlem sedan juli 2009355 inlägg
#37

Nu får jag ett annat felmeddelande som klagar på rad 29:

ADODB.Recordset error '800a0cb3'

Object or provider is not capable of performing requested operation.

/stadmin/categories.asp, line 29

rad 29:
RecSet("position") = pos+1

är det pos+1 som strular eftersom jag försöker lägga till ett tal till en sträng?

Medlem sedan juni 20019 519 inlägg
#38

är pos n sträng? låter korkat ;) konvertera den till ett tal och testar.

Medlem sedan juli 2009355 inlägg
#39

hur konverterar man då? läste någonstans att man kan göra VAL(pos) men har ingen aning om hur det fungerar, det funkar inte när jag gjorde så här i alla fall:

sub menuitemup(pos)
movingItemID = "SELECT KategoriID, position FROM kategorier WHERE position =" & VAL(pos) & "" 
adaptingItemID = "SELECT KategoriID, position FROM kategorier WHERE position =" & VAL(pos-1) & ""

RecSet.Open movingItemID, Connect
RecSet2.Open adaptingItemID, Connect

RecSet("position") = (VAL(pos)-1)
RecSet2("position") = VAL(pos)
RecSet.Update
RecSet2.Update
RecSet.Close
RecSet2.Close
end sub

_______
ska man göra: VAL(pos+1)
eller: Val(pos)+1
***** / \
_
_/_
_\_
_
det här kanske inte fungerar i vbs?

jag får detta felmeddelande när jag kör sidan:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'VAL'

/stadmin/categories.asp, line 11

Medlem sedan juni 20019 519 inlägg
#40

CLng() få du nog bättre resultat, då Val() inte finns i ASP, eller så skapar du en funktion som gör vad VAL() gör.

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)