---
title: "Global.asa trubbel som inte vill ge sig."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/52180-global-asa-trubbel-som-inte-vill-ge-sig"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "T_Codez"
published: "2002-09-04T11:21:49.000Z"
updated: "2002-09-04T12:07:21.000Z"
replies: 2
views: 203
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/52180-global-asa-trubbel-som-inte-vill-ge-sig"
---

# Global.asa trubbel som inte vill ge sig.

## #1 — T_Codez, 2002-09-04T11:21Z

Hej

Jag håller på med en funktion som ska updatera en databas via en textfil. Och jag skulle vilja att den ska köras en gång efter varje månads skifte.

Typ: Jag glider in på siten och HOPPSAN. Jag är den 1:a användaren som kommer in efter månadsskiftet. Och det ska inte spela någon roll om det är den 1:a eller den 5:e i månaden. Jag har börjat pussla med koder som jag hittat här på Wf som är inom samma område.

Jag har fått ihop följande:

sub session_onstart

'Variabel Deklarationer
dim rad, instream, FObj, rdb, items, sqlstr, steps, dbdel, strSQL, datum, GoDate, stepsigen
dim runcheck, dat, GoDates(12) 

'Om senast uppdaterat är mindre än tidsintervallen (månad, operator som ger ett mummer, Inte riktigt säker på -1)
IF application("lastUpdated") \< dateAdd("m", now(), -1) THEN 

	GoDates(0) = "1/1"
	GoDates(1) = "2/1" 
	GoDates(2) = "3/1"
	GoDates(3) = "4/1" 
	GoDates(4) = "5/1" 
	GoDates(5) = "6/1"
	GoDates(6) = "7/1"
	GoDates(7) = "8/1" 
	GoDates(8) = "9/1"
	GoDates(9) = "10/1" 
	GoDates(10) = "11/1" 
	GoDates(11) = "12/1"

'  tilldelar variabeln steps värdet 2
	steps = 2

'  variabeln datum får ett värde av funktionen date
	datum = date
'  variabeln i får värdet 0
	i = 0

'	Så länge i är skilt från 12
	Do while i \<\> 12
        ' så kollar vi om steps är skilt(2) från 0
	     if steps \<\> 0 Then
				' Då kollar vi om Cdate(datum) har samma värde som CDate(GoDates(i))
				if CDate(datum) = CDate(GoDates(i)) Then
					'Om rad 41 stämmer så minskar vi värdet i steps med 2. Så det blir 0
					steps = steps - 2
				else
					'Om rad 41 inte stämmer så behåller vi värdet 2
				   steps = 2
				end if
	     end if
		' variabeln i ökar sitt värde med 1 sen loopar vi
	   i = i + 1 
	loop

	'Gör medans variabeln steps är skilt från 2
	Do while steps \<\> 2

		'Om steps har ett värde av 0
		if steps = 0 Then
			
			'Så tar vi bort alla poster som finns i tabellen
		   strSQL = "DELETE FROM tblartiklarlager WHERE fltartikelrad \<\> null "

			Set dbdel = Server.CreateObject("ADODB.Connection")
			dbdel.Open "int_hdxDSN"
			dbdel.Execute strSQL,,128

			'Sen ökar vi värdet i steps med 1
			steps = 1 + steps
			'stäng dbdel
			dbdel.close

		'Annars så...
		else
			'Öppnar vi databasen och lägger in nya värden i db:n
		   Set FObj = Server.CreateObject("Scripting.FileSystemObject")
		   Set InStream = FObj.OpenTextFile (Server.Mappath ("textfil.txt"),1, False)

		   Set rdb = Server.CreateObject("ADODB.Connection")
		       rdb.Open "int_hdxDSN"
		 
		    Do while not instream.AtEndOfStream
		     rad = instream.readLine
		     items = split(rad,";")
			  sqlstr = "insert into tblartiklarlager" &\_
			           "(fltartikelnr, fltProdGrupp, fltRefNr, fltsteelgrade, fltthickness, fltwidth, " &\_
			           "fltlength, fltcountrycode) VALUES ('" & items(0) &"','" & items(1) &"','" & items(2) &\_
			           "','" & items(3) &"'," & items(4) &"," & items(5) &"," & items(6) &",'"& items(7) &"')"
			   rdb.execute sqlstr,,128
			 loop
		   inStream.close
		   rdb.close
			steps = 1 + steps
		end if
	loop
 application("lastUpdated") = now() 
END IF
end sub

Den käss helt okay. Men det som sker nu är att jag får följande error mess:

Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'CDate'
/Hdx/global.asa, line 41  

Då undrar jag givetvis vad det är som jag inte ser eller inte kan helt enkelt?

Tackzam för alla uppslag och ideer...

/TT

Permalänk: https://www.webforum.nu/p/52180

## #2 — @nders, 2002-09-04T11:27Z

Du försöker köra Cdate() på ett värde av typen "1/1" eller "12/1". Det kan jag inte förstå hur det ska fungera. Se till att värdena är "2002-01-01" resp. "2002-12-01" istället.

Permalänk: https://www.webforum.nu/p/771885

## #3 — T_Codez, 2002-09-04T12:07Z

Det gick bättre...

Thankz  :e 

Det som jag upptäckt som ett nästa steg är att det endast sker uppdateringar den 1:a i månaden för den 1:a användaren och även för de övriga som går in på siten för första ggn (men det åtgärdas genom att flytta över den till "application on start" istället).

Kan man kringå det så att updateringen endast reagerar på den 1:a surfern och inga fler oberoende på klient och plats? Finns det några vedertagna kontroller för en sån funktion eller är det bara å"hitt på nått" kanske?

Sen om jag som 1:st surfer kommer in t ex. den 3:e i månaden så händer det ingenting. Hur kan man lösa det?

Anledningen till att jag vill ha det så här... är för att user1 kan sitta och titta på datat som uppdaterats. Och kommer det in en ny user2 så sätter även han igång en uppdatering på samma grej. Och det känns ju onödigt med fler updates på samma sak typ.

Själv ligger mina funderingar på att ha en kontroll i en txtfil... Kan de va nått?

Åter igen tackzam för alla tänkbara tips.

/TT

Permalänk: https://www.webforum.nu/p/771933

---

Tråden på webben: https://www.webforum.nu/amne/asp/52180-global-asa-trubbel-som-inte-vill-ge-sig
