webForumDet fria alternativet

Kollektioner i Session

ASP

4 svar · 214 visningar · startad av ElMaco

Medlem sedan juni 2000161 inlägg
Frågan#1

Ok, jag vet att man skall vara restriktiv med hur mycket man placerar i Session-objektet, men i detta fallet är det en snabb o enkel lösning. Nu till frågan:

Kan man placera en kollektion i Session-objektet? Jag får felmeddelandet att "default property is missing" när jag försöker. Måste den konverteras till en array?

/M.

------------------
To understand recursion, we must first understand recursion.

Medlem sedan aug. 20012 349 inlägg
#2

hur försöker du stoppa in den? visa gärna lite kod oxå.

Men det är dumt att göra så, kan du inte spara ner det i databasen, eller posta värdena istället.

Som variant på att stoppa in en hel collection kan du bygga en sträng och stoppa in istället som du kan separera med ett tecken t ex | sen kan du bara splitta strängen och få fram dina värden. Tar mindre minne.

------------------
"Utan tvivel är man inte klok"
Tage Danielsson

[Redigerat av mrblonde den 07 dec 2001]

Medlem sedan dec. 19998 577 inlägg
#3

Vilken typ av kollektion är det?

------------------
Mostly Harmless

Medlem sedan juni 2000161 inlägg
#4

Hm... Språkförbistring.

Det är inte en kollektion utan ett Dictionary-objekt. (Same same, but different...?) Det är metoderna x.Exists o liknande som jag fortfarande vill behålla.
Eftersom jag sprang in i problemet att dictionary-objektet (kollektionen?) inte ville läggas i Session-objektet så gjorde jag så här:

'---för varje rad i filen, gör följande
		Do While oFile.AtEndOfStream <> True
			sLine = oFile.Readline
			'---skapa en array med varje värde i en egen cell. separator -> ";"
			sLine = Replace(sLine, ",", ";")
			If Not Instr(sLine, ";") > 0 Then sLine = sLine & ";"
			aLine = Split(sLine, ";")
			
			'---skriv ut resultat, börja med radnummer			
			Response.Write "<I>" & getExpression("Rad", languageID, 0) & " " & nLine & ":</I> "			
			'If messageRecipients.Exists(Trim(aLine(0))) Then
			'	Response.Write getExpression("Mottagaren", languageID, 0) & " """ & Trim(aLine(0)) & """ " & getExpression("finns redan i sändlistan", languageID, 0) & ". <B>" & getExpression("Ingen import", languageID, 0) & ".</B><BR>" & vbCrLf
			
			
			'---fel antal semikolon, skall vara 2 (-> 3 fält)
			If Ubound(aLine) <> 2 Then
					Response.Write getExpression("Fel antal semikolon", languageID, 0) & ". <B>" & getExpression("Ingen import", languageID, 0) & ".</B><BR>" & vbCrLf
			ElseIf Not InStr(aLine(0), "@") > 0 Then
				Response.Write getExpression("E-postadress saknas", languageID, 0) & ". <B>" & getExpression("Ingen import", languageID, 0) & ".</B><BR>" & vbCrLf
			Else
				Redim Preserve aRecipients(2, UBound(aRecipients, 2)+1)
				'Response.Write "#" & UBound(aRecipients, 2) & "#"
				aRecipients(0, UBound(aRecipients, 2)) = Trim(aLine(0))
				aRecipients(1, UBound(aRecipients, 2)) = Trim(aLine(1))
				aRecipients(2, UBound(aRecipients, 2)) = Trim(aLine(2))
				'messageRecipients.Add Trim(CStr(aLine(0))), Trim(CStr(aLine(1)))
				nImported = nImported + 1
				Response.Write getExpression("Mottagaren", languageID, 0) & " """ & Trim(aLine(0)) & """ " & getExpression("importerades utan problem", languageID, 0) & ".<BR>" & vbCrLf
			End If
			
			nLine = nLine + 1
		Loop
		
		'---lägg tillbaka kollektionen i session
		Session("aRecipients") = aRecipients

...och på nästa sida:

Set goodCollection = Server.CreateObject("Scripting.Dictionary")
Set noGoodCollection = Server.CreateObject("Scripting.Dictionary")

gc = 0
nc = 0

For j = 1 To Ubound(Session("aRecipients"), 2)
	mMerge.Item("email") = Session("aRecipients")(0, j)
	mMerge.Item("firstname") = Session("aRecipients")(1, j)
	mMerge.Item("lastname") = Session("aRecipients")(2, j)
	Set msg = mMerge.Expand
	If msg.Send(SMTPSERVER) Then
		goodCollection.Add gC, CStr(Session("aRecipients")(0, j))
		gC = gC + 1
	Else
		noGoodCollection.Add nC, CStr(Session("aRecipients")(0, j))
		nC = nC + 1
	End If
Next

...men det är som sagt löst nu. Tack iaf.

------------------
To understand recursion, we must first understand recursion.

Medlem sedan dec. 19998 577 inlägg
#5

Man skall kunna lagra en kollektion i en session, det är i application som man inte kan använda det för det är inte trådat.

Ett Dictionary är en kollektion.

Bra att du fick det att fungera iaf... :)

------------------
Mostly Harmless

258 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)