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