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

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
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
newsrzb9w7k476ggyl@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




Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408191
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste