Avatar billede dingkee Nybegynder
04. juni 2001 - 09:30 Der er 13 kommentarer og
1 løsning

Split Session og gem.

Jeg skal splitte en række session, og derefter gemme det i min database.
Her er min kode:
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"db1.mdb\")

sVarer = Session(\"Varer\")
sAntal = Session(\"Antal\")
sFarve = Session(\"Farve\")
sVarenr = Session(\"Varenr\")
sPris = Session(\"Pris\")
sTotal = Session(\"Total\")
sLev = Session(\"Lev\")

arrVarerIKurven = Split(sVarer,\"<br>\")
arrAntalAfVaren = Split(sAntal,\"<br>\")
arrFarveAfVaren = Split(sFarve,\"<br>\")
arrVarenrAfVaren = Split(sVarenr,\"<br>\")
arrLevAfVaren = Split(sLev,\"<br>\")

for i = Lbound(arrVarerIKurven) to Ubound(arrVarerIKurven)
SQL = \"INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) values (\'\"&arrVarerIkurven(i)&\"\',\"&arrAntalAfVaren(i)&\",\"&arrFarveAfVaren(i)&\",\"&arrVarenrAfVaren(i)&\");\"

Conn.execute( SQL )
next
%>

Når jeg udskriver min sql streng bliver det til dette:
INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) values (\'\',,,);

Hvis man udskriver session virker det fint nok, der hvor jeg tror det går galt er når man begynder og splitte sessionen, eller i denne sætning:
for i = Lbound(arrVarerIKurven) to Ubound(arrVarerIKurven)
Avatar billede torbenkoch Nybegynder
04. juni 2001 - 09:45 #1
Et hurtigt, godt råd: brug lidt mellemrum i din kode, specielt omkring & tegnene, så er det nemlig muligt for andre end en computer at læse det....

Hvordan ser de forskellige variable ud inden du splitter dem??
Avatar billede dingkee Nybegynder
04. juni 2001 - 09:48 #2
Skal lige fortælle at det er første gang jeg arbejder sådan rigtig med session, så hvad mener du med variable???
Avatar billede nuno Nybegynder
04. juni 2001 - 09:57 #3
sVarer, sAntal, sFarve, sPris, sTotal, sLev

hvad står der i dem

tjekkes således:

response.write sVarer
response.write sAntal
response.write sFarve
response.write sVarenr
response.write sPris
response.write sTotal
response.write sLev
response.end

/nuno
Avatar billede nuno Nybegynder
04. juni 2001 - 09:57 #4
evt. således - så det er nemmere at læse

response.write sVarer & \"<br>\"
response.write sAntal & \"<br>\"
response.write sFarve & \"<br>\"
response.write sVarenr & \"<br>\"
response.write sPris & \"<br>\"
response.write sTotal & \"<br>\"
response.write sLev & \"<br>\"
response.end

Avatar billede dingkee Nybegynder
04. juni 2001 - 09:58 #5
Har f.eks. indtastet 3 vare nu:


TestVare1
TestVare1
Test1
10
10
25
10
10
25
23454
23454
32554
10
10
10
100
100
250
10
10
235
Avatar billede dingkee Nybegynder
04. juni 2001 - 10:00 #6
Du får det da også lige på den anden måde så:


TestVare1
TestVare1
Test1

10
10
25

10
10
25

23454
23454
32554

10
10
10

100
100
250

10
10
235
Avatar billede nuno Nybegynder
04. juni 2001 - 10:28 #7
hvad skriver den så hvis du skriver

(fjern lige det response.end først)

for i = 0 to Ubound(arrVarerIKurven)
    response.write arrVarerIKurven(i) & \"<br\"
next



det skulle (MEGET GERNE) være noget i nærheden af:

TestVare1
TestVare1
Test1

????

/nuno
Avatar billede nuno Nybegynder
04. juni 2001 - 10:28 #8
response.write arrVarerIKurven(i) & \"<br>\"

hov - manglede lige et >
Avatar billede dingkee Nybegynder
04. juni 2001 - 10:40 #9
Jo så skriver den det, som du skrev hva sÅ??
Avatar billede nuno Nybegynder
04. juni 2001 - 10:52 #10
så foreslår jeg du forsøger dig med en for-løkke og en sql sætning der ser således ud:

for i = 0 to Ubound(arrVarerIKurven)
    sSql = \"INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) VALUES(\'\"& arrVarerIkurven(i) &\"\',\"& arrAntalAfVaren(i) &\",\"& arrFarveAfVaren(i) &\",\"& arrVarenrAfVaren(i) & \");\"

    Conn.execute sSql

next



du kan evt. som test/debug prøve at pinge Conn.execute ud - og skrive sql-sætningerne først


for i = 0 to Ubound(arrVarerIKurven)
    sSql = \"INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) VALUES(\'\"& arrVarerIkurven(i) &\"\',\"& arrAntalAfVaren(i) &\",\"& arrFarveAfVaren(i) &\",\"& arrVarenrAfVaren(i) & \");\"

    response.write sSql & \"<br>\"
    \'Conn.execute sSql

next


og hvis det er ok - så fjerne response.write sSql sætningen igen - og fjerne \' (ping) foran Conn.execute sSql

/nuno
Avatar billede dingkee Nybegynder
04. juni 2001 - 11:23 #11
Se så kommer det til at se sådan ud:
INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) VALUES(\'\',,,);
INSERT INTO Ordlin(Varenavn,Antal,Farve,Varenummer) VALUES(\'TestVare1\',10,10,23454);

men den giver stadig en fejl, det er vel den første linie der skal fjernes eller hva??
Avatar billede dingkee Nybegynder
04. juni 2001 - 11:32 #12
for i = 0 to Ubound(arrVarerIKurven)

skal være
for i = 1 to Ubound(arrVarerIKurven)
Avatar billede nuno Nybegynder
04. juni 2001 - 11:48 #13
tjah det er svært at se helt nøjagtigt - eftersom de 2 første varer der ligger i kurven hedder det samme - der er samme antal osv.

men prøv at skrive alle linierne ud - hvis der kommer 3 sqlsætninger - så skal du starte med i = 1

- det kommer an på hvordan du har lavet dine variable når varerne bliver lagt i kurven.

/nuno
Avatar billede dingkee Nybegynder
04. juni 2001 - 11:50 #14
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester