/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
5/3 eller 3/5
Fra : Lars Klingenberg


Dato : 05-03-01 16:30

Hi,

Et lille irriterende problem, som jeg håber er banalt: jeg henter nogle data
i en database med en simpel:

Connect.Open "ifiDB"
DagsDato = Date
Foresp = "SELECT * FROM info_clea_menu WHERE dato >= #" & DagsDato & _
"# ORDER BY dato"

Længere nede vælger jeg kun at angive dagsdato og en uge frem, MEN den vil
meget gerne lave en amerikansk datoformatering - 05-03-01 bliver altså
tolket som 3. maj 2001 og ikke 5. marts 2001...? Både mit styresystem (w2k)
og officepakke (MS Of200) er engelsk, men jeg har da aldrig været udsat for
dette - heller ikke ved VBA programmering i Excell. Kan man i ASP-scriptet
angive hvad der er dag og hvad der er måned, som man angiver om det skal
være vbLongDate eller vbShortDate dato?

I øvrigt: hvis jeg bare skriver <% Response.Write FormatDateTime(Now,
vbLongDate) %> anfører den korrekt at det er d. 5. marts 2001. Dvs. at
ændringen sker når, datoen hentes fra databasen. Her er datoerne bare ikke
"omvendte".

Jeg er mystificeret!
--
Med venlig hilsen
Lars Klingenberg
[lklingenberg@ifi.ku.dk]




 
 
Erlend Klakegg Bergh~ (04-03-2001)
Kommentar
Fra : Erlend Klakegg Bergh~


Dato : 04-03-01 17:25

Lars Klingenberg <lklingenberg@ifi.ku.dk> skrev i
news:980bj4$3uk$1@news.inet.tele.dk
> Hi,
>
> Et lille irriterende problem, som jeg håber er banalt: jeg henter nogle
data
> i en database med en simpel:
>
> Connect.Open "ifiDB"
> DagsDato = Date
> Foresp = "SELECT * FROM info_clea_menu WHERE dato >= #" & DagsDato & _
> "# ORDER BY dato"
>
> Længere nede vælger jeg kun at angive dagsdato og en uge frem, MEN den vil
> meget gerne lave en amerikansk datoformatering - 05-03-01 bliver altså
> tolket som 3. maj 2001 og ikke 5. marts 2001...? Både mit styresystem
(w2k)
> og officepakke (MS Of200) er engelsk, men jeg har da aldrig været udsat
for
> dette - heller ikke ved VBA programmering i Excell. Kan man i ASP-scriptet
> angive hvad der er dag og hvad der er måned, som man angiver om det skal
> være vbLongDate eller vbShortDate dato?
>
> I øvrigt: hvis jeg bare skriver <% Response.Write FormatDateTime(Now,
> vbLongDate) %> anfører den korrekt at det er d. 5. marts 2001. Dvs. at
> ændringen sker når, datoen hentes fra databasen. Her er datoerne bare ikke
> "omvendte".
>
> Jeg er mystificeret!

Hvorfor ikke bruke sidene også til å legge inn i databasen ... Hvis det er
for gale, så kan du jo definere det slik :

5. Mars 2001 d05m03y2001 ...

=)

--

Vennlig hilsen Erlend
erlendkb@c2i.net
http://www.kleggen.com/



Lars Klingenberg (05-03-2001)
Kommentar
Fra : Lars Klingenberg


Dato : 05-03-01 17:39

> Hvorfor ikke bruke sidene også til å legge inn i databasen ... Hvis det er
> for gale, så kan du jo definere det slik :
>
> 5. Mars 2001 d05m03y2001 ...
Der tabte du mig godt nok...? Hvad mener du med at jeg skal "bruke sidene
også til å legge inn i databasen"? Det er muligt at mit norske er ringere
end jeg troede, men jeg forstår ikke helt hvad du mener. Og hvor vil du have
mig til at definere datoen? i databasen eller ASP scriptet?

Jeg "vedlægger" lige hele scriptet:

<%
Dim Connect, MenuKort, DagsDato, Foresp, Nummer
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "ifiDB"
Connect.MoveFirst
DagsDato = CStr(Date)
Foresp = "SELECT * FROM info_clea_menu WHERE dato >= #" & _
DagsDato & "# ORDER BY dato"
Set MenuKort = Connect.Execute(Foresp)
Nummer = 1
do until MenuKort.EOF Or Nummer > 6
%>

<table width=60% cellspacing=0 cellpadding=0 border=0>
<tr collspan=2>
<td width=80% class=boksleft>
<h3><%= FormatDateTime(MenuKort("dato"), 1) %></h3></td></tr>
<tr>
<td width=20% class=boksleft>
<%= MenuKort("menu1") %>: <%= MenuKort("pris_menu1") %></td>
<tr>
<td class=boksleft>
<%= MenuKort("menu2") %>: <%= MenuKort("pris_menu2") %></td></tr>
<tr>
<td class=boksleft>
<%= MenuKort("menu3") %>: <%= MenuKort("pris_menu3") %></td></tr>
<tr collspan=2><td>&nbsp;</td>
</table>

<%
Nummer = Nummer + 1
MenuKort.MoveNext
loop
Connect.close
Set Connect = nothing
Set ifiDB = nothing
%>



Erlend Klakegg Bergh~ (04-03-2001)
Kommentar
Fra : Erlend Klakegg Bergh~


Dato : 04-03-01 17:58

Lars Klingenberg <lklingenberg@ifi.ku.dk> skrev i
news:980fen$k4j$1@news.inet.tele.dk
> > Hvorfor ikke bruke sidene også til å legge inn i databasen ... Hvis det
er
> > for gale, så kan du jo definere det slik :
> >
> > 5. Mars 2001 d05m03y2001 ...
> Der tabte du mig godt nok...? Hvad mener du med at jeg skal "bruke sidene
> også til å legge inn i databasen"? Det er muligt at mit norske er ringere
> end jeg troede, men jeg forstår ikke helt hvad du mener. Og hvor vil du
have
> mig til at definere datoen? i databasen eller ASP scriptet?

Det jeg mente er at du må passe på å legge datoene inn med den formen som
brukes på serveren. Dersom der er klin umulig må man tenke nytt ...

Du kan jo kjøre en funksjon som passer på at datoen legges inn i databasen
på enten med dansk/norsk standard eller med engelsk standard ...

Hvis du ikke vet helt hvordan du vil gjøre det, så si ifra så skal jeg
skissere en bedre skisse ... ;)

PS. Hvis du vil holde det utenfor news'en herifra, så bare mail meg på
erlendkb@c2i.net så skal jeg svare når jeg får mailen din ... =)

--

Vennlig hilsen Erlend
erlendkb@c2i.net
http://www.kleggen.com/



Hendrik Hansen (05-03-2001)
Kommentar
Fra : Hendrik Hansen


Dato : 05-03-01 21:52


"Lars Klingenberg" <lklingenberg@ifi.ku.dk> wrote in message
news:980bj4$3uk$1@news.inet.tele.dk...
> Længere nede vælger jeg kun at angive dagsdato og en uge frem, MEN den vil
> meget gerne lave en amerikansk datoformatering - 05-03-01 bliver altså
> tolket som 3. maj 2001 og ikke 5. marts 2001...? Både mit styresystem
(w2k)
> og officepakke (MS Of200) er engelsk, men jeg har da aldrig været udsat
for
> dette - heller ikke ved VBA programmering i Excell. Kan man i ASP-scriptet
> angive hvad der er dag og hvad der er måned, som man angiver om det skal
> være vbLongDate eller vbShortDate dato?

Lad ADO objektmodellen og din OLEDB Provider gøre arbejdet, det er det de er
der for. Ved f.eks. at bruge et Command objekt og angive parametre ved at
appende Parameter objekter på Command objektet, fejlsikrer du din
applikation ved at bruge andres gennemtestede og optimerede kode (som
ADO/JET OLEDB må regnes for at være) og gør den samtidig (stort set)
uafhængig af underliggende DBMS. Dette vil gavne dig hvis du en dag skal
have applikationen over at køre på en anden DBMS, f.eks. vil din kode i
dette tilfælde køre med det samme på en SQL Server hvis du bruger
Command/Parameter objekter, den skulle omskrives hvis du brugte den
nuværende metode. Her er lidt kode, der måske kan hjælpe dig på vej:

Connect.Open "ifiDB"
DagsDato = Date
Foresp = "SELECT * FROM info_clea_menu WHERE dato >= ? ORDER BY dato"
Set objCmd = Server.CreateObject("ADODB.Command")
Set objCmd.ActiveConnection = Connect
objCmd.CommandText = Foresp
objCmd.Parameters.Append _
objCmd.CreateParameter("dato", adDate, adParamInput, Len(DagsDato),
DagsDato)
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open objCmd

Du kan finde forklaringer på samtlige funktioner i ADO dokumentationen.

Mvh. Hendrik



Lars Klingenberg (05-03-2001)
Kommentar
Fra : Lars Klingenberg


Dato : 05-03-01 23:31

> Lad ADO objektmodellen og din OLEDB Provider gøre arbejdet, det er det de
er
> der for. Ved f.eks. at bruge et Command objekt og angive parametre ved at
> appende Parameter objekter på Command objektet, fejlsikrer du din
> applikation ved at bruge andres gennemtestede og optimerede kode (som
> ADO/JET OLEDB må regnes for at være) og gør den samtidig (stort set)
> uafhængig af underliggende DBMS. Dette vil gavne dig hvis du en dag skal
> have applikationen over at køre på en anden DBMS, f.eks. vil din kode i
> dette tilfælde køre med det samme på en SQL Server hvis du bruger
> Command/Parameter objekter, den skulle omskrives hvis du brugte den
> nuværende metode. Her er lidt kode, der måske kan hjælpe dig på vej:
Wow! Der røg jeg af i svinget! Jeg er kun kommet til side 120 i Wrox'
Beginning ASP Databases, så min viden er endnu begrænset Jeg søgte blot
en forklaring/løsning på mit datoproblem, men det kan være det løser sig
selv, når jeg kommer længere hen i bogen Jeg vil til den tid ihukomme
dine bemærkninger vedr. kombabilitet.

> Du kan finde forklaringer på samtlige funktioner i ADO dokumentationen.
Har du en URL eller er det en del af Help files?
--
Med venlig hilsen
Lars Klingenberg
[lklingenberg@ifi.ku.dk]






Hendrik Hansen (05-03-2001)
Kommentar
Fra : Hendrik Hansen


Dato : 05-03-01 23:57


"Lars Klingenberg" <lklingenberg@ifi.ku.dk> wrote in message
news:981470$ems$1@news.inet.tele.dk...
> Wow! Der røg jeg af i svinget! Jeg er kun kommet til side 120 i Wrox'
> Beginning ASP Databases, så min viden er endnu begrænset Jeg søgte
blot
> en forklaring/løsning på mit datoproblem, men det kan være det løser sig
> selv, når jeg kommer længere hen i bogen Jeg vil til den tid ihukomme
> dine bemærkninger vedr. kombabilitet.

Jamen du skal da ikke lade dig skræmme, det er i princippet ikke sværere end
at bruge Connection objektet - du bruger bare flere og andre objekter. Jeg
synes at ADO er nemt at gå til, fordi objekterne stort set er
selvforklarende. I dette eksempel har du en SQL-kommando, du gerne vil have
udført. Til det bruger du et Command objekt. Kommandoen kan have en række
parametre, i dette tilfælde har din SQL kommando én, nemlig datoværdien. I
din SQL sætning kan du skrive et '?' istedet for værdien og også appende et
Parameter objekt via Command.Parameters.Append. I dette tilfælde laver vi
Parameter objektet via Command.CreateParameter fordi det er hurtigt og
fylder minimalt, men vi kunne i princippet have lavet det fra bunden med
Server.CreateObject("ADODB.Parameter"). Command objektet vil opfange
'?'-tegnet, finde det tilhørende Parameter objekt og lade OLEDB Provideren
formatere værdien korrekt, altså præcis hvad du vil opnå. Selvom jeg ikke
har testet min kode, burde den kunne bruges direkte i dit script - prøv det
af og se om det ikke løser dit problem.

> > Du kan finde forklaringer på samtlige funktioner i ADO dokumentationen.
> Har du en URL eller er det en del af Help files?

http://msdn.microsoft.com kan du somregel altid finde den dokumentation,
du skal bruge - også ADO dokumentation. Ellers har du, hvis du har
installeret ADO (hvilket du sandsynligvis har), også en hjælpefil til ADO
liggende et sted på din maskine, prøv at lede efter filer med navnet
'ado*.chm'. Hvis du ikke kan finde filen på din maskine, kan du downloade
MDAC 2.6 på http://www.microsoft.com/data/download.htm og få den ad den vej.
Disse hjælpefiler er et must - alle der udvikler ASP applikationer bør have
genveje til hjælpefilerne for ihvertfald ASP, VBScript/JScript og ADO
liggende i deres startmenu eller på skrivebordet.

Mvh. Hendrik



Søg
Reklame
Statistik
Spørgsmål : 177511
Tips : 31968
Nyheder : 719565
Indlæg : 6408591
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste