| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Kombinere dato og tid Fra : Skunsen | 
  Dato :  08-09-08 21:24 |  
  |  
 
            Hej!
 Jeg har en fotodagbog, hvor jeg registrerer dato og tid for
 indlæg (med mulighed for at redigere datoen) i hver sit felt via
 dateserial og timeserial i en MS Access database
 Jeg vil gerne kombinere felterne Dato og Tid til et felt med
 standarddatoformat, så jeg kan sortere på det.
 Kan det lade sig gøre?
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! =>  http://www.html.dk/tutorials
            
             |   |   
            
        
 
            
         
           Skunsen (08-09-2008) 
         
	
            | Kommentar Fra : Skunsen | 
  Dato :  08-09-08 22:10 |  
  |  
 
            Her er koden:
 <%
 '-- Date/TimeToSql start -- 
 Function DateToSql(Value) 
 DateToSql = "DateSerial(" & Year(Value) & ", " & _ 
 Month(Value) & ", " & _ 
 Day(Value) & ")" 
 End Function
 Function TimeToSql(Value) 
 TimeToSql = "TimeSerial(" & Hour(Value) & ", " & _
 Minute(Value) & ", " & _
 Second(Value) & ")" 
 End Function 
          ' -- DateTimeToSql slut --
    strSQL = "SELECT * FROM indhold"
    Set rsindhold = Conn.Execute (strSQL)
 Do while not rsindhold.eof
 DatDato = rsindhold("dato")
 'DatDato = DateToSQL(StrDato)
 DatTid = rsindhold("tid")
 'DatTid = TimeToSQL(StrTid)
 strID = rsindhold("indhold_ID")
 DatDatoTid = DatDato + DatTid
    strSQL2 = "Update indhold set "
    strSQL2 = strSQL2 & "datotitel= " & DatDatoTid & " "
    strSQL2 = strSQL2 & "Where indhold_ID = " & strID & ""
    conn.execute(strSQL2)
 rsindhold.movenext
 loop
 %>
 ... og denne fejlmeddelelse
 Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 
 [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing
 operator) in query expression '25-05-2007 13:02:00'. 
 /maj07/test.asp, line 35
 På forhånd tak
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! =>  http://www.html.dk/tutorials
            
             |   |   
            
        
 
            
         
           Jørn Andersen (09-09-2008) 
         
	
            | Kommentar Fra : Jørn Andersen | 
  Dato :  09-09-08 16:25 |  
  |   
            On 08 Sep 2008 21:09:47 GMT, Skunsen <skunsen@gmail.com> wrote:
 
 >DatDatoTid = DatDato + DatTid
 
 Hertil er det vist OK. Men du har brug for at omfrme din dato-tid-værdi
 til noget forståeligt SQL. Du kan fx bruge funktionen her:
 
 Function DateToSql(Value)
   DateToSql = "DateSerial(" & Year(Value) & ", " & _
                           Month(Value) & ", " & _
                           Day(Value) & ") + " & _
               "TimeSerial(" & Hour(Value) &  ", " & _
                           Minute(Value) & ", " & _
                           Second(Value) & ")"
 End Function 
 
 strSqlDatDatoTid = DateToSql(DatDatoTid)
 
 strSQL2 = "UPDATE indhold SET " & _
 " datotitel= " & strSqlDatDatoTid & _
 " WHERE indhold_ID = " & strID
 
 conn.execute(strSQL2)
 
 
 Good luck!
 
 -- 
 Jørn Andersen,
 Brønshøj
  
            
             |   |   
            
        
 
            
         
            Skunsen (09-09-2008) 
         
	
            | Kommentar Fra : Skunsen | 
  Dato :  09-09-08 21:33 |  
  |  
 
            > >DatDatoTid = DatDato + DatTid 
 >  
 > Hertil er det vist OK. Men du har brug for at omfrme din dato-tid-værdi 
 > til noget forståeligt SQL. Du kan fx bruge funktionen her: 
 >  
 > Function DateToSql(Value) 
 >   DateToSql = "DateSerial(" & Year(Value) & ", " & _ 
 >                           Month(Value) & ", " & _ 
 >                           Day(Value) & ") + " & _ 
 >               "TimeSerial(" & Hour(Value) &  ", " & _ 
 >                           Minute(Value) & ", " & _ 
 >                           Second(Value) & ")" 
 > End Function  
 >  
 > strSqlDatDatoTid = DateToSql(DatDatoTid) 
 >  
 > strSQL2 = "UPDATE indhold SET " & _ 
 > " datotitel= " & strSqlDatDatoTid & _ 
 > " WHERE indhold_ID = " & strID 
 >
 > conn.execute(strSQL2) 
 Det giver følgende fejl:
 Microsoft OLE DB Provider for ODBC Drivers error '80040e10' 
 [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. 
 på linien med conn.execute(strSQL2) 
 Jeg har ændret linien " WHERE indhold_ID = " & strID 
 til " WHERE indhold_ID = " & strID & ""
 men får samme fejl
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! =>  http://www.html.dk/tutorials
            
             |   |   
            
        
 
            
         
             Skunsen (09-09-2008) 
         
	
            | Kommentar Fra : Skunsen | 
  Dato :  09-09-08 21:47 |  
  |  
 
            > > > DatDatoTid = DatDato + DatTid 
 > >
 > > Function DateToSql(Value)  
 > >   DateToSql = "DateSerial(" & Year(Value) & ", " & _  
 > >                           Month(Value) & ", " & _  
 > >                           Day(Value) & ") + " & _  
 > >               "TimeSerial(" & Hour(Value) &  ", " & _  
 > >                           Minute(Value) & ", " & _  
 > >                           Second(Value) & ")"  
 > > End Function   
 > >   
 > > strSqlDatDatoTid = DateToSql(DatDatoTid)  
 > >   
 > > strSQL2 = "UPDATE indhold SET " & _  
 > > " datotitel= " & strSqlDatDatoTid & _  
 > > " WHERE indhold_ID = " & strID  
 > > 
 > > conn.execute(strSQL2)  
 >
 > Jeg har ændret linien " WHERE indhold_ID = " & strID  
 > til " WHERE indhold_ID = " & strID & "" 
 >  
 > men får samme fejl 
 Hvis jeg udskriver StrQL2 får jeg følgende:
 UPDATE indhold SET datotitel= DateSerial(2007, 5, 25) + TimeSerial(13, 2, 0)
 WHERE indhold_ID = 1 
 Der er en post i tabellen indhold med indhold_ID = 1
 og feltet i databasen står til dato/tid
 Hvis jeg prøver følgende
 if isdate(StrSQLDatoTid) = true then
 response.write("True")
 else
 response.write("False")
 end if
 response.end
 bliver resultatet False
 Hvis jeg prøver det samme på DatDatoTid (istedet for StrSQLDatoTid)
 bliver resultatet True
 SUK :o/
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! =>  http://www.html.dk/tutorials
            
             |   |   
            
        
 
            
         
              Jørn Andersen (09-09-2008) 
         
	
            | Kommentar Fra : Jørn Andersen | 
  Dato :  09-09-08 22:25 |  
  |  
 
            On 09 Sep 2008 20:46:37 GMT, Skunsen <skunsen@gmail.com> wrote:
 >Hvis jeg udskriver StrQL2 får jeg følgende:
 >UPDATE indhold SET datotitel= DateSerial(2007, 5, 25) + TimeSerial(13, 2, 0)
 >WHERE indhold_ID = 1 
 Ser rigtigt ud.
 >Der er en post i tabellen indhold med indhold_ID = 1
 - og indhold_ID er et tal-felt?
 >og feltet i databasen står til dato/tid
 >
 >Hvis jeg prøver følgende
 >
 >if isdate(StrSQLDatoTid) = true then
 >response.write("True")
 >else
 >response.write("False")
 >end if
 >response.end
 >
 >bliver resultatet False
 Skal det også.
 "DateSerial(2007, 5, 25) + TimeSerial(13, 2, 0)" er en streng, som ikke
 (uden videre) kan blive til en dato.
 >Hvis jeg prøver det samme på DatDatoTid (istedet for StrSQLDatoTid)
 >bliver resultatet True
 Korrekt - datDatoTid er en dato.
 >SUK :o/
 Et skud i tågen: Jeg har ikke styr på reserverede ord i Access (fx
 indhold -?). Du kunne prøve at sætte alle feltnavne i
 firkant-paranteser:
 UPDATE [indhold] SET [datotitel] = ...
 WHERE [indhold_ID] = 1 
 Et nyttigt link: Hvis du vil have hjælp til fejlnumre, så prøv:
 <url:  http://www.aspfaq.com/>
- bare copy-paste nummeret ind i søgefeltet.
 Good luck!
 -- 
 Jørn Andersen,
 Brønshøj
            
              |   |   
            
        
 
            
         
             Jørn Andersen (09-09-2008) 
         
	
            | Kommentar Fra : Jørn Andersen | 
  Dato :  09-09-08 22:04 |  
  |   
            On 09 Sep 2008 20:32:34 GMT, Skunsen <skunsen@gmail.com> wrote:
 
 >> strSqlDatDatoTid = DateToSql(DatDatoTid) 
 >>  
 >> strSQL2 = "UPDATE indhold SET " & _ 
 >> " datotitel= " & strSqlDatDatoTid & _ 
 >> " WHERE indhold_ID = " & strID 
 >>
 >> conn.execute(strSQL2) 
 >
 >Det giver følgende fejl:
 >Microsoft OLE DB Provider for ODBC Drivers error '80040e10' 
 >[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. 
 >
 >på linien med conn.execute(strSQL2) 
 >
 >Jeg har ændret linien " WHERE indhold_ID = " & strID 
 >til " WHERE indhold_ID = " & strID & ""
 >
 >men får samme fejl
 
 1) Prøv at udskrive SQL-strengen ved at indsætte:
 Response.Write strSQL2
 Response.End
 - *før*:
 conn.execute(strSQL2)
 
 2) Er du sikker på, at der er dato/tid-værdier for alle poster?
 
 3) Da det er en Access-database, så er det måske lettere bare at
 downloade den og så lave kombinationen af de to felter direkte i
 databasen - ?
 (Du har jo ikke brug for adskilte felter fremover, så det er vel en
 éngangs-foreteelse ...)
 
 Good luck!
 
 -- 
 Jørn Andersen,
 Brønshøj
  
            
             |   |   
            
        
 
            
         
              Skunsen (09-09-2008) 
         
	
            | Kommentar Fra : Skunsen | 
  Dato :  09-09-08 22:19 |  
  |  
 
            > >> strSQL2 = "UPDATE indhold SET " & _  
 > >> " datotitel= " & strSqlDatDatoTid & _  
 > >> " WHERE indhold_ID = " & strID  & " "
 Jeg lavede StrID = Cint(StrID)
 og fik igen en fejlmeddelelse med too few parameters expected 1
 Så kiggede jeg nærmere på koden og nu sidder jeg så med røde ører!!!
 datotitel skulle have været datotid! :o/
 Så nu virker det   
Tusind tak for hjælpen
 Jeg blev en del klogere!!!
 Her er den færdige kode, der virker hvis der skulle være andre med lignende
 problem   
<% 
 '-- Date/TimeToSql start -- 
 Function DateToSql(Value) 
 DateToSql = "DateSerial(" & Year(Value) & ", " & _ 
 Month(Value) & ", " & _ 
 Day(Value) & ") + " & _ 
 "TimeSerial(" & Hour(Value) & ", " & _ 
 Minute(Value) & ", " & _ 
 Second(Value) & ")" 
 End Function 
 ' -- DateTimeToSql slut -- 
 strSQL = "SELECT * FROM indhold" 
 Set rsindhold = Conn.Execute (strSQL) 
 Do while not rsindhold.eof 
 DatDato = rsindhold("dato") 
 DatTid = rsindhold("tid") 
 strID = rsindhold("indhold_ID")
 indholdID = Cint(strID) 
 datDatoTid = DatDato + DatTid
 StrSQLDatoTid = DateToSql(DatDatoTid)
 strSQL2 = "UPDATE indhold SET " & _ 
 " datotid= " & StrSQLDatoTid & _ 
 " WHERE indhold_ID = " & indholdID & " "
 conn.execute(strSQL2) 
 rsindhold.movenext 
 loop 
 %> 
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! =>  http://www.html.dk/tutorials
            
             |   |   
            
        
 
            
         
               Jørn Andersen (09-09-2008) 
         
	
            | Kommentar Fra : Jørn Andersen | 
  Dato :  09-09-08 22:28 |  
  |  
 
            On 09 Sep 2008 21:18:39 GMT, Skunsen <skunsen@gmail.com> wrote:
 >Jeg lavede StrID = Cint(StrID)
 >og fik igen en fejlmeddelelse med too few parameters expected 1
 >
 >Så kiggede jeg nærmere på koden og nu sidder jeg så med røde ører!!!
 >
 >datotitel skulle have været datotid! :o/
 Passer meget godt med fejlkoden:
 This error is due to one of the following things: 
 1. A field name was spelled incorrectly.
 2. One or more of the values was blank.
 3. You tried to insert the wrong datatype (e.g. surrounded a numeric
 value with quotes, or forgot to put quotes around a string).
 <url:
 http://tutorials.aspfaq.com/8000xxxxx-errors/why-do-i-get-80040e10-errors.html>
Mvh. Jørn
 -- 
 Jørn Andersen,
 Brønshøj
            
              |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |