17. juli 2002 - 10:14
Der er
24 kommentarer og 2 løsninger
Problem med Access udtræk
Jeg har en side hvor jeg laver udtræk fra en Access database. I databasen er der nogle felter, der er lavet som ja/nej felt og dato felt. Jeg bruger Access2Web til at indtaste data hvilket fungerer fint, men når laver udtræk af ja/nej feltet, så skriver den true eller false på selve siden. Hvad skyldes dette? Derudover har jeg et "problem" med at dato feltet bliver udfyldt med klokkeslet udover datoen. Kan man ikke undgå dette?
Annonceindlæg fra Deloitte
Ja/nej felter er boolean. Altså enten true eller false. Det kan du så selv tolke på, og lave om... Datofeltet indholder også klokkeslet... Du kan evt. køre en substring på datofeltet og klippe klokken fra. I Oracle kan man lave en to_char hvor man angiver hvilken del af datofeltet man vil have, og i hvilket format... Jeg ved ikke om access har en lignende funktionalitet? Jeg tvivler.
Ok, det var jo en fin forklaring, men hvordan gør jeg så lige det? Min udtrækskommando ser således ud: <% Response.Write Record("Anskafdato")%> Kan man tilføje noget ekstra kode for at omdanne til ja/nej + fjerne klokkeslet?
Inden du udskriver feltet med Response.write osv. kan du lægge værdien over i en variabel dim janej janej = Record("janejfelt") if (janej = "true") then Response.write "Ja" else Response.write "Nej" end if Datoen kan blive angivet i forskellige formater alt afhængig af om du kører på en server der kører med dansk eller amerikansk (eller et helt tredje) datoformat. Skriv en dato her som din dato ser ud når du skriver den råt ud.
Sådan ser det ud når jeg laver udtræk af min dato: 15-07-2002 15:48:07
Så kan du bare bruge kommandoen left, som tager en streng som parameter og returnerer kun den venstre halvdel, hvor strengen er skåret over et antal karaterer inde som du også selv angiver med et parameter.
http://www.devguru.com/Technologies/vbscript/quickref/left.html dim dato
dato = left(Record("Anskafdato"),10)
response.write dato
Dette er såfremt datoen skal skæres over 10 karakterer inde... (Måske skal det være 11... Jeg er ikke lige sikker :-)
Du kan bruge FormatDate: Response.write FormatDate(rs("datokolonne"),vbshortdate)
Du kan også formatere daten via SQL med FORMAT.. "SELECT FORMAT(ddatokolonne, 'dd-mm-yyyy') as datoStr, * FROM tabel" Udskrive ved bruge af recordset, på samme måde som data udskrives: Rsponse.write rs("datoStr")
Den der dim dato kommando. Hvor skal den stå? Skal den stå i toppen eller foran udtrækskommandoen eller hvad? Og skal der ikke <% %> på?
17. juli 2002 - 11:06
#10
Hvis i skulle være i tvivl så er jeg ASP newbie, så jeg skal have skåret det lidt ud i pap ;]
17. juli 2002 - 11:06
#11
dim dato er blot en linie hvor du opretter din nye variabel. Den skal bare stå før du bruger den, og den skal stå et sted indenfor dine <% %> klammer. Eksempelvis <% dim dato dato = left(Record("Anskafdato"),10) response.write dato %>
17. juli 2002 - 11:33
#12
Når jeg bruger: <% dim janej janej = Record("janejfelt") if (janej = "true") then Response.write "Ja" else Response.write "Nej" end if %> så skriver den blot "Nej" hver gang, selvom der er records med værdien Ja/True?
17. juli 2002 - 11:37
#13
Øhm... Har du en kolonne der hedder "janejfelt" ? Det skal du naturligvis udskifte med det rigtige navn for den kolonne. :-)
17. juli 2002 - 11:41
#14
ja ok, det har jeg også gjort :)
17. juli 2002 - 11:42
#15
Men det er som om at den blot vælger else kommandoen hver gang.
17. juli 2002 - 12:25
#16
Hmmm. Måske der er et mismatch mellem det den skriver over i janej og det der tjekkes på.... Prøv evt at skrive janej ud til browseren så du kan se hvad den indeholder dim janej janej = Record("janejfelt") <----- Skal stadig skiftes ud med det rette kolonnenavn :-) response.write janej Hvad skriver den så?
17. juli 2002 - 13:01
#17
Så skriver den False eller True.
17. juli 2002 - 13:06
#18
Hmmmm..... Det var som bare..... Måske den er case sensitive...? Skift linien if (janej = "true") then ud med if (janej = "True") then Jeg er en anelse i vildrede her... (Jeg har ikke mulighed for at teste koden hvor jeg sidder...) Hvis det stadig ikke virker, så smid hele din kildekode så jeg kan se den.
17. juli 2002 - 13:29
#19
Jeg har tjekket case sensitive. Her er hele svineriet. DB'en er lavet i en DK Access 2002. <% Response.Buffer = True ' Connection til database Set Con = Server.CreateObject("ADODB.Connection") DBPath = "DBQ=" & server.mappath("/database1.mdb") Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath Sql = "SELECT TOP 1000 * FROM filmdata ORDER BY titel" Set Record = Con.Execute(Sql) %> <html> <head> <meta http-equiv="Content-Language" content="da"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Filmklubben</title> <base target="_blank"> <style fprolloverstyle>A:hover {color: #FF0000; font-size: 8pt} </style> </head> <body bgcolor="#C3C3C3" link="#000000" vlink="#000000" alink="#000000"> <div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="900"> <tr> <td width="100%"> <p align="center"> <p align="left"> <font face="Verdana" size="1">Velkommen til filmklubbens hjemmeside. Her kan du finde information om hvordan filmklubben "fungerer" og hvilke regler klubben har.<br> Nedenunder kan du se en komplet liste over de film som klubben råder over. Filmene står listen med de nyeste film øverst.</font><p align="left"> </td> </tr> </table> </center> </div> <div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="900"> <tr> <td width="100" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"> <img border="0" src="grafik/cover.gif"></td> <td width="156" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"> <img border="0" src="grafik/titel.gif"></td> <td width="128" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"> <img border="0" src="grafik/genre.gif"></td> <td width="196" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"> <img border="0" src="grafik/medvirkende.gif"></td> <td width="98" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"> <img border="0" src="grafik/anmeldelse.gif"></td> <td width="93" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"> <img border="0" src="grafik/udlaant.gif"></td> <td width="129" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"> <a href="default.asp" target="_self"> <img border="0" src="grafik/anskaffelse.gif"></a></td> </tr> </table> </center> </div> <div align="center"> <center> <table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="900" bgcolor="#FFFFFF"> <tr><% Do While Not Record.EOF %><font face="Verdana" size="1"> </font> <td width="100" valign="top" style="border-bottom-style: solid; border-bottom-width: 1; border-left-style:solid; border-left-width:1"><font face="Verdana" size="1"><a href="covers/<% Response.Write Record("billede")%>">Billede</a><br><br></font></td> <td width="156" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"><font face="Verdana" size="1"><% Response.Write Record("titel")%><br><br></font></td> <td width="129" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"><font face="Verdana" size="1"><% Response.Write Record("genre")%><br><br></font></td> <td width="196" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"><font face="Verdana" size="1"><% Response.Write Record("Medvirkende")%><br><br></font></td> <td width="98" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"><font face="Verdana" size="1"><a href="<% Response.Write Record("Link")%>">Link</a><br><br></font></td> <td width="93" valign="top" style="border-bottom-style: solid; border-bottom-width: 1"><font face="Verdana" size="1"> <% dim janej janej = Record("udlånt") response.write janej %> <br><br></font></td> <td width="128" valign="top" style="border-bottom-style: solid; border-bottom-width: 1; border-right-style:solid; border-right-width:1"><font face="Verdana" size="1"> <% dim dato dato = left(Record("Anskafdato"),10) response.write dato %> <br><br></font></td> </tr> <% Record.MoveNext Loop %><font face="Verdana" size="1"> </font> </table> </center> </div> </body> </html> <% ' Lukke connection Con.Close Set Con = Nothing %> Lige nu kører siden fra min lokale Windows 2000 DK maskine.
17. juli 2002 - 13:39
#20
Ok. Jeg prøver at køre det når jeg kommer hjem, men det bliver først omkring 20.00 i aften... Håber det er i orden.
17. juli 2002 - 13:58
#21
ja fint nok, jeg er bare glad for at du gider gøre så meget ud af det :)
17. juli 2002 - 14:01
#22
Tja... Nogle gange går der bare lidt sport i det, for selvfølgelig kan problemet løses....
17. juli 2002 - 14:58
#23
du skal gøre følgende: erstat <% dim janej janej = Record("udlånt") response.write janej %> med <% if Record("udlånt") then response.write "ja" else response.write "nej" end if %>
17. juli 2002 - 20:42
#24
Ahhh. Endelig hjemme. Jeg tror - uden at have prøvet det - at coolcoder har fat i det rigtige... Jeg ved ikke om du har fået det prøvet af?
18. juli 2002 - 08:31
#25
Sweet det virker sgu! Mange tak.
18. juli 2002 - 08:34
#26
SBM har fået 40 point og Coolcoder 20. Håber det er fair nok.
Kurser inden for grundlæggende programmering