22. november 2002 - 19:20
Der er
25 kommentarer og 2 løsninger
Søgning på dato
Jeg har en selectbox, hvor men skal kunne søge på en post der ikke må være ældre end fx 5 eller 10 dage! Her henter jeg variablen ind, som fx er 5: strDAto = Trim(Request.Form("dato")) StrSql = "SELECT * FROM annoncer WHERE" StrSql = StrSql & "(hvad skal stå her)" Hvordan kan jeg lave det?
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
23. november 2002 - 10:29
#1
Hej, Prøv med følgende: <% strDato = Trim(Request.Form("dato")) strDato = "-" & strDato NyDato = DateAdd("d", strDato, Date) StrSQL = "SELECT * FROM Annoncer WHERE Dato BETWEEN " & "#" & NyDato & "#" & " AND " & "#" & Date() & "#" %> Jeg er ikke helt sikker på SQL'en, men NyDato variablen indeholder værdien af dagsdato minus det tal du har tastet ind i din Request.Form("dato") Jeg går i min SQL-sætning også ud fra at du har et felt i din tabel der hedder Dato.
23. november 2002 - 10:36
#2
jeg har et felt der hedder data i min db, bare rolig ;o) Men jeg forstår ikke helt hvad det er der sker! Denne sætning: NyDato = DateAdd("d", strDato, Date) Hvad gør den?
23. november 2002 - 10:39
#3
DateAdd gør det at den ligger et antal dage/måneder/år til en allerede given dato. "d" angiver at vi her snakker om dage. strDato henter din variable værdi, altså det antal dage der skal ligges til. Og Date angiver hvilken dato det er der skal ligges til/trækkes fra. Og i næste linie: strDato = "-" & strDato Her kan du se jeg har sat et minus foran fordi vi i dit tilfælde ikke skal ligge noget til en dato, men derimod trække fra. Altså minus. Forstår du det? Ellers spørg igen. /peter
23. november 2002 - 11:01
#4
Ok, men i denne sætning: strDato = Trim(Request.Form("annoncerdage")) strDato = "-" & strDato Her bliver strDato = "-" & strDato da lig med nul ?? skal den det?
23. november 2002 - 11:02
#5
Arhh har lige fundet ud af det, du laver bare variablen fra fx 10 til - 10 i!
23. november 2002 - 11:03
#6
Den skulle da meget gerne ikke blive lig nul. Hvis du f.eks. har en dato 23-11-2002 og indtaster 5 i dit felt så trækker den 5 dage fra ved at minuse fra start-datoen og det vil dermed give 18-11-2002. Jeg har testet at det virker.
23. november 2002 - 11:04
#7
Ja den her gør den bare negativ: strDato = "-" & strDato
23. november 2002 - 11:12
#8
Jeg får denne fejl når jeg sætter det ind?? Microsoft VBScript runtime error '800a000d' Type mismatch: '[string: "-"]'
23. november 2002 - 11:24
#9
Det må være fordi vi skal have brygget en anden SQL sammen tror jeg. For den anden del af scriptet, med at trække f.eks. fem dage fra dags dato har jeg testet og fået til at virke her. Hvilket styresystem kører du? Og bruger du PWS eller IIS og hvilken version?
23. november 2002 - 11:29
#10
Ja, du har rer - jeg skal have bygget den sammen med nogen andre variable: Sådan ser den ud lige nu! Jeg har også lige tilføjet et ) ved #.. StrSql = "SELECT * FROM annoncer WHERE" StrSql = StrSql & "(annoncetekst LIKE '%" & LCase(strKeyword) & "%')" StrSql = StrSql & "AND (dato BETWEEN " & "#" & NyDato & "#" & " AND " & "#" & Date() & "#)" Men jeg arbejder med Mysql og bruger IIS ver 5.1 fra WinXP pro
23. november 2002 - 11:31
#11
Hmm, jeg kan ikke lige gennemskue hvad der er galt med den sidste. Hvad får du af fejl? Er det her du får type mismatch?
23. november 2002 - 11:35
#12
Nej fejlen ligger her: NyDato = DateAdd("d", strDato, Date)
23. november 2002 - 11:36
#13
Hmmm, jeg er vist for træt. Lad os vente og se om vi ikke kan få eagleeye til at blande sig lidt.
23. november 2002 - 11:40
#14
Ja, ok - men tak for hjælpen ellers!
23. november 2002 - 11:41
#15
Det var så lidt, det kan da være jeg får en fix ide og vender tilbage senere.
24. november 2002 - 01:16
#16
Du skriver: "Her henter jeg variablen ind, som fx er 5: strDAto = Trim(Request.Form("dato"))" Så du kan finde den dato du vil havd record fra ved: dato = DateAdd("d",-strDAto, date)
24. november 2002 - 01:17
#17
Når du så har dato'en så skal den laves om til formatet yyyy-mm-dd hvis du har en kolonne med dato format i MySQL. Er kolonne af typen date?
24. november 2002 - 01:21
#18
Dato kan laves i yyyy-mm-dd formate sådan her: dato = Year(Dato) & "-" & Month(Dato) & "-" & Day(Dato) Så kan du lave din SQL sådan her. Bemærk at det kun er Access som skal havde dato i # via SQL, mySQL skal det i ' lige som tekst: StrSql = "SELECT * FROM annoncer WHERE" StrSql = StrSql & "(annoncetekst LIKE '%" & LCase(strKeyword) & "%')" StrSql = StrSql & " AND (dato >= '" & dato & "')"
24. november 2002 - 01:32
#19
Tak, jeg prøver lige at se på det, og så vender jeg tilbage ;o)
24. november 2002 - 01:43
#20
Jeg tror ikke du har fået helt fat i det, eller også forstår jeg ikke! Her hanter jeg et tal fra en selectbox, tallet kan være fx 5, hvis jeg vil se annoncer der fx må være op til 5 dage gamle. strDAto = Trim(Request.Form("dato"))" '( fx 5) Når jeg så søger på en annonce i dag den 24-11-2002 og har valgt 5 dage gamle annoncer, så skal den finde alt der er nyere den den 19-11-2002 Hvis du forstår?
24. november 2002 - 01:52
#21
Måske prøver lige med koden og kommentar i et.: 'Hendter antal dage der skal vises bagud strDAto = Trim(Request.Form("dato"))" 'Udregn hvilken dato der skal findes tilbage til dato = DateAdd("d",-strDAto, date) 'Konverter til mySQL format yyyy-mm-dd dato = Year(Dato) & "-" & Month(Dato) & "-" & Day(Dato) 'Lav SQL sætning som finder alt fra dato og frem: SQL = "SELECT * FROM xxxxx WHERE dato_kolonne >= '" & dato & "'"
24. november 2002 - 12:07
#22
Hej Nu har jeg sat det ind, og det ser ud som følgende: strDato = Trim(Request.Form("annoncerdage")) 'Udregn hvilken dato der skal findes tilbage til NyDato = DateAdd("d", -strDato, Date) 'Konverter til mySQL format yyyy-mm-dd strNydato = Year(NyDato) & "-" & Month(NyDato) & "-" & Day(NyDato) 'Min sql StrSql = StrSql & "AND (dato >= '" & strNydato & "')" Men jeg får en fejl i denne linie, hvor jeg tror der er fejl med den måde, der bliver skriftet fortegn, fra positiv til netagiv! NyDato = DateAdd("d", -strDato, Date) Dette er fejlkoden: Microsoft VBScript runtime error '800a000d' Type mismatch: '[string: ""]'
24. november 2002 - 19:44
#23
Hva eagleeye, er det ikke noget du kan finde ud af ? ;o)
25. november 2002 - 09:51
#24
Så bliver der ikke overført noget tal til siden via annoncerdage.. du sikker på felter hedder annoncerdage med r og ikke annoncedage?? strDato = Trim(Request.Form("annoncerdage"))
25. november 2002 - 13:10
#25
Denne er rigtig nok: strDato = Trim(Request.Form("annoncerdage")) Men jeg havde hante variablen forkert ind, sådan at den ikke kunne regne på datoen, men jeg fået det til at virke. Men kan det passe at når jeg skal lave søninger på fx 4 forskellige ting, at jeg skal have lavet 4*3*4 = 24 forskellige strenge??
25. november 2002 - 16:52
#26
jeg har følgende, men hvis jeg søger på annoncer der kun må være op til fx 5 dage gamle, finder den også den fx 5-11-2002????? Her er koderne: if (strLav <> "0") OR (strHoej <> "999999") AND (strLav < strHoej) AND (strKeywordLand = "1") AND (strDato <> "") then NyDato = DateAdd("d", -strDato, Date) strNydato = Year(NyDato) & "-" & Month(NyDato) & "-" & Day(NyDato) StrSql = "SELECT * FROM annoncer WHERE" StrSql = StrSql & "(annoncetekst LIKE '%" & StrKeyword & "%')" StrSql = StrSql & "AND (landsdel = '2' OR landsdel = '3' OR landsdel = '4' or landsdel = '5')" StrSql = StrSql & "AND (0+Pris Between " & strLav & " AND " & strHoej & ")" StrSql = StrSql & "AND (dato >= '" & strNydato & "')"
26. november 2002 - 10:15
#27
hmm, virker ikke rigtigt endnu!! Jeg får denne fejl når jeg søger på et ord!! Microsoft OLE DB Provider for ODBC Drivers error '80040e09' [TCX][MyODBC]You have an error in your SQL syntax near 'AND )' at line 1 /beta1/soegning.asp, line 309
Kurser inden for grundlæggende programmering