| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | dato og  Session.LCID = 1030 Fra : Christian M. Nielsen | 
  Dato :  30-01-03 20:35 |  
  |  
 
            Jeg har et underligt problem med datoer.
 I min global.asa har jeg  Session.LCID = 1030 og det samme har jeg på den
 side jeg kører min strSQL. Det virker fint på min IIS og Access2000, men på
 serveren går det galt. Jeg kan ikke finde datoer med dansk datoformat, men
 kun engelsk.
 Jeg starter min sub på denne måde
 <% Sub Show()
  Session.LCID = 1030
 dim strDate1
 strDate1 = FormatDateTime((now()),2)
 strSQL = "SELECT Relation, RelationII, Kontaktes, kontaktesII, Firma,
 BrugerID FROM tblNewBizz WHERE (((Kontaktes =#"&strDate1&"#) OR (
 KontaktesII =#"&strDate1&"# ))) AND ((Relation ='" & Session("BrugerID")
 &"') or (RelationII ='" & Session("BrugerID") &"')) ORDER BY Firma ASC"
  openRecordset(strSQL)
 En response.write strSQL ser forskellig ud på min IIS og online.
 lokalt ser den således ud :
 SELECT Relation, RelationII, Kontaktes, kontaktesII, Firma, BrugerID FROM
 tblNewBizz WHERE (((Kontaktes =#1/30/2003#) OR ( KontaktesII
 =#1/30/2003# ))) AND ((Relation ='trs') or (RelationII ='trs')) ORDER BY
 Firma ASC
 på online ser den således ud.
 SELECT Relation, RelationII, Kontaktes, kontaktesII, Firma, BrugerID FROM
 tblNewBizz WHERE (((Kontaktes =#30-01-03#) OR ( KontaktesII =#30-01-03# )))
 AND ((Relation ='trs') or (RelationII ='trs')) ORDER BY Firma ASC
 Lokalt er det med engelsk datoformat og online er det dansk.
 Det jeg undrer mig over er, hvis jeg vælger en record, og får datoerne at
 se, så er de med dansk datoformat. Det er de også hvis jeg åbner databasen
 og ser direkte deri. Hvis jeg gemmer en opdatering, og har skrevet med dansk
 datoformat, så gemmes den også I dansk format. Hvis jeg indtaster i engelsk
 format og derefter ser recorden så er datoen lavet om til dansk format.
 På siden er der endvidere en søgefunktion for datoer. Her får jeg samme
 resultat (online og lokalt) hvis jeg søger med dansk eller engelsk
 datoformat. dd-mm-yyyy / mm-dd-yyyy
 jeg kan også få resultaterne hvis jeg søger på mm-dd-yy men IKKE dd-mm-yy
 hvilket også undrer mig en del.
 Er der nogen der har en ide om hvad der er glat eller hvad jeg skal lede
 efter?
 --
 Mvh / Regards
 -=< Christian >=-
 What capital has 164 letters in its name? See my web page to find out.
 http://www.cmnielsen.dk     ICQ: 25308942
 Destiny is not a matter of chance it is a matter of choice
            
              |   |   
            
        
 
            
         
           Jens Gyldenkærne Cla~ (30-01-2003) 
         
	
            | Kommentar Fra : Jens Gyldenkærne Cla~ | 
  Dato :  30-01-03 22:48 |  
  |  
 
            Christian M. Nielsen skrev:
 > strDate1 = FormatDateTime((now()),2)
 Hvorfor lader du ikke Access om at generere datoværdien? Med dags
 dato er det langt lettere at holde funktionskoden i Access:
 ....WHERE (Kontaktes = Date) OR (KontaktesII = Date)....
 (Date giver datoen uden tid, Now virker præcis som asp).
 Med eksplicitte værdier kan man bruge funktionen DateSerial(year,
 month, day).
 -- 
 Jens Gyldenkærne Clausen
 Svar venligst under det du citerer, og citer kun det der er
 nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
 hvordan på  http://usenet.dk/netikette/citatteknik.html
            
             |   |   
            
        
 
            
         
           Christian M. Nielsen (31-01-2003) 
         
	
            | Kommentar Fra : Christian M. Nielsen | 
  Dato :  31-01-03 16:06 |  
  |   
            
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
 news:Xns9313E7FA7D0DBjcdmfdk@gyrosmod.cybercity.dk...
 > Christian M. Nielsen skrev:
 >
 > > strDate1 = FormatDateTime((now()),2)
 >
 > Hvorfor lader du ikke Access om at generere datoværdien? Med dags
 > dato er det langt lettere at holde funktionskoden i Access:
 >
 > ...WHERE (Kontaktes = Date) OR (KontaktesII = Date)....
 >
 > (Date giver datoen uden tid, Now virker præcis som asp).
 Ok, det var jeg ikke klar over. Det ændrer dog ikke på min problemstilling.
 Jeg har prøvet at uploade siden til et andet webhotel (Azero) og der er der
 ingen problemer. De er kun på det første webhotel jeg uploadede til
 (Scannet). Dette undrer mig en del, men de kører åbenbart ikke samme
 opsætning af deres servere (?).
 --
 Mvh / Regards
 -=< Christian >=-
 What capital has 164 letters in its name? See my web page to find out.
 http://www.cmnielsen.dk     ICQ: 25308942
 Destiny is not a matter of chance it is a matter of choice
            
              |   |   
            
        
 
            
         
           Jens Gyldenkærne Cla~ (31-01-2003) 
         
	
            | Kommentar Fra : Jens Gyldenkærne Cla~ | 
  Dato :  31-01-03 20:01 |  
  |  
 
            Christian M. Nielsen skrev:
 >> ...WHERE (Kontaktes = Date) OR (KontaktesII = Date)....
 >>
 >> (Date giver datoen uden tid, Now virker præcis som asp).
 >
 >
 > Ok, det var jeg ikke klar over. Det ændrer dog ikke på min
 > problemstilling.
 Det forstår jeg ikke. Ved at bruge en datofunktion i Access er du
 netop fuldstændig uafhængig af indstillinger for datoformat.
 > Jeg har prøvet at uploade siden til et andet webhotel (Azero)
 > og der er der ingen problemer.
 Fint - så er problemet jo løst.
 -- 
 Jens Gyldenkærne Clausen
 Svar venligst under det du citerer, og citer kun det der er
 nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
 hvordan på  http://usenet.dk/netikette/citatteknik.html
            
             |   |   
            
        
 
            
         
           Carsten Suurland (31-01-2003) 
         
	
            | Kommentar Fra : Carsten Suurland | 
  Dato :  31-01-03 00:27 |  
  |   
            Hej Christin
 
 Jeg ved det måske er lidt sent at lave om på nu, men gør dig selv en
 tjeneste:
 
 Lad være med at bruge datofelter i din database!!!
 
 Opret alle datoer som en float (double) i Access, og gem/forespørg så med de
 tal der svarer til dine datoer.
 
 F.eks.
 
 'Læs dato
 Dim ThisDate
 ThisDate = CDate(rs("MyDate").Value)
 
 'Gem dato
 Dim ThisDate
 ThisDate = CDbl(Now())
 .... INSERT INTO bla bla VALUES (ThisDate, bla bla)
 
 'Forespørg på dato
 Dim ThisDate
 ThisDate = CDbl(Now())
 ....SELECT bla bla FROM bla WHERE HideDate < " & ThisDate
 
 På den måde er du fri for at tænke på datoformater... ikke noget med
 #dd-mm-yyyy# eller #yyyy/mm/dd#, som alligevel sikkert vil fejle hvis du
 flytter over til at andet format end Access
 
 /Carsten Suurland
 
 
  
            
             |   |   
            
        
 
            
         
           Torben Brandt (31-01-2003) 
         
	
            | Kommentar Fra : Torben Brandt | 
  Dato :  31-01-03 00:47 |  
  |  
 
            Carsten Suurland wrote in dk.edb.internet.webdesign.serverside.asp:
 > Jeg ved det måske er lidt sent at lave om på nu, men gør dig selv en 
 > tjeneste: 
 >  
 > Lad være med at bruge datofelter i din database!!! 
 >  
 > Opret alle datoer som en float (double) i Access, og gem/forespørg så med de 
 > tal der svarer til dine datoer. 
 >  
 > F.eks. 
 >  
 > 'Læs dato 
 > Dim ThisDate 
 > ThisDate = CDate(rs("MyDate").Value) 
 >  
 > 'Gem dato 
 > Dim ThisDate 
 > ThisDate = CDbl(Now()) 
 > .... INSERT INTO bla bla VALUES (ThisDate, bla bla) 
 >  
 > 'Forespørg på dato 
 > Dim ThisDate 
 > ThisDate = CDbl(Now()) 
 > ....SELECT bla bla FROM bla WHERE HideDate < " & ThisDate 
 >  
 > På den måde er du fri for at tænke på datoformater... ikke noget med 
 > #dd-mm-yyyy# eller #yyyy/mm/dd#, som alligevel sikkert vil fejle hvis du 
 > flytter over til at andet format end Access 
 Jeg brugte tidligere tekststrenge til at indeholde datoer/tider som f.eks.
 "yyyymmddhhmm", men jeg er gået over til dato-felter fordi det trods alt er
 nemmere end strenge.
 Der bruger jeg dog DateSerial og TimeSerial, for at være sikker på at datoen
 overføres korrekt til databasen.
 Og når jeg trækker datoerne ud igen, bruger jeg enten FormatDateTime eller
 Day/Month/Year funktionerne.
 /Torben
 -- 
 Danmarks største specialiserede IT jobdatabase
  - Udelukkende med IT- og internetrelaterede jobs
  - Opret en profil og lad drømmejobbet finde dig
 KLIK HER! =>  http://www.html.dk/job
            
             |   |   
            
        
 
            
         
            Carsten Suurland (31-01-2003) 
         
	
            | Kommentar Fra : Carsten Suurland | 
  Dato :  31-01-03 01:13 |  
  |  
 
            Hej Torben
 Jamen så er du da også inde på noget af det rigtige   
Jeg har bare set så mange gange, at folk bruger datofelter "som de er" og
 dermed ikke altid får tænke konsekvenserne til ende.
 /Carsten
            
              |   |   
            
        
 
            
         
            Jørn Andersen (31-01-2003) 
         
	
            | Kommentar Fra : Jørn Andersen | 
  Dato :  31-01-03 01:55 |  
  |  
 
            On Thu, 30 Jan 2003 23:47:19 +0000 (UTC), Torben Brandt
 <torben@actuar.dk> wrote:
 >Carsten Suurland wrote in dk.edb.internet.webdesign.serverside.asp:
 <snip>
 >> Lad være med at bruge datofelter i din database!!! 
 >>  
 >> Opret alle datoer som en float (double) i Access, og gem/forespørg så med de 
 >> tal der svarer til dine datoer. 
 <snip>
 >Jeg brugte tidligere tekststrenge til at indeholde datoer/tider som f.eks.
 >"yyyymmddhhmm", men jeg er gået over til dato-felter fordi det trods alt er
 >nemmere end strenge.
 >Der bruger jeg dog DateSerial og TimeSerial, for at være sikker på at datoen
 >overføres korrekt til databasen.
 >Og når jeg trækker datoerne ud igen, bruger jeg enten FormatDateTime eller
 >Day/Month/Year funktionerne.
 Jeg synes også Torbens metode klart er at foretrække.
 Ulempen med Carstens er, at man ikke kan udnytte (eller: det er i
 hvert fald langt sværere) den vifte af dato-funktioner, der er
 indbygget i de fleste databasers SQL-sprog.
 Min erfaring er, at det der går galt for de fleste er, at de gør deres
 kode afhlængig af et bestemt *format*.
 I stedet skal man sikre sig, at man får overført dato-*værdierne*
 mellem database og script.
 Og det er det Torben gør med hhv. DateSerial/TimeSerial og
 Day/Month/Year-funktionerne.
 PS: Gider du tage et kig på:
 <URL:  http://www.usenet.dk/netikette/citatteknik.html>
-- 
 Jørn Andersen,
 Brønshøj
            
              |   |   
            
        
 
            
         
           Christian M. Nielsen (01-02-2003) 
         
	
            | Kommentar Fra : Christian M. Nielsen | 
  Dato :  01-02-03 17:11 |  
  |  
 
            ok, jeg tror jeg opgiver datofelter i Access 2000. Hvis jeg søger direkte
 deri, via en sql forespørgsel som den ser ud nedenfor, så får jeg listet dem
 for 2 januar, og ikke dem for første februar. Jeg har set på nogle
 forskellige records, og de har alle "01-02-2003" til at stå som værdi, men
 de kan kun findes via nedenstående sætning.
 SELECT BrugerID, Firma, Kontaktes FROM tblNewbizz WHERE
 (((tblNewbizz.Kontaktes)=#1/2/2003#)) OR
 (((tblNewbizz.KontaktesII)=#1/2/2003#));
 Jeg har et søgefelt online i asp, og indtaster jeg 2 januar (02/01/2003), så
 får jeg dem fem der skal første februar.  Når jeg trykker for at se den
 record der kommer frem under søgningen, viser den at den skal kontaktes d.
 første februar (hvis jeg sætter <%=formatDateTime(oRs("Kontaktes"),1)%> får
 jeg  "1. februar 2003" udskrevet). Jeg er nu ret forvirret mht.disse
 datofelter. Min asp kode tolker fint det der står i felterne, så det er
 åbenbart måden access bliver behandlet på, der er forskellig fra IIS og til
 et online webhotel og disse imellem.
 Der har været angivet andre løsningsforslag til behandling af datoer som jeg
 har set lidt på, men jeg har et par spørgsmål.
 Hvis man bruger et tekstfelt i stedet for et datofelt hvorledes vil en
 søgefunktion efter datoer så se ud? Hvorledes skal en dato gemmes i
 teksstrengen? (dd-mm-yyyy) eller? (jeg skal ikke bruge klokkeslet, kun
 dato.)
 "Carsten Suurland" <removethiscarsten@suurland.dk> wrote in message
 news:b1ccb5$le8$1@news.cybercity.dk...
 gav et eksempel, men jeg kan ikke helt gennemskue hvad der menes
 > Opret alle datoer som en float (double) i Access, og gem/forespørg så med
 de
 > tal der svarer til dine datoer.
 Min access er dansk og jeg kan ikke lige se en datatype der modsvarer "
 float " deri.
 > 'Forespørg på dato
 > Dim ThisDate
 > ThisDate = CDbl(Now())
 > ...SELECT bla bla FROM bla WHERE HideDate < " & ThisDate
 Jeg vil gerne vide hvad HideDate er ??
 >'Gem dato
 >Dim ThisDate
 >ThisDate = CDbl(Now())
 >... INSERT INTO bla bla VALUES (ThisDate, bla bla)
 i linien "ThisDate = CDbl(Now())" hvad er CDbl() ???? Er det noget der er
 indbygget i ASP?
 --
 Mvh / Regards
 -=< Christian >=-
 What capital has 164 letters in its name? See my web page to find out.
 http://www.cmnielsen.dk     ICQ: 25308942
 Destiny is not a matter of chance it is a matter of choice
            
              |   |   
            
        
 
            
         
            Jørn Andersen (01-02-2003) 
         
	
            | Kommentar Fra : Jørn Andersen | 
  Dato :  01-02-03 18:18 |  
  |  
 
            On Sat, 1 Feb 2003 17:11:24 +0100, "Christian M. Nielsen"
 <christian@(REMOVE)cmnielsen(DOT)dk> wrote:
 >ok, jeg tror jeg opgiver datofelter i Access 2000.
 Lad være med det.
 >Hvis jeg søger direkte
 >deri, via en sql forespørgsel som den ser ud nedenfor, så får jeg listet dem
 >for 2 januar, og ikke dem for første februar. Jeg har set på nogle
 >forskellige records, og de har alle "01-02-2003" til at stå som værdi, men
 >de kan kun findes via nedenstående sætning.
 >
 >SELECT BrugerID, Firma, Kontaktes FROM tblNewbizz WHERE
 >(((tblNewbizz.Kontaktes)=#1/2/2003#)) OR
 >(((tblNewbizz.KontaktesII)=#1/2/2003#));
 Prøv at bruge denne funktion:
 <url:
 http://groups.google.com/groups?hl=da&selm=1879jt0nj8ng3066tpe91bs1frm82c7u2p%404ax.com>
(Du'r til Access, men vistnok ikke til MSSQL - som har nogle andre
 indbyggede funktioner end Access).
 Humlen ved den er, at du sikrer, at det er dato-*værdier* du overfører
 fra script til database - så dit script ikke er afhængigt af et
 bestemt datoformat.
 Som du skriver det, overfører du en tekststreng (1/2/2003), som du
 satser på, at databasen forstår korrekt. Tilsyneladende bruger din db
 engelsk og ikke dansk dato-format, hvorfor den selvfølgelig misforstår
 din tekststreng. Ved at bruge databasens indbyggede dato-funktioner,
 gør du dig uafhængig af, hvilket *format* den foretrækker.
 Jeg havde på et tidspunkt nogle sider, som startede med at ligge på en
 server med danske sprog-indstillinger. På et tidspunkt blev den
 udskiftet, og man glemte/valgte ikke at indstille til dansk
 dato-format. Resulatet var selvfølgelig, at siderne gav forkerte
 resultater. Ved at bruge nævnte funktion, slap jeg ud over problemet.
 <snip>
 >Der har været angivet andre løsningsforslag til behandling af datoer som jeg
 >har set lidt på, men jeg har et par spørgsmål.
 >
 >Hvis man bruger et tekstfelt i stedet for et datofelt hvorledes vil en
 >søgefunktion efter datoer så se ud? Hvorledes skal en dato gemmes i
 >teksstrengen? (dd-mm-yyyy) eller? (jeg skal ikke bruge klokkeslet, kun
 >dato.)
 Lad være - du skaber dig bare nogle nye problemer. Plus at du
 afskriver dig muligheden for (eller i hvert fald gør det voldsomt
 sværere) at bruge de indbyggede dato-funktioner i databasen.
 Datoer kan være drilske i ASP (såvel som i andre sammenhænge, hvor der
 kan være forskllige formater), men det kan altså læres   
1. Sørg for at bruge Session.LCID = 1030 i toppen af alle dine sider
 med datoer.
 2. Brug ovennævnte funktion, når du skal omsætte mellem script og
 database.
 Hvis du overholder disse to regler, så går det sjældent galt.
 Hvis du har behov for at beregne i dit script, så vær sikker på, at
 det er dato-*værdier*, du beregner på, og ikke et bestemt format.
 FormatDateTime bør kun bruges til egentlig udskrift på siden.
 FormatDateTime afleverer jo ikke et resultat i dato-/tid-format, men
 som en tekststreng. Og tekststrenge er altså farlige at tolke som
 datoer.
 Lige et par korte svar til Carstens forslag (som jeg dog vil fraråde):
 >"Carsten Suurland" <removethiscarsten@suurland.dk> wrote in message
 <snip>
 >> Opret alle datoer som en float (double) i Access, og gem/forespørg så med
 >de
 >> tal der svarer til dine datoer.
 >
 >Min access er dansk og jeg kan ikke lige se en datatype der modsvarer "
 >float " deri.
 På dansk skal du oprette feltet med
 Datatype: Tal
 Feltstørrelse: Dobbelt reelt tal
 >> ...SELECT bla bla FROM bla WHERE HideDate < " & ThisDate
 >
 >Jeg vil gerne vide hvad HideDate er ??
 Det er bare navnet på "dato"-feltet (som altså ikke er i dato-format,
 men i ovennævnte Double.
 >i linien "ThisDate = CDbl(Now())" hvad er CDbl() ???? Er det noget der er
 >indbygget i ASP?
 Ja (eller rettere i VB Script) - og i Access. Det er en
 konverteringsfunktion, som konverterer til ovennævnte format (Dobbelt
 reelt tal).
 Andre af samme slags er fx: CInt(var), CLng(var) - afhængigt af
 hvilket tal, der er tale om.
 Kig i VBScript-dokumentationen - den er uundværig til den slags
 spørgsmål:
 <URL:
 http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28001169>
VBScript-dokumentation kan downloades herfra:
 <URL:
 http://www.msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/728/msdncompositedoc.xml&frame=true>
- eller direkte:
 <URL:
 http://download.microsoft.com/download/winscript56/Install/5.6/W982KMeXP/EN-US/scrdoc56en.exe>
Hvis du downloader og installerer den på din egen maskine, har du den
 som en Windows Help-file (.chm-format) - uundværlig efter min mening.
 Good luck!
 -- 
 Jørn Andersen,
 Brønshøj
            
              |   |   
            
        
 
            
         
             Christian M. Nielsen (01-02-2003) 
         
	
            | Kommentar Fra : Christian M. Nielsen | 
  Dato :  01-02-03 20:49 |  
  |   
            
> Prøv at bruge denne funktion:
  <url:
 http://groups.google.com/groups?hl=da&selm=1879jt0nj8ng3066tpe91bs1frm82c7u2
p%404ax.com>
 > (Du'r til Access, men vistnok ikke til MSSQL - som har nogle andre
 > indbyggede funktioner end Access).
 Jeg havde set på den da jeg løb in i problemerne, men nu vil jeg prøve at
 sætte den ind i min kode.
 > >Hvis man bruger et tekstfelt i stedet for et datofelt hvorledes vil en
 > >søgefunktion efter datoer så se ud? Hvorledes skal en dato gemmes i
 > >teksstrengen? (dd-mm-yyyy) eller? (jeg skal ikke bruge klokkeslet, kun
 > >dato.)
 >
 > Lad være - du skaber dig bare nogle nye problemer. Plus at du
 > afskriver dig muligheden for (eller i hvert fald gør det voldsomt
 > sværere) at bruge de indbyggede dato-funktioner i databasen.
 >
 > Datoer kan være drilske i ASP (såvel som i andre sammenhænge, hvor der
 > kan være forskllige formater), men det kan altså læres   
Det var også min umiddelbare holdning at holde mig til datofelter, men andre
 forslag blev givet, og når man er på herrens mark lytter man jo til de råd
 der kommer
 > 1. Sørg for at bruge Session.LCID = 1030 i toppen af alle dine sider
 > med datoer.
 Er det ikke nok med Session.LCID = 1030 i global.asa?
 > 2. Brug ovennævnte funktion, når du skal omsætte mellem script og
 > database.
 Jeg forsøger mig frem
 > FormatDateTime bør kun bruges til egentlig udskrift på siden.
 > FormatDateTime afleverer jo ikke et resultat i dato-/tid-format, men
 > som en tekststreng. Og tekststrenge er altså farlige at tolke som
 > datoer.
 Det var også for at se om jeg havde den rette dato, Det er jo svært at vide
 når der står 1/2/03 om det er januar aller februar der er tale om?
 > Lige et par korte svar til Carstens forslag (som jeg dog vil fraråde):
 Tak for svarene.
 > Kig i VBScript-dokumentationen - den er uundværig til den slags
 > spørgsmål:
 Jeg forsøger mig frem igen.
 --
 Mvh / Regards
 -=< Christian >=-
 What capital has 164 letters in its name? See my web page to find out.
 http://www.cmnielsen.dk     ICQ: 25308942
            
              |   |   
            
        
 
            
         
              F.Larsen (02-02-2003) 
         
	
            | Kommentar Fra : F.Larsen | 
  Dato :  02-02-03 11:49 |  
  |  
 
            "Christian M. Nielsen" <christian@(REMOVE)cmnielsen(DOT)dk> wrote in message
 news:3e3c24a2$0$1779$ba624c82@nntp03.dk.telia.net...
 > Jeg forsøger mig frem igen.
 En god ide er at placere konverteringen i en funktion (f.eks.
 getDBDate(strDate)), så hvis du på et tidspunkt skal skifte database skal du
 kun rette et sted.
 --
 Flemming
 http://home.cbkn.dk/Spyware/
http://home.cbkn.dk/Spam/
            
             |   |   
            
        
 
            
         
             Christian M. Nielsen (03-02-2003) 
         
	
            | Kommentar Fra : Christian M. Nielsen | 
  Dato :  03-02-03 22:46 |  
  |   
            
"Jørn Andersen" <jorn@jorna.dk> wrote in message
 news:jkun3v0b5ranltf7hi2cv8b05seq0sjdk2@4ax.com...
 >
 > Prøv at bruge denne funktion:
 > <url:
 >
 http://groups.google.com/groups?hl=da&selm=1879jt0nj8ng3066tpe91bs1frm82c7u2
p%404ax.com>
 > (Du'r til Access, men vistnok ikke til MSSQL - som har nogle andre
 > indbyggede funktioner end Access).
 Så vidt jeg kan se, så er det for (Now), men hvad hvis jeg vil gemme en
 anden dato f.x "9 februar 2003", hvordan skal datoen så indsættes? og
 hvordan søges på den selv samme dato?
 --
 Mvh / Regards
 -=< Christian >=-
 What capital has 164 letters in its name? See my web page to find out.
 http://www.cmnielsen.dk     ICQ: 25308942
 Destiny is not a matter of chance it is a matter of choice
            
              |   |   
            
        
 
            
         
              Torben Brandt (03-02-2003) 
         
	
            | Kommentar Fra : Torben Brandt | 
  Dato :  03-02-03 23:20 |  
  |  
 
            Christian M. Nielsen wrote in dk.edb.internet.webdesign.serverside.asp:
 > Så vidt jeg kan se, så er det for (Now), men hvad hvis jeg vil gemme en 
 > anden dato f.x "9 februar 2003", hvordan skal datoen så indsættes? og 
 > hvordan søges på den selv samme dato? 
 Når du skal overføre en dato til databasen via SQL, så skal du ikke overføre en
 dato i et specielt _format_, men derimod overføre _værdierne_ i datoen (dag,
 måned, år).
 Indsættelse af datoen dtDate i en database:
 iDag = Day(dtDate)
 iMaaned = Month(dtDate)
 iAar = Year(dtDate)
 sSQL = "INSERT INTO Tabel (datoFelt) VALUES (DateSerial(" & iAar & ", " &
 iMaaned & ", " & iDag & "))"
 oConn.Execute(sSQL)
 Udtræk af poster med datoFelt = dtDate
 iDag = Day(dtDate)
 iMaaned = Month(dtDate)
 iAar = Year(dtDate)
 sSQL = "SELECT id FROM Tabel WHERE datoFelt = DateSerial(" & iAar & ", " &
 iMaaned & ", " & iDag & ")"
 oConn.Execute(sSQL)
 På denne måde vil der altså i SQL-strengen komme til at stå f.eks.:
 ...DateSerial(2002, 12, 31)...
 som giver datoen 31. dec. 2002.
 Da år altid kommer først, og derefter måned og dag, så kan databasen ikke tage
 fejl!
 Hvis man skal overføre et tidspunkt, så kan man bruge TimeSerial(...) og hvis
 man til overføre en dato og tid, kan man bruge DateSerial(...) +
 TimeSerial(...)
 Det kan godt se lidt besværligt ud i starten, men man slipper helt for alt der
 format-fnidder, som ellers kommer med datoer.
 Funktionerne DateSerial og TimeSerial findes også i ASP, så når du skal
 oversætte bruger-input (f.eks. fra en form) til ASP-datoer, så kan de også
 bruges.
 Husk også _aldrig_ at bruge CStr(dtDate) eller implicit konvertering
 Date->String. Brug i stedet DateTimeFormat eller Day, Month, Year,
 DatePart-funktionerne.
 På den måde er det dato-værdierne der er i centrum, og ikke formatet af datoen.
 Personligt bruger jeg aldrig "Session.LCID = 1030", for ved at bruge de
 funktioner, jeg har nævnt i dette indlæg, så afhænger koden slet ikke af
 format-indstillingerne.
 [Undtaget DateTimeFormat, men ved hjælp af fx DatePart kan man lave sin egen
 funktion af Dato -> dd/mm/åååå, som ikke afhænger for format-indstillingerne]
 mvh Torben
 -- 
 Danmarks største specialiserede IT jobdatabase
  - Udelukkende med IT- og internetrelaterede jobs
  - Opret en profil og lad drømmejobbet finde dig
 KLIK HER! =>  http://www.html.dk/job
            
             |   |   
            
        
 
            
         
              Jørn Andersen (05-02-2003) 
         
	
            | Kommentar Fra : Jørn Andersen | 
  Dato :  05-02-03 05:52 |  
  |  
 
            On Mon, 3 Feb 2003 22:45:53 +0100, "Christian M. Nielsen"
 <christian@(REMOVE)cmnielsen(DOT)dk> wrote:
 >"Jørn Andersen" <jorn@jorna.dk> wrote in message
 >news:jkun3v0b5ranltf7hi2cv8b05seq0sjdk2@4ax.com...
 >
 >> Prøv at bruge denne funktion:
 >> <url:
 >>
 > http://groups.google.com/groups?hl=da&selm=1879jt0nj8ng3066tpe91bs1frm82c7u2
>p%404ax.com>
 >> (Du'r til Access, men vistnok ikke til MSSQL - som har nogle andre
 >> indbyggede funktioner end Access).
 >
 >Så vidt jeg kan se, så er det for (Now)
 Det er rigtigt, at eksemplet er vist med Now (hvilket er lidt
 åndssvagt ... [1]), men du kan indsætte en hvilken som helst
 dato-/tid-værdi.
 Det eneste du skal sikre dig er, at datoen er korrekt i forhold til
 dit script, så vil funktionen sørge for, at overførslen til databasen
 sker korrekt.
 Jeg prøver lige at gennemgå, hvad der sker undervejs.
 Funktionen ser således ud:
 ' -- DateToSql start --
 Function DateToSql(Value)
   DateToSql = "DateSerial(" & Year(Value) & ", " & _
                               Month(Value) & ", " & _
                               Day(Value) & ") + " & _
               "TimeSerial(" & Hour(Value) &  ", " & _
                               Minute(Value) & ", " & _
                               Second(Value) & ")"
 End Function
 ' -- DateToSql slut --
 Din SQL-streng kunne så se ud som:
 strSql = "SELECT felt1, felt2 FROM tblTabel" & _
 " WHERE datofelt1 = " & DateToSql(minDatoTid)
 Hvis du så har en gyldig dato i dit ASP-script (minDatoTid), vil
 funktionen fx levere et resultat, som kunne se således ud:
 (Hvis minDatoTid er: 3 Feb 2003 22:45:53)
 DateToSql = "DateSerial(2003, 2, 3) + TimeSerial(22, 45, 53)"
 Din SQL-streng vil se således ud, når den fyres afsted mod databasen:
 strSql = "SELECT felt1, felt2 FROM tblTabel" & _
 " WHERE datofelt1 = " & _
 "DateSerial(2003, 2, 3) + TimeSerial(22, 45, 53)"
 Humlen er så, at DateSerial og TimeSerial-funktionerne foregår i
 Access. De er derfor uafhængige af dit script.
 Hvis serveren skifter sprog, så vil det ikke påvirke dit ASP-sites
 funktionalitet
 >men hvad hvis jeg vil gemme en
 >anden dato f.x "9 februar 2003", hvordan skal datoen så indsættes? og
 >hvordan søges på den selv samme dato?
 Du skal som nævnt bare sørge for, at din dato er en gyldig dato fra
 din formular. (Hvis det er dér du har den fra.)
 Det gøres sikrest bed at bruge Select-bokse i formularen frem for at
 lade folk skrive datoen. Hvis du fx ikke har brug for tiden, men kun
 datoen, og du har en select-boks for hhv. dayo, måned og år, så er der
 faktisk ikke nogen grund til at danne en genetlig dato ud fa disse
 værdier (medmindre det er for at checke om der er valgt rigtigt i f.t.
 28, 29, 30 31 dage i måneden).
 Så overfører du bare værdierne direkte:
 .... " WHERE datofelt1 = " & _
 "DateSerial(" & lngValgtAar & ", " & lngValgtMaaned & ", " & _
 lngValgtDag & ")"
 Håber det giver lidt mening.
 Måske er dit problem, at du tror det er nødvendigt at formattere
 datoen til en strengform: "9 februar 2003". Det kan jeg kun opfordre
 til at lade være med - hold så vidt muligt fat i de basale
 dato-/tid-værdier.
 [1] Ang. Now, så er der ingen grund til at overføre den fra Script til
 database. Man kan lige så godt bruge Now-funktionen i databasen:
 strSQL = "INSERT INTO tblTabel ([dato1]) VALUES (Now());"
 Ofte kan man helt undlade den, men blot sætte feltets default-værdi
 til Now i databasen.
 Good luck!
 -- 
 Jørn Andersen,
 Brønshøj
            
              |   |   
            
        
 
            
         
               Christian M. Nielsen (06-02-2003) 
         
	
            | Kommentar Fra : Christian M. Nielsen | 
  Dato :  06-02-03 17:08 |  
  |  
 
            Tak for forklaringerne.
 Jeg har tumlet lidt med det men jeg får en fejl i "date" delen. Jeg ved ikke
 hvad der går galt, men så vidt jeg kan se er vædierne korrekte ??
 Error Type:
 Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
 [Microsoft][ODBC Microsoft Access Driver] Syntax error in date in query
 expression '(((Kontaktes =#DateSerial(2003, 2, 6) #) OR ( KontaktesII
 =#DateSerial(2003, 2, 6) #))) AND ((Relation ='trs') or (RelationII
 ='trs'))'.
 Min strSQL ser således ud for søgning på dags dato
 strSQL = "SELECT Relation, RelationII, Kontaktes, kontaktesII, Firma,
 BrugerID FROM tblNewBizz WHERE (((Kontaktes =#"&DateToSql(Date)&"#) OR (
 KontaktesII =#"&DateToSql(Date)&"#))) AND ((Relation ='" &
 Session("BrugerID") &"') or (RelationII ='" & Session("BrugerID") &"'))
 ORDER BY Firma ASC"
 Jeg bruger denne funktion til DateToSql:
 ' -- DateToSql start --
 Function DateToSql(Value)
   DateToSql = "DateSerial(" & Year(Value) & ", " & _
                               Month(Value) & ", " & _
                               Day(Value) & ") "
 End Function
 ' -- DateToSql slut --
 datatypen for de felter i databasen der indeholder datoer er alle af typen
 "Dato og klokkeslæt"
 Jeg gerne vil undgå at bruge Select-bokse og i stedet for have et formfelt
 hvor dato indtates efter devisen dd/mm/yyyy. Når jeg ser på fejlmeddelelsen
 som er den samme som ovenstående, så er datoen oversat korrekt, fx giver
 29/10/2003  =    DateSerial(2003, 10, 29) så jeg vil holde fast i den model
 indtil videre, da det er mere overskueligt for brugbarheden.
 --
 Mvh / Regards
 -=< Christian >=-
 What capital has 164 letters in its name? See my web page to find out.
 http://www.cmnielsen.dk     ICQ: 25308942
 Destiny is not a matter of chance it is a matter of choice
            
              |   |   
            
        
 
            
         
                Jørn Andersen (06-02-2003) 
         
	
            | Kommentar Fra : Jørn Andersen | 
  Dato :  06-02-03 17:40 |  
  |   
            On Thu, 6 Feb 2003 17:07:45 +0100, "Christian M. Nielsen"
 <christian@(REMOVE)cmnielsen(DOT)dk> wrote:
 
 >Tak for forklaringerne.
 >
 >Jeg har tumlet lidt med det men jeg får en fejl i "date" delen. Jeg ved ikke
 >hvad der går galt, men så vidt jeg kan se er vædierne korrekte ??
 >
 >Error Type:
 >Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
 >[Microsoft][ODBC Microsoft Access Driver] Syntax error in date in query
 >expression '(((Kontaktes =#DateSerial(2003, 2, 6) #) OR ( KontaktesII
 >=#DateSerial(2003, 2, 6) #))) AND ((Relation ='trs') or (RelationII
 >='trs'))'.
 >
 >Min strSQL ser således ud for søgning på dags dato
 >
 >strSQL = "SELECT Relation, RelationII, Kontaktes, kontaktesII, Firma,
 >BrugerID FROM tblNewBizz WHERE (((Kontaktes =#"&DateToSql(Date)&"#) OR (
 >KontaktesII =#"&DateToSql(Date)&"#))) AND ((Relation ='" &
 >Session("BrugerID") &"') or (RelationII ='" & Session("BrugerID") &"'))
 >ORDER BY Firma ASC"
 
 Fjern #-tegnene!
 
 strSQL = "SELECT Relation, RelationII, Kontaktes, kontaktesII, Firma,
 BrugerID
 FROM tblNewBizz
 WHERE (((Kontaktes = " & DateToSql(Date) & ") OR (KontaktesII = " &
 DateToSql(Date) & "))) AND ((Relation ='" &
 Session("BrugerID") &"') or (RelationII ='" & Session("BrugerID")
 &"'))
 ORDER BY Firma ASC"
 
 - styr selv linieskiftene ... :)
 
 
 Good luck!
 
 -- 
 Jørn Andersen,
 Brønshøj
  
            
             |   |   
            
        
 
            
         
                 Christian M. Nielsen (06-02-2003) 
         
	
            | Kommentar Fra : Christian M. Nielsen | 
  Dato :  06-02-03 18:02 |  
  |  
 
            "Jørn Andersen" <jorn@jorna.dk> wrote in message
 news:5k354vskp2pt0l6r2es5m6so03qs516ekr@4ax.com...
 > Fjern #-tegnene!
 TAK, virker perfekt.
 Jeg er meget taknemlig for din og andres hjælp til dette. Det har været
 lærerigt.
 --
 Mvh / Regards
 -=< Christian >=-
 What capital has 164 letters in its name? See my web page to find out.
 http://www.cmnielsen.dk     ICQ: 25308942
 Destiny is not a matter of chance it is a matter of choice
            
              |   |   
            
        
 
            
         
           Jens Gyldenkærne Cla~ (02-02-2003) 
         
	
            | Kommentar Fra : Jens Gyldenkærne Cla~ | 
  Dato :  02-02-03 22:11 |  
  |  
 
            Jørn Andersen skrev:
 [Funktion til at levere datoer til databaser]
 > (Du'r til Access, men vistnok ikke til MSSQL
 Det er korrekt - MSSQL har hverken DateSerial eller TimeSerial.
 > - som har nogle andre indbyggede funktioner end Access).
 I MSSQL kan man benytte funktionen CONVERT, der tager tager tre
 parametre - et dataformat, en værdi og en formatkode. Onlinehjælpen
 til T-SQL viser mulighederne med CONVERT.
 -- 
 Jens Gyldenkærne Clausen
 Svar venligst under det du citerer, og citer kun det der er
 nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
 hvordan på  http://usenet.dk/netikette/citatteknik.html
            
             |   |   
            
        
 
            
         
           Jørn Andersen (31-01-2003) 
         
	
            | Kommentar Fra : Jørn Andersen | 
  Dato :  31-01-03 01:57 |  
  |   
            On Thu, 30 Jan 2003 20:34:49 +0100, "Christian M. Nielsen"
 <christian@(REMOVE)cmnielsen(DOT)dk> wrote:
 
 >Jeg starter min sub på denne måde
 >
 ><% Sub Show()
 > Session.LCID = 1030
 
 Hvorfor har du "Session.LCID = 1030" i din Sub i stedet for at have
 dne i toppen af siden?
 Jeg er ikke sikker på, om det gør en forskel - det undrede mig bare.
 
 -- 
 Jørn Andersen,
 Brønshøj
  
            
             |   |   
            
        
 
            
         
           Christian M. Nielsen (31-01-2003) 
         
	
            | Kommentar Fra : Christian M. Nielsen | 
  Dato :  31-01-03 06:39 |  
  |   
            
"Jørn Andersen" <jorn@jorna.dk> wrote in message
 news:8cij3v8de1vmrgnqj880pge2ljjetbjcpv@4ax.com...
 > On Thu, 30 Jan 2003 20:34:49 +0100, "Christian M. Nielsen"
 > <christian@(REMOVE)cmnielsen(DOT)dk> wrote:
 >
 > >Jeg starter min sub på denne måde
 > >
 > ><% Sub Show()
 > > Session.LCID = 1030
 >
 > Hvorfor har du "Session.LCID = 1030" i din Sub i stedet for at have
 > dne i toppen af siden?
 > Jeg er ikke sikker på, om det gør en forskel - det undrede mig bare.
 Det havde (har) jeg også, men det var for a være 100% sikker på at den kom
 med på den side der var problemer med.
 Tak for de andre svar, jeg ser på dem når jeg kommer hjem fra arbejde.
 God weekend til alle.
 --
 Mvh / Regards
 -=< Christian >=-
 What capital has 164 letters in its name? See my web page to find out.
 http://www.cmnielsen.dk     ICQ: 25308942
 Destiny is not a matter of chance it is a matter of choice
            
              |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |