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

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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



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

Månedens bedste
Årets bedste
Sidste års bedste