webForumDet fria alternativet

split(sträng) och array

ASP

9 svar · 354 visningar · startad av JAreMANNEN

Medlem sedan aug. 20002 272 inlägg
Frågan#1

EXAKT följande text skriver jag in i en <textarea>:

janne
bruno
klas#
berit
maggan
eva#
ragnhild
fredrik
mårten

Tecknet # betyder att här ska Datumet adderas med 1.
VARJE ny rad (vbcrlf) i <textarea> betyder EN NY POST i databasen.

Allt detta hade jag tänkt att fixa med split() och en array (eller så många som behövs).

Posterna i databasen ska se ut på följande vis:
Namn    | Datum
---------|---------
janne     | 2002-11-19
bruno     | 2002-11-19
klas       | 2002-11-19
berit      | 2002-11-20
maggan  | 2002-11-20
eva       | 2002-11-20
ragnhild | 2002-11-21
fredrik   | 2002-11-21
mårten  | 2002-11-21

Hoppas att ni fattar detta nu.. ;)
Annars får ni hojta till!

Medlem sedan juni 200032 967 inlägg
#2

Nu förutsätter jag vissa saker, men någonting sånt här borde fjunka:

varMyArray = Split(strValues, vbCrLf)
dteDate = Date
for i = 0 to ubound(varMyArray)
	if right(varMyArray(i), 1) = "#" then dteDate = DateAdd("d", 1, dteDate)
	strSQL = "INSERT INTO Tabell (fldNamn, fldDatum) VALUES ('" & Replace(Replace(varMyArray(i), "#", ""), "'","''") & "', #" & dteDatum & "#)"
	'Exekvera!
next

Mvh,

Medlem sedan apr. 20021 203 inlägg
#3

Kolla lite på detta, kod från ett gammalt, gammmal projekt. Det där med datumet vet jag iten, är inte så bra på det...

If Request.QueryString("Way") = "delivery" Then
TheString = Request.Form("orderID")
TheString = Replace(TheString,Chr(13)&Chr(10),"") 
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

Då skrev jag så här i rutan:
7834238934,
38983443,
38833

:)

Medlem sedan dec. 2000557 inlägg
#4

@nders skrev:

Nu förutsätter jag vissa saker, men någonting sånt här borde fjunka:

varMyArray = Split(strValues, vbCrLf)
dteDate = Date
for i = 0 to ubound(varMyArray)
	if right(varMyArray(i), 1) = "#" then dteDate = DateAdd("d", 1, dteDate)
	strSQL = "INSERT INTO Tabell (fldNamn, fldDatum) VALUES ('" & Replace(Replace(varMyArray(i), "#", ""), "'","''") & "', #" & dteDatum & "#)"
	'Exekvera!
next

Mvh,

Smidig kod @nders! :)
Men.. borde inte dteDate = Date flyttas in i for-satsen för att få det mer korrekt?

Medlem sedan juni 200032 967 inlägg
#5

Palleman skrev:

Men.. borde inte dteDate = Date flyttas in i for-satsen för att få det mer korrekt?

Inte som jag tolkar frågan. Om jag förstår saken rätt skall datumet räknas upp med ett för varje brädgård som återfinns sist, efter namnet, men inte återställas någon gång. Om det däremot skulle läggas på en dag på dagens datum, istället för senast begagnat datum, för varje brädgård som dyker upp, så har du helt rätt.

Så du eller jag missuppfattar frågan en aning tror jag, men inte värre än att det går lätt att pilla till. ;)

Mvh,

Medlem sedan dec. 2000557 inlägg
#6

Ähumm.. :r
Som min fänrik sa: Du har rätt, jag har fel - jag bestraffar mig själv med 50 armhävningar..

Nu såg jag, läste inte frågan ordentligt.. sorry ;)

Medlem sedan aug. 20002 272 inlägg
#7

kanoon "gubbar".. :P

Ska kolla upp det imorgon, ser lovande ut..

Medlem sedan aug. 20002 272 inlägg
#8

har provat nu, fick göra lite ändringar...

Fick sätta brädgården i början av varje namn istället, annars så blev den raden med brädgården sist "nästa" datum..

strText = request.form("text")
varArray = split (strText, vbCrLf)
Datums = CDate(Datums)
     for i = 0 to ubound(varArray)
          if left(varArray(i), 1) = "#" then Datums = DateAdd("d", 1, Datums)
          SQL:en
          Exekveringen!
     next

Tack ska ni ha, nu kan jag sova gott inatt. ;)

Medlem sedan juni 200032 967 inlägg
#9

JAreMANNEN skrev:

Fick sätta brädgården i början av varje namn istället, annars så blev den raden med brädgården sist "nästa" datum..

Annars hade du ju kunnat flytta if-satsen till precis efter SQL-satsen istället.

mvh,

Medlem sedan aug. 20002 272 inlägg
#10

@nders skrev:

JAreMANNEN skrev:

Fick sätta brädgården i början av varje namn istället, annars så blev den raden med brädgården sist "nästa" datum..

Annars hade du ju kunnat flytta if-satsen till precis efter SQL-satsen istället.

mvh,

hrm, där ser man prov på vad "skiljer den vise från den envise" :r

271 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
137 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
137 ms — ändringar (db)