|
| Single i VB6-SQL Fra : Jens Vestergaard |
Dato : 28-11-03 08:53 |
|
En gang imellem kobler min hjerne ud - mere og mere med tiden, syn's jeg...
;-()
Altså: jeg har en single-variable, km, som jeg vil indsætte i en SQL-sætning
(Access-database)
Dim uSQL As String
Dim km as Single
km = 150.6
uSQL = "UPDATE tbMat SET kmKoert = kmKoert + " & km & " WHERE....."
db.Execute uSQL
men da min locale er dansk, udskrives km som 150,6 - hvorefter der er
syntaxfejl i SQL-sætningen. Med datoer løser #...# locale-problemet, men
hvordan er det liiiiige med kommaet?
Jeg har en fornemmelse af, at jeg godt ved, hvordan det skal klares... men
som sagt, min hjerne står lige stille et øjeblik.. (Jeg har lige lavet en
hurtig løsning med Replace-funktionen, men det kan da ikke være det
rigtige..??)
--
mvh
Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
www.railsoft.dk
Døgnets jernbanenyheder: www.railsoft.dk/medier.asp
| |
Gert Krabsen (28-11-2003)
| Kommentar Fra : Gert Krabsen |
Dato : 28-11-03 09:31 |
|
Fri, 28 Nov 2003 08:53:19 +0100, Jens Vestergaard <j@railsoft.dk> skrev:
> En gang imellem kobler min hjerne ud - mere og mere med tiden, syn's
> jeg...
> ;-()
>
> Altså: jeg har en single-variable, km, som jeg vil indsætte i en SQL-
> sætning
> (Access-database)
>
> Dim uSQL As String
> Dim km as Single
> km = 150.6
> uSQL = "UPDATE tbMat SET kmKoert = kmKoert + " & km & " WHERE....."
> db.Execute uSQL
>
> men da min locale er dansk, udskrives km som 150,6 - hvorefter der er
> syntaxfejl i SQL-sætningen. Med datoer løser #...# locale-problemet, men
> hvordan er det liiiiige med kommaet?
>
> Jeg har en fornemmelse af, at jeg godt ved, hvordan det skal klares...
> men
> som sagt, min hjerne står lige stille et øjeblik.. (Jeg har lige lavet en
> hurtig løsning med Replace-funktionen, men det kan da ikke være det
> rigtige..??)
Jo, det kan det nu godt - dem har jeg en del af spredt rundt i koden -
decimaltegn burde være forbudt ved lov
Tilbage til spørgsmålet. Har du prøvet
> uSQL = "UPDATE tbMat SET kmKoert = kmKoert + '" & km & "' WHERE....."
den plejer at virke hos mig. Mest brugt på Double, men det er vel
ligegyldigt..
Jeg har et eksempel, hvis det bliver nødvendigt..
mvh
Krabsen
--
Sendt via Opera.
www.krabsen.dk
www.responsnord.dk
mfl
| |
Jens Vestergaard (28-11-2003)
| Kommentar Fra : Jens Vestergaard |
Dato : 28-11-03 09:45 |
|
"Gert Krabsen" <krabsen@krabsenfjernes.dk> skrev i en meddelelse
news rzb9w7k476ggyl@news.sunsite.auc.dk...
> Fri, 28 Nov 2003 08:53:19 +0100, Jens Vestergaard <j@railsoft.dk> skrev:
> > uSQL = "UPDATE tbMat SET kmKoert = kmKoert + " & km & " WHERE....."
> > db.Execute uSQL
> > men da min locale er dansk, udskrives km som 150,6 - hvorefter der er
> > syntaxfejl i SQL-sætningen. Med datoer løser #...# locale-problemet, men
> > hvordan er det liiiiige med kommaet?
> Har du prøvet
> uSQL = "UPDATE tbMat SET kmKoert = kmKoert + '" & km & "' WHERE....."
Det ser f.g.m. ud til at virke... men at sætte citationstegn udenom et TAL
for at få VB til at opfatte det som....et TAL - det var sgu ikke faldet mig
ind, det må jeg indrømme. Selv efter 10 år med VB (eller hvornår ver. 2 nu
kom på gaden) ....
Man takker som sædvanlig ydmygst!
--
mvh
Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
www.railsoft.dk
Døgnets jernbanenyheder: www.railsoft.dk/medier.asp
| |
Tomas Christiansen (29-11-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 29-11-03 22:47 |
|
Jens Vestergaard skrev:
> > > uSQL = "UPDATE tbMat SET kmKoert = kmKoert + " & km & " WHERE....."
Ja, når du selv lader VB om konverteringen fra Single til String, så vælger
VB den nationalitetslokaliserede version.
> > uSQL = "UPDATE tbMat SET kmKoert = kmKoert + '" & km & "' WHERE....."
Metoden med at sætte tallet mellem apostroffer, som i SQL har samme
betydning som anførselstegn har i VB, forudsætter vel at SQL-fortolkeren er
klar over hvilken national standard ens program benytter? Jeg ser flere
muligheder for fejlkilder.
Kunne man ikke blot bruge Str eksplicit, som implicit har den betydning, at
der skal benyttes amerikansk standard for decimalkomma?
uSQL = "UPDATE tbMat SET kmKoert = kmKoert + " & Str(km) & " WHERE....."
-------
Tomas
| |
Jens Vestergaard (29-11-2003)
| Kommentar Fra : Jens Vestergaard |
Dato : 29-11-03 23:28 |
|
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> skrev i en meddelelse
news:bqb42m$2ngv$1@news.cybercity.dk...
> Jens Vestergaard skrev:
> > > > uSQL = "UPDATE tbMat SET kmKoert = kmKoert + " & km & " WHERE....."
>
> Ja, når du selv lader VB om konverteringen fra Single til String, så
vælger
> VB den nationalitetslokaliserede version.
>
> Kunne man ikke blot bruge Str eksplicit, som implicit har den betydning,
at
> der skal benyttes amerikansk standard for decimalkomma?
>
> uSQL = "UPDATE tbMat SET kmKoert = kmKoert + " & Str(km) & " WHERE....."
Jow, det virker (også) fint. Takker - men jeg skal fortsat blankt erkende,
at det er nyt for mig at skulle konvertere et tal til en streng for at få
det opfattet som et tal.
Der er heller ikke voldsomt meget hjælp at hente i Hjælp, som jeg synes
modsiger sig selv lidt under 'Str Function'. Der står ganske vist et afsnit
om decimaltegn, men der står også, at tallet i funktionen skal være en
Long - og så kan der jo ikke være decimaler.... Oder?
Nå - livet er fuld af den slags...
--
mvh
Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
www.railsoft.dk
Døgnets jernbanenyheder: www.railsoft.dk/medier.asp
>
> -------
> Tomas
>
| |
Tomas Christiansen (29-11-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 29-11-03 23:39 |
|
Jens Vestergaard skrev:
> > uSQL = "UPDATE tbMat SET kmKoert = kmKoert + " & Str(km) & " WHERE....."
>
> Jow, det virker (også) fint. Takker - men jeg skal fortsat blankt erkende,
> at det er nyt for mig at skulle konvertere et tal til en streng for at få
> det opfattet som et tal.
Hmm. Du bruger da ellers &, og & betyder i VB streng-konkatenering, hvilket
jo altså medfører en tvungen konvertering til streng af alt hvad der ikke er
strenge. Modsat + som kigger på argumenterne og enten foretager en heltals-
eller kommatals-addition, en streng-konkatenering eller giver en fejl (hvis
typerne ikke er forenelige).
> Der er heller ikke voldsomt meget hjælp at hente i Hjælp, som jeg synes
> modsiger sig selv lidt under 'Str Function'. Der står ganske vist et
afsnit
> om decimaltegn, men der står også, at tallet i funktionen skal være en
> Long - og så kan der jo ikke være decimaler.... Oder?
Der er helt klart fejl i dokumentationen, men tag et kig på eksemplerne. Så
er man ikke i tvivl om at Str tager kommatal!
> Nå - livet er fuld af den slags...
Ak, ja... Jeg tror aldrig at EDB-folk (nå, ja, det hedder jo IT nu) bliver
arbejdsløse. Dertil begås alt for mange fejl, som andre kan leve af at rette
op op!
-------
Tomas
| |
Niels Henriksen (01-12-2003)
| Kommentar Fra : Niels Henriksen |
Dato : 01-12-03 11:01 |
|
Det jeg foretrækker at gøre både med kommatal og datoer, er at jeg laver dem
om til alm. tal.
Med beløb har jeg dem i øre i min database og datoer laver jeg om så de
hedder yyyymmdd. Derefter kan jeg behandle dem som rigtige tal og de bliver
sorteret rigtigt.
--
Niels Henriksen
www.bigtiger.dk - det vildeste webhotel
| |
Tomas Christiansen (01-12-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 01-12-03 21:28 |
|
Niels Henriksen skrev:
> Det jeg foretrækker at gøre både med kommatal og datoer, er at jeg laver
dem
> om til alm. tal.
Jo, men så mister du nogle af de helt unikke muligheder, som du har for at
få ting behandlet datoer "inde i maven" på din database-server.
Hvis f.eks. at du ønsker at lægge 1 måned til alle datoer indenfor et
bestemt interval, bliver det noget mere besværligt.
Dine muligheder for at lave "constraints" på datoer, bliver formentlig også
noget begrænset (afhænger lidt af hvordan constraints implementeres i den
pågældende database).
-------
Tomas
| |
|
|