|
| 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
| |
|
|