@ndersMedlem sedan juni 200032 967 inläggVad använder du adovbs.inc till på den här sidan? Om du inte använder den, låt bli att inkludera den. Ännu bättre är att alltid låta bli att inkludera den, och istället definiera enbart de konstanter du ska använda, på aktuell sida.
Vi provar att rensa lite då:
<%
If Request.QueryString("Way") = "sent" Then
TheString = Request.Form("orderID")
Response.write "TheString: """ & TheString & """<br>"
End If
If Request.QueryString("Way") = "delivery" Then
TheString = Request.Form("orderID")
Response.write "TheString: """ & TheString & """<br>"
End If
%>
Kodstycket du postade, är det all kod på sidan?
En fråga som jag måste ställa: Du har kontrollerat så du ändrar i rätt asp-fil? ;)
Mvh,
SsolbulleMedlem sedan mars 20015 287 inlägg Response.redirect raden är väl också borta antar jag... ;)
Resultat (kom in i If-satsen):
TheString: "45, 56, 78"
(Ja, jag skriver i rätt dokument, skam vore väl annars. :e Men det är klart, jag brukar kunna klanta till sådant här ganska rejält! ;) )
Hmm, kom på en sak som inte är så bra. Det är meningen att man ska fylla i ett antal tal i en textarea:
1,
34,
56,
789
och sedan ska alltså datumet läggas in på varje rad tillhörande resp. tal. Men med den Split:en jag kör så blir ju vissa nummer, t.ex: " 78" (med ett mellanslag först). Det kan nog ha med saken att göra, eller? Hur ska jag ändra?
:)
SsolbulleMedlem sedan mars 20015 287 inlägg Då borde det ju fungera nu?
Testa i din orginalkod med:
trim(TheArray(i))
@ndersMedlem sedan juni 200032 967 inläggHade du kommenterat bort response.redirect-raden tidigare när du skrev testutskrifter inne i if-blocken?
Dessutom, ett fel i din kod är att du splittar på kommatecken. Du borde splitta på kommatecken och mellanslag.
TheArray = Split(TheString,", ")
När du har textfält istället för talfält så spelar det en jäklarns roll att du har ett mellanslag före varje id i dina UPDATE-queries.
Red: Det hände lite grejer medan jag formulerade mig tydligen. :)
Mvh,
Jodå, Redirecten är borta men _fortfarande_ fungerar det inte, inte ens korrektionen av Splitten hjälpte... :(
@ndersMedlem sedan juni 200032 967 inläggHur kan det komma sig att utskrift av sql-frågorna inte dyker upp?
Exakt hur ser din kod ut, med testutskrifter och allt?
<%
Response.Buffer = TRUE
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\trexter\a\sdf.mdb;pwd=dfd"
If Request.QueryString("Way") = "sent" Then
TheString = Request.Form("orderID")
TheArray = Split(TheString,", ")
For i = 0 To Ubound(TheArray)
Sent = "UPDATE orders SET Sent = '" & Date & "' WHERE orderID = '" & TheArray(i) & "' "
Connect.Execute(Sent)
Next
End If
If Request.QueryString("Way") = "delivery" Then
TheString = Request.Form("orderID")
TheArray = Split(TheString,", ")
For i = 0 To Ubound(TheArray)
Delivery = "UPDATE orders SET Delivered = '" & Date & "' WHERE orderID = '" & TheArray(i) & "' "
Connect.Execute(Delivery)
Next
End If
Connect.Close
Set Connect = Nothing
%>
<br><br>
slut!
*humpf* Jag tror vi börjar närma oss lösningen:
Sent:UPDATE orders SET Sent = '2002-08-15' WHERE orderID = '67, 89, 89 '
någonting skumt med splitten...
Vild gissning: Det ska kanske inte vara några ' runt '" & TheArray(i) & "' iom att orderID är text?
:q
PpontaMedlem sedan juli 200237 inlägg Hmm, kom på en sak som inte är så bra. Det är meningen att man ska fylla i ett antal tal i en textarea:
1,
34,
56,
789
Det kan väl inte vara så att du har fått med vbCrLf i TheString och att den därför inte splittar korrekt på ", "...?
Prova med
TheString = Replace(TheString,Chr(13)&Chr(10),"")
TheArray = Split(TheString,", ")
Redigerad!
Splitten kanske inte ska ha ett mellanslag, försök med:
TheArray = Split(TheString,", ")
om det inte fungerar med det första alt.
@ndersMedlem sedan juni 200032 967 inlägg
trexter.com skrev:
Vild gissning: Det ska kanske inte vara några ' runt '" & TheArray(i) & "' iom att orderID är text?
:q
Jo. ALLTID apostrofer runt värden om fälten är av texttyp.
Ponta: Välkommen till Wf! :bire
Jag kör nu dokumentet nedan. Fortfarande plockas inte bara ett värde ur Arrayen ut utan istället hela strängen.
Men ett framsteg är iaf att din kod gjorde så att den splittar rätt. :)
Utskrift av Sent:
UPDATE orders SET Sent = '2002-08-16' WHERE orderID = '15,67,89'
Skulle du kunna förklara exakt vad den gör:
TheString = Replace(TheString,Chr(13)&Chr(10),"")
Anders: :r Blandade ihop saker och ting.
If-blocket:
If Request.QueryString("Way") = "sent" Then
TheString = Request.Form("orderID")
TheString = Replace(TheString,Chr(13)&Chr(10),"")
TheArray = Split(TheString,", ")
For i = 0 To Ubound(TheArray)
Sent = "UPDATE orders SET Sent = '" & Date & "' WHERE orderID = '" & TheArray(i) & "' "
Connect.Execute(Sent)
Next
End If
:)
PpontaMedlem sedan juli 200237 inlägg TheString = Replace(TheString,Chr(13)&Chr(10),"")
TheArray = Split(TheString,", ")
Den byter ut ev. radbrytningar vbCrLf (CarrigeReturn & LineFeed) mot "", dvs den tar bort alla radbrytningar. Har du provat med att splitta med:
TheArray = Split(TheString,",")
OBS! Utan mellanslag! Jag tror att det är radbrytningen som ser ut som ett mellanslag i webbläsaren. Kör koden igen och skriv ut TheArray(i) med response.write.
Nu ser det ut så här när jag skriver ut Arrayen:
156787 :)
Ska testa att göra det genom en SQL-fråga istället nu, borde väl fungera?!
Jaaaaaaaa!!!!! *fyrverkeri och salut* :o Det fungerar!
_Verkligen_ tack till dig ponta och till @nders med.
:bire :bire :bire :bire :bire