webForumDet fria alternativet

Function

14 svar · 366 visningar · startad av martinpartin

martinpartinMedlem sedan jan. 2001373 inlägg
#1

Hej!, Skulle vilja fatta hur jag gör en egen function


Dim i_datecount, str_date
    str_date = Request.Form("c_requestdate")

i_datecount = Len(str_date)

If i_datecount <> 10 then
   str_date = ""
Else
End If

Jag har flera strängar som ska gå ignom denna och vill återanvända koden. Alltså det är strdate som kommer vara det värde som kommer in i funktionen och ska returneras om det har rätt antal karaktärer. Hur anropar jag den osv. ?

hittar inte nån riktigt bra förklaring.

PalleMedlem sedan apr. 20003 174 inlägg
#2

typ..

[red]Function dateCheck(strDate)

	If Len(strDate) <> 10 Then dateCheck = "" Else dateCheck = strDate

End Function

...

dateCheck(Request.Form("c_requestdate"))[/red]
OveRRidEMedlem sedan feb. 200112 078 inlägg
#3

En liten fråga bara, varför kontrollerar du ifall datumet är 10 tecken långt? Är det inte bättre att kolla ifall det är ett datum med den inbyggda funktionen isDate() istället, och sedan göra datumet till vbShortDate (10 tecken) med FormatDateTime()?

Att stränghantera datum brukar vara dumt eftersom datumformen kan komma att ändras på t.ex. en annan server.

If isDate(request.form("c_requestdate")) then response.write FormatDateTime(request.form("c_requestdate"),2)
martinpartinMedlem sedan jan. 2001373 inlägg
#4

ahha så sant ! ändrar direkt ! tack.

vad är noll värde för datum format ?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#5

Allt som inte rekogniceras som ett datum, alltså ett giltigt datum eller datumformat, returnerar False från isDate().

isDate(#2003-02-29#) &raquo; False (29 feb finns inte, eftesom 2003 inte är ett skottår)
isDate("November 13, 1975") &raquo; True

Siffran noll (0) returnerar således False.

martinpartinMedlem sedan jan. 2001373 inlägg
#6

ok ! shysst tack ! :)

OveRRidEMedlem sedan feb. 200112 078 inlägg
#7

Om något av svaren löste ditt problem, markera då detta inlägg med "Acceptera som slutgiltigt svar". Du hittar länken till höger nere i inlägget.

martinpartinMedlem sedan jan. 2001373 inlägg
#8

men om datumet inte finns och det ska läggas blankt.. då blir det felmeddelande i SQL-satsen. har testat med null o 0 osv..

Function checkdate(str)
str = Trim(str)
	If IsDate(str) Then 
          checkdate = str
          checkdate = Replace(checkdate,"\","-")
          checkdate = Replace(checkdate,"/","-")
        Else 
           checkdate = 0

        End If

End Function

Dim str_opendate
str_opendate = checkdate(Request.Form("c_opendate"))
@ndersMedlem sedan juni 200032 969 inlägg
#9

Du ska använda null, fast utan # eller andra literaler.

martinpartinMedlem sedan jan. 2001373 inlägg
#10

Ok ! accepterar !

OveRRidEMedlem sedan feb. 200112 078 inlägg
#11

Du skall inte använda ' (apostrofer) när du hanterar datum i Access. (Jag antar att det är Access du använder?) I Access skall du innesluta datum i #.

select * from tblUgh where UghDate = #" & str_opendate & "#

När jag tänker efter dock, vet jag inte hur en tom sträng mot ett datumfält kommer reagera, men jag funderar på ifall det inte är gränssnittets uppgift att se till att det datum som kommer in i databasen faktiskt är ett datum. Om det inte är det, skall inte SQL:en köras alls enligt min mening.

RED. Felskrivning.

martinpartinMedlem sedan jan. 2001373 inlägg
#12

Syntax error in date in query expression '##'. .......

Ok det är kanske enda lösningen !. får ta bort den ur SQL frågan om inget datum existerar ?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#13

Som jag misstänkte.

Nej, SQL-frågan skall väl inte köras alls ifall det inte är något datum angivet? Eller skall alla returneras om datumet är tomt?

martinpartinMedlem sedan jan. 2001373 inlägg
#14

hmm.. Det är ett INSERT statement.. Där det är 7 olika datum fält.
Och det är inte alltid det behöver finnas ett datum. så jag vill alltså lägge in en post i ett access fält som är av typ datum och som är tom.

Går det att lösa detta på nått sätt ?

Ex. kolla det fetstilade 5 mil åt höger på skärmen...

SQL01 = "INSERT INTO 4ExemptionIssues (IssueOpenDate, IssueDescription, BelToFseeCompName, BelToStoreName, BelToMandatory, Breach, CatalogueIssue, BelToExemptionStatus) Values([B]#"& str_opendate &"#[/B], '"& str_issuedesc &"', '"& Request.Form("c_store_1") &"', '"& Request.Form("c_store_2") &"', '"& Request.Form("c_mand_2") &"', "& str_breach &", "& str_catissue &", '"& Request.Form("c_status") &"')"

:)

martinpartinMedlem sedan jan. 2001373 inlägg
#15

strunta i denna, det är löst. Den ursprungliga från är besvarad ! Tack! :)

256 ms totalt · 3 externa anrop · v20260731065814-full.30151723
127 ms — hämta forumlista (db)
122 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)