Avatar billede hingebjerg Nybegynder
26. juni 2005 - 15:35 Der er 47 kommentarer og
1 løsning

skal hente datoformat fra DB med ASP

Hej

jeg skal hente et dato format fra en DB (access) der er lige med en dato der blir angivet i Queristring.

Hvad går galt??

MinDato = Request.QueryString("date")
SET conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("usersystem.mdb")
strSq =" SELECT from kalender Where (DBDato = '" & MinDato & "')"
Set rs = conn.Execute(strSql)
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 15:45 #1
hvordan konverter jeg MinDato til et datoformat. det må vel være det der skal til...?
Avatar billede busschou Praktikant
26. juni 2005 - 16:00 #2
dato formater i access skal der # omkring
og så skal du kalde det strSQL _begge_ steder ellers gør den jo ingen ting ved det :o)
og så skal du også sige hvad du skal vælge fx *
--
strSql = "SELECT * from kalender Where DBDato = #"&MinDato&"#"
Set rs = conn.Execute(strSql)
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 16:07 #3
her er hvad jeg har:
MinDato = Request.QueryString("date")
SET conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("usersystem.mdb")
strSql =" SELECT * from kalender Where (DBDato = #'" & MinDato & "'#)"
Set rs = conn.Execute(strSql)

Her er hvad jeg får:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i datoen i forespørgselsudtrykket "(DBDato = #'26-06-2005'#)".
/kode/hingebjerg/ny/kalender3.asp, line 14
Avatar billede busschou Praktikant
26. juni 2005 - 16:09 #4
ja men som sagt skal der som i mit eksempel _kun_ # omkring datoer og ikke '
Så derfor :o)
og du behøver for så vidt ikke parantesen
strSql = "SELECT * from kalender Where DBDato = #" & MinDato & "#"
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 16:10 #5
okay. mange tak. det virker.

Smider du et svar??
Avatar billede busschou Praktikant
26. juni 2005 - 16:10 #6
yes :o) godt det virker :o)
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 16:12 #7
men måske du vil holde lidt øje med denne tråd stadig, da jeg er rimelig sikker på jeg får probs når jeg skal til at ha konverteret nogle datoer når de skal skrives til DB'en....?
Avatar billede busschou Praktikant
26. juni 2005 - 16:13 #8
jep jep, får jo mails når der kommer nyt, så skal nok hjælpe ...hvis jeg kan altså :o)
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 16:15 #9
tak. jeg er allerede stødt på næste problem.

den dato jeg har i QueryString skal sammenlignes med datoerne i DB'en, men kun på dato og måned. ikke år. What to do?
Avatar billede busschou Praktikant
26. juni 2005 - 16:17 #10
hvordan ser datoerne ud?
er der både måned og år og tid?
prøv give et eksempel på hvordan den fra querystringen ser ud og på hvordan den den skal sammenlignes med fra databasen ser ud
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 16:18 #11
Query = 26-06-2005
DB = 26-06-2005
skulle være til at gå til... :)
Avatar billede busschou Praktikant
26. juni 2005 - 16:26 #12
jeg er ikke helt sikker på om man kan hive Month i sql med man kan da prøve
---
Maaned = Split(MinDato,"-")(0)
Dag = Split(MinDato,"-")(1)
strSql = "SELECT * from kalender Where Month(DBDato) = "&Maaned&" And Day(DBDato) = "&Dag
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 16:37 #13
Jeg takker for inputte. Jeg har dog gabt over lidt for meget lige nu, så jeg får først brug for det noget senere.

Men mange tak
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 17:17 #14
jeg sidder nu og roder med det alligevel.

jeg får en kørselsfejl:
Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A0009)
Indekset er uden for området: '[number: 1]'
linie 22

hvor denne sætning "desværre" er: Maaned = Split(MinDato,"-")(0)
Avatar billede busschou Praktikant
26. juni 2005 - 17:19 #15
hvordan ser koden før det ud?
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 17:20 #16
MinDato = Request.QueryString("date")
SET conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("usersystem.mdb")

Maaned = Split(MinDato,"-")(1)
Dag = Split(MinDato,"-")(0)

strSqldage = "SELECT * from users Where Month(Dato) = "&Maaned&" And Day(Dato) = "&Dag
Set rsdage = conn.Execute(strSqldage)
Avatar billede busschou Praktikant
26. juni 2005 - 17:23 #17
altså hvis MinDato = 26-06-2005
Så vil Split(MinDato,"-") være Array(26,06,2005)
Så det er spooky
prøv sådan her så
----
MinDato = Request.QueryString("date")
arrDato = Split(MinDato,"-")
SET conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("usersystem.mdb")

Maaned = arrDato(1)
Dag = arrDato(0)

strSqldage = "SELECT * from users Where Month(Dato) = "&Maaned&" And Day(Dato) = "&Dag
Set rsdage = conn.Execute(strSqldage)
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 17:26 #18
Der opstod en Microsoft VBScript-kørselsfejl (0x800A0009)
Indekset er uden for området: '[number: 1]'
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 17:27 #19
jeg får den igen
Avatar billede busschou Praktikant
26. juni 2005 - 17:30 #20
øhh ok så ved jeg det ski ikke
For den bør altså lave et array og det array vil have tre pladser nummereret fra 0 til 2
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 17:33 #21
ja, det kan jeg godt følge. Ved sq heller ikke hvad der sker.

jeg får samme fejl bare med 0 hvis jeg sætter Dag = arrDato(0)
før linien med maaned..... måske det kan gi et hint?
Avatar billede busschou Praktikant
26. juni 2005 - 17:34 #22
det giver mig ingen mening desværre
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 17:40 #23
Subscript out of range: 'arrDato'

den fejl får jeg når jeg kører det på en "rigtig" server

kan det hjælpe?
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 17:41 #24
hehe, det er sq da det samme. Min fejl.

Hehe!
Avatar billede busschou Praktikant
26. juni 2005 - 17:56 #25
altså så er det fordi den ikke har splittet den ordentlig...guderne må vide hvorfor
Prøv sådan her bare for at se hvad katten den gør
---
MinDato = Request.QueryString("date")
response.wrtie MinDato & "<br>"
arrDato = Split(MinDato,"-")
for i=lbound(arrDato) to ubound(arrDato)
  response.write arrDato(i)&"<br>"
next
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 18:02 #26
26-06-2005
26
06
2005
er hvad den udskriver. så de må jo blive lage i det array
Avatar billede busschou Praktikant
26. juni 2005 - 18:05 #27
så prøv sådan her
---
MinDato = Request.QueryString("date")
response.write MinDato & "<br>"
arrDato = Split(MinDato,"-")
response.write lbound(arrDato)&<br>
response.write ubound(arrDato)&<br>
---
de burde gerne give 0 og 2 ellers hænger tingene da ikke sammen
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 18:08 #28
30-06-2005
0
2
ja, så skriver den 0 og 2
Avatar billede busschou Praktikant
26. juni 2005 - 18:10 #29
godt så, så nægter jeg altså at tro på at du får den fejl
for det betyder at du kan tage arrDato(0), arrDato(1) og arrDato(2)
Så er du sikker på den ikke gav dig fejlen i en anden linje?
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 18:15 #30
nej, det er i den linie med arrDato(0)

er du 100 på man skal bruge () ved array og ikke []?
Avatar billede busschou Praktikant
26. juni 2005 - 18:17 #31
ja for du har selv sagt i din kommentar 26/06-2005 18:02:57 at det i min kommentar 26/06-2005 17:56:11 virkede ;o)
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 18:18 #32
ja, men de to linier her:

Maaned = arrDato(1)
Dag = arrDato(0)

gir i hvert fald fejl.

Det gjorde det andet ikke...... om det er mystisk eller ej.
Avatar billede busschou Praktikant
26. juni 2005 - 18:21 #33
altså det virker hos mig, så skal det være fordi din udbyder har en eller anden underlig indstilling måske som gør at det ikke virker..måske ?!?!?
Jeg kan desværre ikke hjælpe dig videre for ...ja.. det virker som sagt for mig.. og når det virker i den test, en løkke hvor du beder den skrive hvert element ud..så burde det også virke at bede om elementet direkte - det er ganske normalt og det gør man hele tiden næsten når man arbejder med arrays...

Så ja det er mystifystisk i mine øjne
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 18:53 #34
ja, også her.

er der en anden måde jeg kan gøre det på så?
Avatar billede busschou Praktikant
26. juni 2005 - 18:56 #35
du kan prøve sådan her, men jeg har ikke teste om DateValue virker efter hensigten
--
dato = DateValue(MinDato)
strSqldage = "SELECT * from users Where Month(Dato) = "&Month(dato)&" And Day(Dato) = "&Day(dato)
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 18:57 #36
okay. jeg prøver.

men SKAL man ligge det i et array når man spiltter?
Det gøres måske automatisk..?
Avatar billede busschou Praktikant
26. juni 2005 - 18:59 #37
Det gøres automatisk
Split() returnerer et array
Join() gør det omvendte og samler et array til en streng
Du vil sikkert kunne få en del ud af at studerere de forskellige funktioner nærmere her
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vtoriFunctions.asp
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 19:00 #38
tak. tror jeg har fundet fejlen ved mig, hvorfor den gør som den gør.
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 19:07 #39
Grunden til den lavede den fejl, var fordi der ikke var noget i QueryStringen når man loadede siden, og dermed bliver arrayet jo tomt. Så jeg har hugget det i en if sætning, og nu virker det også som det skal.

Du skal ha tak for hjælpen....... indtil næste gang :)
Avatar billede busschou Praktikant
26. juni 2005 - 19:08 #40
okey. belastende ;o)
Så har du husket det da vi skulle finde ud af hvor stort array var men ikke ellers...
Nå men sådan  kan det jo gå...godt det virker nu :o)
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 19:09 #41
som faktisk godt kunne være allerede igen nu!

Håber det er iorden....?

det er også dato, men denne gang skal den skrives til DB'en.

Jeg har følgende sætning, men den gir også fejl. Det er en indtastet string der skal konverteres til datoformat.

rs("Dato") = convert(datetime(Request("Dato")),105)

den er åbenbart ikke rigtig.
Har set "opsætningen" i en anden tråd her på E
Avatar billede busschou Praktikant
26. juni 2005 - 19:13 #42
jeg kender ikke den convert men vil skyde på du kan læse om den på msdn i det link jeg gav dig :o)
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 19:14 #43
jeg har prøvet, men kan ikke hitte ud af det........ jeg er åbenbart en smule "dum".

hehe.....
Avatar billede busschou Praktikant
26. juni 2005 - 19:16 #44
ok , hvad ønsker du at opnå ved at konvertere den?
Hvilket format har du og hvilket ønsker du?
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 19:18 #45
brugeren indtaster 06-06-2005 i et tekstfelt i en form

dette skal sættes i DB'en hvor den skal angives som short date, altså:

06-06-2005
Avatar billede busschou Praktikant
26. juni 2005 - 19:25 #46
så skal du jo ikke formatere noget
06-06-2005 = 06-06-2005
:o)
Avatar billede busschou Praktikant
26. juni 2005 - 19:25 #47
Det er muligt du gerne vil tjekke om brugeren har tastet et korrekt format, men det er så ikke det samme som at du skal konvertere formatet jo
Avatar billede hingebjerg Nybegynder
26. juni 2005 - 19:28 #48
nej, det er lige gået op for mig. Der er noget jeg har fanget forkert. Troede at den teksstreng der blev indtastet ikke sådan bare kunne liges ind i DB uden at blive konverteret. men det kan den godt. Har også fåetd et til at virke.

Så skulle det vist være det for den her omgang.

men man ved aldrig :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester