webForumDet fria alternativet

datum

10 svar · 442 visningar · startad av MizzK

MizzKMedlem sedan juni 2003410 inlägg
#1

Funderar på hur man gör när man vill kolla så att det användaren skriver in i textboxen är i datumformat. och hur man sedan konverterar datumstringen till datetime.. för att jag sedan skall kunna skriva det till databasen..

renholmMedlem sedan apr. 20012 266 inlägg
#2

Använd RegularExpressionValidator för att validera rätt format, konvertera sedan till DateTime med DateTime.Parse(string);

MizzKMedlem sedan juni 2003410 inlägg
#3

har fått den till datum men nu har jag problem med att läsa det till db:n så här har jag gjort.

ddatum är en date variabel

            Dim strsql2 As String = "Select * from aktivitet where datum =  '" & ddatum & "'  "

vad e problemet?

renholmMedlem sedan apr. 20012 266 inlägg
#4

Är det Access så ska datumet omges av ##, #2004-01-02#

MizzKMedlem sedan juni 2003410 inlägg
#5

skrev så här

 Dim strsql2 As String = "Select * from aktivitet where datum =  #' & ddatum & '# "

men fick följande felmeddelande:

Syntaxfel i datum i frågeuttrycket 'datum = #' & ddatum & '#'.

testade även utan ' '. och fick samma fel..

När jag skriver

Dim strsql2 As String = "Select * from aktivitet where datum =  ' & ddatum & ' "

eller

Dim strsql2 As String = "Select * from aktivitet where datum =  '" & ddatum & "' "

får jag följande felmedd:

Typblandningsfel i villkorsuttryck

Även kollat av med db och koden.. båda är datumformat

desdecadoMedlem sedan juli 2004206 inlägg
#6

skriv # inom '' alltså: '#datum#'

GladhMedlem sedan maj 20012 812 inlägg
#7

Om du använder dig av access så skall datumet skrivas inom # och endat #

SELECT * FROM [Table] WHERE [Column] = #2000-10-10#

Vilket ger dig

"SELECT * FROM [Table] WHERE [Column] = #" & ddatum & "#"

- Magnus

MizzKMedlem sedan juni 2003410 inlägg
#8

glömt skriva det men jag har för ett bra tag sedan löst problemet, precis som gladh skrivit.

Marcus EMedlem sedan maj 20021 466 inlägg
#9

I ASP.NET ska du aldrig skriva arguments värde direkt i frågan. Det är en säkerhetsrisk och en källa till många fel.

Använd istället klasser som ärver från IDbCommand och IDataParameterCollection.

OleDbCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM [Table] WHERE [Column] = ?";
cmmand.Parameters.Add(null, ddatum);

Byt ut OleDbCommand mot den klass du använder. Syntaxen skiljer sig lite mellan olika databasklasser.

GladhMedlem sedan maj 20012 812 inlägg
#10

I ASP.NET ska du aldrig skriva arguments värde direkt i frågan. Det är en säkerhetsrisk och en källa till många fel

Det är ingen säkerhetsrisk om man vet vad man gör, men ett sätt att komma runt SQL injections är att använda parametriserad fråga istället för att skriva ut variablen direkt.

Och det gäller inte bara ASP.NET utan något som man alltid borde göra, om man nu använder sig av SP's.

- M

Marcus EMedlem sedan maj 20021 466 inlägg
#11

Gladh skrev:

Det är ingen säkerhetsrisk om man vet vad man gör

Vet man det då, alltid? Murphys lag vet du. Det är bättre att vara på den säkra sidan och göra det till en vana att använda Parameters. Det blir dessutom snyggare kod då.

134 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)