Jag har en databas som bl.a. innehåller ett fält som innehåller numeriska värden, t.ex. "1.2", "2.5", "2.9" osv. vba har replace-kommandot, det borde du kunna använda Vad jag egentligen letar efter, är ett formateringsuttryck som alltid ger mig data på ett visst sätt. Man kan ju faktiskt ange att tal skall separeras av t.ex. "1<2", då fungerar ju inte REPLACE. >Jag har en databas som bl.a. innehåller ett fält som innehåller numeriska värden, t.ex. "1.2", "2.5", "2.9" osv. Fältet i databasen är ett textfält. Beroende på inställningen i kontrollpanelen/nationella inställningar får jag olika värden när jag gör en SELECT, i SWE-fallet får jag 2.5 (d.v.s. två och en halv) och i ENG-fallet får jag 2,5 (d.v.s. 25). Varför ändrar du inte till ett numeriskt fält? Då slipper du problem med att talen tolkas olika. >Fältet i databasen är ett textfält. Beroende på inställningen i kontrollpanelen/nationella inställningarNationell formattering
Problemet är att när jag ber användare i andra länder, som har nationella inställningar satt till "Engelska (USA)", så innehåller databasen istället "1,2", "2,5", "2,9" osv.
Frågan är nu hur jag hämtar fältet till min VBA-applikation så att datan alltid formateras som "1.2", "2,5", "2.9" osv.
(Idag gör jag "SELECT fld FROM tbl)
Hoppas någon förstår mitt problem och kan hjälpa mig!!
/MiZSv: Nationell formattering
SELECT convert(fld,",",".") as fld FROM tblSv: Nationell formattering
/MiZSv: Nationell formattering
Du motsäger dig själv. Är det ett numeriskt fält eller ett textfält i databasen?
Beroende på vilket det är så måste du konvertera i olika rikningar.
1. Det är ett numeriskt fält i databasen.
Det du skall göra är att se till att värdet som hämtas från databasen inte konverteras till text.
Detta gör du genom att stoppa in det i en variabel av rätt typ
Double x
x = databas!fält
Se också upp med implicit konvertering till text som i 'MsgBox "Fältets värde :" & databas!fält'
2. Det är ett textfält i databasen.
Det du skall göra är att se till att värdet alltid sparas i samma format oavsett vilka inställningar användaren har. Detta gör du genom att alltid göra explicita konverteringar till/från sträng med hjälp av Val & Str.
t.ex.
Double x
databas!fält = Str(x)
och åt andra hållet
x = Val(databas!fält)Sv: Nationell formattering
Blir inte riktigt klok på detta!!Sv: Nationell formattering
/JohanSv: Nationell formattering
>får jag olika värden när jag gör en SELECT, i SWE-fallet får jag 2.5 (d.v.s. två och en halv) och i ENG
>fallet får jag 2,5 (d.v.s. 25).
Som jag sa tidigare, om du använder textfält för att spara numeriska värden måste du använda Str (vid skrivning) och Val (för läsning) för att se till att det fungerar med alla språkinställningar.