|  | 		    
					
        
         
          
         
	
          | |  | SQL: CONVERT fejler på NT Fra : Snedker
 | 
 Dato :  23-06-02 15:21
 | 
 |  | I en Access database har jeg følgende sql-sætning:
 
 Select * From Book_Tmp WHERE Dato = CONVERT(DateTime, '20-06-2002',
 105)
 
 i forbindelse med åbning af et recordset (ADO).
 
 Dette virker fint på ME/XP. Men på en DK NT4 SP6a får jeg følgende
 fejl: "Syntax error converting datetime from character string".
 
 Det er en dansk NT med dansk opsætning. Nogle idéer?
 
 
 Med venlig hilsen
 Morten Snedker
 
 
 |  |  | 
  Snedker (23-06-2002) 
 
	
          | |  | Kommentar Fra : Snedker
 | 
 Dato :  23-06-02 20:06
 | 
 |  | On Sun, 23 Jun 2002 16:21:17 +0200, Snedker
 <morten@nospam_dbconsult.dk> wrote:
 
 For god ordens skyld:
 
 Der er tale om en MS SQL-server på en XP Prof (DK).
 SQL'en der fejler er i en access-applikation, når denne afvikles fra
 en Windows NT.
 
 mvh
 Morten Snedker
 
 
 |  |  | 
  Peter Lykkegaard (23-06-2002) 
 
	
          | |  | Kommentar Fra : Peter Lykkegaard
 | 
 Dato :  23-06-02 20:56
 | 
 |  | 
 "Snedker" <morten@nospam_dbconsult.dk> wrote in message
 news:7tlbhuo27ul05njken7nsico5tes6fft84@4ax.com...
 > I en Access database har jeg følgende sql-sætning:
 >
 > Select * From Book_Tmp WHERE Dato = CONVERT(DateTime, '20-06-2002',
 > 105)
 > i forbindelse med åbning af et recordset (ADO).
 >
 > Dette virker fint på ME/XP. Men på en DK NT4 SP6a får jeg følgende
 > fejl: "Syntax error converting datetime from character string".
 Hvilke options bruger som parametre?
 Kan det være date/time settings på klienten? (long shot)
 Fungerer din select via Query Designeren i Access
 Har du overvejet at bruge en SP    mvh/Peter Lykkegaard
            
             |  |  | 
  Snedker (23-06-2002) 
 
	
          | |  | Kommentar Fra : Snedker
 | 
 Dato :  23-06-02 22:39
 | 
 |  | 
 
            On Sun, 23 Jun 2002 21:56:24 +0200, "Peter Lykkegaard"
 <polonline@hotmail.com> wrote:
 >Hvilke options bruger som parametre?
 Ik' forstået...
 >Kan det være date/time settings på klienten? (long shot)
 Næh, det skulle undre mig. SQL'en fyres jo af og behandles af
 serveren...
 >Fungerer din select via Query Designeren i Access
 Ved det ikke. Det er en testmaskine...og derfor er Access ikke
 installeret på den.
 >Har du overvejet at bruge en SP    Næh - burde jeg det?    /Snedker
            
             |  |  | 
   Peter Lykkegaard (24-06-2002) 
 
	
          | |  | Kommentar Fra : Peter Lykkegaard
 | 
 Dato :  24-06-02 07:39
 | 
 |  | 
 "Snedker" <morten@nospam_dbconsult.dk> wrote in message
 news:mtfchukslkihrq07o306dr51ett54ffoil@4ax.com...
 > On Sun, 23 Jun 2002 21:56:24 +0200, "Peter Lykkegaard"
 > <polonline@hotmail.com> wrote:
 >
 > >Hvilke options bruger som parametre?
 > Ik' forstået...
 Bruger du Connection.Openrecordset eller Recordset.Open?
 Hvilke parametre bruger du på metoden
 >
 > >Har du overvejet at bruge en SP    > Næh - burde jeg det?    >
 Ja det burde jo virke uanset    mvh/Peter Lykkegaard
            
             |  |  | 
    Snedker (24-06-2002) 
 
	
          | |  | Kommentar Fra : Snedker
 | 
 Dato :  24-06-02 10:11
 | 
 |  | On Mon, 24 Jun 2002 08:38:31 +0200, "Peter Lykkegaard"
 <polonline@hot.mail.com> wrote:
 
 
 >> >Hvilke options bruger som parametre?
 >> Ik' forstået...
 >
 >Bruger du Connection.Openrecordset eller Recordset.Open?
 >Hvilke parametre bruger du på metoden
 
 With rs1
 .CursorLocation = adUseClient
 .CursorType = adOpenDynamic
 .LockType = adLockOptimistic
 .Open "Select * From Book_Tmp WHERE Dato = CONVERT(DateTime,
 '" & fOnAirDato & "', 105)", con
 End With
 
 
 ....ka' det monstro være den CursorLocation....? Naah...
 
 /Snedker
 
 
 |  |  | 
     Peter Lykkegaard (24-06-2002) 
 
	
          | |  | Kommentar Fra : Peter Lykkegaard
 | 
 Dato :  24-06-02 11:29
 | 
 |  | 
 "Snedker" <morten@nospam_dbconsult.dk> wrote in message
 news:gdodhukbq926udks73cd62srn0haq7i0b7@4ax.com...
 > On Mon, 24 Jun 2002 08:38:31 +0200, "Peter Lykkegaard"
 > <polonline@hot.mail.com> wrote:
 >
 >
 > >> >Hvilke options bruger som parametre?
 > >> Ik' forstået...
 > >
 > >Bruger du Connection.Openrecordset eller Recordset.Open?
 > >Hvilke parametre bruger du på metoden
 >
 >   With rs1
 >         .CursorLocation = adUseClient
 >         .CursorType = adOpenDynamic
 >         .LockType = adLockOptimistic
 >         .Open "Select * From Book_Tmp WHERE Dato = CONVERT(DateTime,
 > '" & fOnAirDato & "', 105)", con
 >     End With
 >
 >
 > ...ka' det monstro være den CursorLocation....? Naah...
 >
 Njahh, jeg tænkte på noget passthrough eller lign
 
 Hmm, det spiller bare på min WinNT 4 sp6a (US)/Acc2K (US)
 
 Har du prøvet at kører Profiler på MSSQL mens du arbejder med clienten
 Hvad præcist indeholder variablen fOnAirDato når den fejler?
 
 mvh/Peter Lykkegaard
 
 
 
 
 |  |  | 
     Nis Jorgensen (24-06-2002) 
 
	
          | |  | Kommentar Fra : Nis Jorgensen
 | 
 Dato :  24-06-02 12:02
 | 
 |  | On Mon, 24 Jun 2002 11:10:43 +0200, Snedker
 <morten@nospam_dbconsult.dk> wrote:
 
 >
 >  With rs1
 >        .CursorLocation = adUseClient
 >        .CursorType = adOpenDynamic
 >        .LockType = adLockOptimistic
 >        .Open "Select * From Book_Tmp WHERE Dato = CONVERT(DateTime,
 >'" & fOnAirDato & "', 105)", con
 >    End With
 
 Det ligner et datoformatteringsproblem. Jeg går ud fra at fOnAirDato
 er en DateTime - og hvordan den behandles i en strengkontekst er
 afhængigt af den maskine konverteringen udføres på - her lokalt.
 
 Jeg ville nok enten lave en explicit konvertering på den lokale
 maskine:
 
 ..Open "Select * From Book_Tmp WHERE Dato = " _
 & Format(fOnAirDato,"#mm/dd/yyyy#", con
 
 eller bruge en parametriseret query (sikkert overkill her).
 
 --
 Nis Jorgensen
 Amsterdam
 
 Please include only relevant quotes, and reply below the quoted text. Thanks
 
 
 |  |  | 
      Snedker (24-06-2002) 
 
	
          | |  | Kommentar Fra : Snedker
 | 
 Dato :  24-06-02 13:49
 | 
 |  | 
 
            On Mon, 24 Jun 2002 13:01:34 +0200, Nis Jorgensen <nis@dkik.dk> wrote:
 Jo, minsandten !    Select * From Book_Tmp WHERE Dato = '" & Format(fOnAirDato,
 "yyyy-mm-dd") & "'"
 virker efter hensigten. Det var en anden linie, der nu fejlede. Men så
 langt så godt.
 En select fra Query Analyzer viste posterne i formatet yyyy-mm-dd, så
 det prøvede jeg så - og det virker.
 Tak for hjælpen folkens.    /Snedker
            
             |  |  | 
       Snedker (24-06-2002) 
 
	
          | |  | Kommentar Fra : Snedker
 | 
 Dato :  24-06-02 15:25
 | 
 |  | On Mon, 24 Jun 2002 14:49:28 +0200, Snedker
 <morten@nospam_dbconsult.dk> wrote:
 
 ....omend det er lidt belastende at ændre alle CONVERT og i stedet
 benytte Format til yyyy-mm-dd...bare for NT's skyld...
 
 /Snedker
 
 
 |  |  | 
      Snedker (24-06-2002) 
 
	
          | |  | Kommentar Fra : Snedker
 | 
 Dato :  24-06-02 13:36
 | 
 |  | On Mon, 24 Jun 2002 13:01:34 +0200, Nis Jorgensen <nis@dkik.dk> wrote:
 
 
 >Jeg ville nok enten lave en explicit konvertering på den lokale
 >maskine:
 >
 >.Open "Select * From Book_Tmp WHERE Dato = " _
 > & Format(fOnAirDato,"#mm/dd/yyyy#", con
 
 fOnAirDato er en string-variabel. Men CDate er brugt inden den når
 frem til variablen.
 
 Dit ovenstående eksempel fejler på grund af havelågerne...
 
 En debug fra access-app:
 Select * From Book_Tmp WHERE Dato = CONVERT(DateTime, '20-06-2002',
 105)
 
 Copy fra Profiler:
 Select * From Book_Tmp WHERE Dato = CONVERT(DateTime, '20-06-2002',
 105)
 
 ....så de viser nøjagtig det samme.
 
 Det mærkelige er dog, at ovenstående SQL-sætning når frem til
 Profiler'en, selvom den fejler i applikationen....
 
 I det hele taget har jeg et HELVEDES bøvl med NT !
 
 
 |  |  | 
       Peter Lykkegaard (24-06-2002) 
 
	
          | |  | Kommentar Fra : Peter Lykkegaard
 | 
 Dato :  24-06-02 13:52
 | 
 |  | 
 "Snedker" <morten@nospam_dbconsult.dk> wrote in message
 news:ck3ehuc8d9livaucnsto14657i6m2c147r@4ax.com...
 > On Mon, 24 Jun 2002 13:01:34 +0200, Nis Jorgensen <nis@dkik.dk> wrote:
 >
 > En debug fra access-app:
 > Select * From Book_Tmp WHERE Dato = CONVERT(DateTime, '20-06-2002',
 > 105)
 >
 > Copy fra Profiler:
 > Select * From Book_Tmp WHERE Dato = CONVERT(DateTime, '20-06-2002',
 > 105)
 >
 > ...så de viser nøjagtig det samme.
 >
 > Det mærkelige er dog, at ovenstående SQL-sætning når frem til
 > Profiler'en, selvom den fejler i applikationen....
 >
 Njahh, profilerne tager din statement _før_ mssql eksekverer afaik
 Dvs også før Access fejler - eller skulle vi sige før mssql rapporterer en
 "fejl" til klienten (her access)
 > I det hele taget har jeg et HELVEDES bøvl med NT !
 Har du prøvet opstillingen på en Win2K US?
 Ellers, hvis det er Acc2K/MSSQL vi snakker om...
 så kan du maile en testopstilling til yours truly     mvh/Peter Lykkegaard
            
             |  |  | 
       Peter Lykkegaard (25-06-2002) 
 
	
          | |  | Kommentar Fra : Peter Lykkegaard
 | 
 Dato :  25-06-02 07:34
 | 
 |  | 
 "Snedker" <morten@nospam_dbconsult.dk> wrote in message
 news:ck3ehuc8d9livaucnsto14657i6m2c147r@4ax.com...
 > On Mon, 24 Jun 2002 13:01:34 +0200, Nis Jorgensen <nis@dkik.dk> wrote:
 >
 >
 > >Jeg ville nok enten lave en explicit konvertering på den lokale
 > >maskine:
 > >
 > >.Open "Select * From Book_Tmp WHERE Dato = " _
 > > & Format(fOnAirDato,"#mm/dd/yyyy#", con
 >
 > fOnAirDato er en string-variabel. Men CDate er brugt inden den når
 > frem til variablen.
 >
 Jeg ved godt at du er ved at omstrukturere lidt hist og pist
 Men hvad sker egentlig hvis du undlader CDate
 
 Jeg bruger den konstruktion med Convert i T-SQL masser af steder i mine
 applikationer
 Der er dog en lille tvist, jeg bruger typisk VBScript og variablen er derfor
 en Variant, men ellers er der ingen forskel på selve koden
 Jeg bruger dog udelukkende US på dato/tid på de maskiner hvor applikationen
 kører
 
 mvh/Peter Lykkegaard
 
 
 
 
 |  |  | 
        Snedker (25-06-2002) 
 
	
          | |  | Kommentar Fra : Snedker
 | 
 Dato :  25-06-02 10:06
 | 
 |  | 
 
            On Tue, 25 Jun 2002 08:33:50 +0200, "Peter Lykkegaard"
 <polonline@hot.mail.com> wrote:
 >Jeg ved godt at du er ved at omstrukturere lidt hist og pist
 >Men hvad sker egentlig hvis du undlader CDate
 Gør ikke nogen forskel. Alle steder i min kode (fire steder), hvor jeg
 benytter CONVERT, da fejler NT. No idea why.
 >Jeg bruger dog udelukkende US på dato/tid på de maskiner hvor applikationen
 >kører
 Jeg er i den mindre heldige situation, at det skal være uafhængig af
 systemets lande-opsætning. Har dog prøvet at sætte NT-maskinen op til
 US...fejlen kommer stadig. Jeg forstår ganske enkelt ikke hvorfor, men
 trøster mig med, at der er så mange ting i livet som ikke skal
 forklares.     /Snedker
            
             |  |  | 
         Stig Johansen (25-06-2002) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  25-06-02 15:02
 | 
 |  | 
 
            Snedker wrote:
 > On Tue, 25 Jun 2002 08:33:50 +0200, "Peter Lykkegaard"
 [snip]
 >Har dog prøvet at sætte NT-maskinen op til
 > US...fejlen kommer stadig. Jeg forstår ganske enkelt ikke hvorfor, men
 > trøster mig med, at der er så mange ting i livet som ikke skal
 > forklares.     Det er meget nemmere at bruge en parameteriseret query. 
 Datoer har et internt format, som er uafhængigt af opsætning af klient. 
 Bemærk her, at et program afviklet på serveren også er en klient.
 Alternativt, så brug iso formatet(eller tæt på) i stedet for access syntax.
 -- 
 Med venlig hilsen / Best regards
 Stig Johansen
 stig.johansen@udvikling.it.dk
 (remove dot dk)
            
             |  |  | 
      Snedker (24-06-2002) 
 
	
          | |  | Kommentar Fra : Snedker
 | 
 Dato :  24-06-02 13:42
 | 
 |  | On Mon, 24 Jun 2002 13:01:34 +0200, Nis Jorgensen <nis@dkik.dk> wrote:
 
 ..Open "Select * From Book_Tmp WHERE Dato = '" & Format(fOnAirDato,
 "yyyy-mm-dd") & "'", con
 
 virker også fint.....bare ikke på NT.
 
 
 |  |  | 
       Jens Gyldenkærne Cla~ (24-06-2002) 
 
	
          | |  | Kommentar Fra : Jens Gyldenkærne Cla~
 | 
 Dato :  24-06-02 13:50
 | 
 |  | 
 
            Snedker skrev:
 > .Open "Select * From Book_Tmp WHERE Dato = '" &
 > Format(fOnAirDato, "yyyy-mm-dd") & "'", con
 Lige et skud i tågen: Kan det være feltnavnet Dato der opfattes som 
 en funktion eller andet under NT? Du kan indklamme den med [] hvis 
 du vil afprøve det.
 -- 
 Jens Gyldenkærne Clausen
 MF (medlem af FIDUSO - www.fiduso.dk) I ovenstående tekst benyttes nyt komma.
            
             |  |  | 
        Peter Lykkegaard (24-06-2002) 
 
	
          | |  | Kommentar Fra : Peter Lykkegaard
 | 
 Dato :  24-06-02 14:06
 | 
 |  | 
 "Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
 news:Xns923796F86285Ejcdmfdk@193.88.15.213...
 > Snedker skrev:
 >
 > > .Open "Select * From Book_Tmp WHERE Dato = '" &
 > > Format(fOnAirDato, "yyyy-mm-dd") & "'", con
 >
 > Lige et skud i tågen: Kan det være feltnavnet Dato der opfattes som
 > en funktion eller andet under NT? Du kan indklamme den med [] hvis
 > du vil afprøve det.
 >
 njahh, sætningen virker ganske glimrende hvis man indrykker en konstant i
 stedet for variablen, så det er et andet sted fejlen opstår
 
 mvh/Peter Lykkegaard
 
 
 
 
 |  |  | 
 |  |