webForumDet fria alternativet

Skulle gärna vilja ha själp med några saker! [Angående byte från tal till text!]

ASP

56 svar · 996 visningar · startad av trexter.com · sida 3 av 3

Frågan, av trexter.com

Jag vet att jag frågat detta en gång förrut men tyvärr fick jag inga svar som hjälpte mig och hoppas nu på ett andra försök. Jag har börjat närma mig slutet på ett mindre projekt och har insett att jag måste byta en viss kolumm (orderID) från tal till text vilket har lett till vissa komplikationer (det är inte säkert att alla fel beror på bytet). Nedan finns den felaktiga koden och tillhörand

Läs frågan i sin helhet →
Medlem sedan juni 200032 967 inlägg
#41

Vad 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,

Medlem sedan mars 20015 287 inlägg
#42

Response.redirect raden är väl också borta antar jag... ;)

Medlem sedan apr. 20021 203 inlägg
#43

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! ;) )

Medlem sedan apr. 20021 203 inlägg
#44

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?

:)

Medlem sedan mars 20015 287 inlägg
#45

Då borde det ju fungera nu?
Testa i din orginalkod med:

trim(TheArray(i))

Medlem sedan juni 200032 967 inlägg
#46

Hade 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,

Medlem sedan apr. 20021 203 inlägg
#47

Jodå, Redirecten är borta men _fortfarande_ fungerar det inte, inte ens korrektionen av Splitten hjälpte... :(

Medlem sedan juni 200032 967 inlägg
#48

Hur kan det komma sig att utskrift av sql-frågorna inte dyker upp?
Exakt hur ser din kod ut, med testutskrifter och allt?

Medlem sedan apr. 20021 203 inlägg
#49
<% 
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!
Medlem sedan apr. 20021 203 inlägg
#50

*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...

Medlem sedan apr. 20021 203 inlägg
#51

Vild gissning: Det ska kanske inte vara några ' runt '" & TheArray(i) & "' iom att orderID är text?

:q

Medlem sedan juli 200237 inlägg
#52
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.

Medlem sedan juni 200032 967 inlägg
#53

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.

Medlem sedan apr. 20021 203 inlägg
#54

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

:)

Medlem sedan juli 200237 inlägg
#55
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.

Medlem sedan apr. 20021 203 inlägg
#56

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?!

Medlem sedan apr. 20021 203 inlägg
#57

Jaaaaaaaa!!!!! *fyrverkeri och salut* :o Det fungerar!
_Verkligen_ tack till dig ponta och till @nders med.

:bire :bire :bire :bire :bire

276 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
146 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)