Vpišite se z Microsoftovim
Vpišite se ali ustvarite račun.
Pozdravljeni,
Izberite drug račun.
Imate več računov
Izberite račun, s katerim se želite vpisati.

Vsebina TechKnowledge

Vprašanje: Koda VBA je bila napisana, ki primerja dve vrednosti valute. Spodaj je primer te kode:

If ccur(cost) > ccur(1000) then

Ko se izvede ta vrstica kode, povzroči sporočilo o napaki zaradi nezdružljivosti vrste podatkov ali vrste nezdružljivosti. Nastavitve Windows valut so trenutno določene kot angleške funti simbola za valutni simbol. Če simbol valute spremenim na »$«, se koda uspešno zažene. Kaj se zgodi tukaj in ali lahko to težavo odpravite na kakršen koli način?


Odgovor: V kodi VBA funkcija Ccur() pri vrednotenju tega polja vedno upošteva nastavitve valute na nadzorni plošči. Ker bo izvajanje programa Dynamics VBA vedno podedoval vrednosti polj kot nize, boste imeli to težavo vedno, ko bo ovrednotena vrednost valute, ki se ne ujema z nastavitvami valute v Windows.


V datoteki s pomočjo za VBA označuje, da je treba funkcije za pretvorbo podatkovnih tipov uporabiti namesto funkcije Val za zagotavljanje mednarodne seznanjenih pretvorb iz enega podatkovnega tipa v drugega. Ko na primer uporabite funkcijo CCur(), se ustrezno prepoznajo različna decimalna ločila, različna ločila za tisočice in različne možnosti valut, odvisno od območnih nastavitev računalnika.


Pri tem razumevanju upoštevajte to o delu s gp za Microsoft Dynamics:

  • Vrednost CCur("œ1000") je enaka neveljaven vrsti (tj. ta niz ni veljavna valuta), če nastavitev »valuta v valuti Windows« ni nastavljena na »funt«.

  • Če je argument »funt« nastavljen na »funt«, bo vrednost CCur("œ1000") vrnila vrednost 1000, vrednost CCur("1000 $") pa bo enaka napaki zaradi nevšečanega tipa.

Najboljši način za reševanje valut iz kode VBA je, da napišete funkcijo, ki bo pretvorila vse nize z neštevilskimi simboli pred številsko (ali valutno) vrednost. Na primer, tako:

If CurrencyValueFromDynField(cost) > ccur(1000) then

kjer je funkcija CurrencyValueFromDynField določena tako. Ta koda pravilno obravnava negativna števila, ki nadaljujejo ali končne znake minus, ki so obdana z oklepaji ali ki imajo presledke med simbolom valute in številko.

Public Function CurrencyValueFromDynField(FieldString As String) As Currency
Dim i As Integer
Dim TempChar, TempString As String

' Strip off all non-numeric characters
TempString = ""
For i = 1 To Len(FieldString)
TempChar = Mid(FieldString, i, 1)
If InStr("1234567890.,-()", TempChar) > 0 Then
TempString = TempString & TempChar
End If
Next
FieldString = TempString

' Return the numeric value of the string (as a currency data type )
CurrencyValueFromDynField = CCur(FieldString)
End Function

Ta članek je bil TechKnowledge DOCUMENT ID:10036

Ali potrebujete dodatno pomoč?

Ali želite več možnosti?

Raziščite ugodnosti naročnine, prebrskajte izobraževalne tečaje, preberite, kako zaščitite svojo napravo in še več.

Skupnosti vam pomagajo postaviti vprašanja in odgovoriti nanje, posredovati povratne informacije in prisluhniti strokovnjakom z bogatim znanjem.

Vam je bila informacija v pomoč?

Kako ste zadovoljni s kakovostjo jezika?
Kaj je vplivalo na vašo izkušnjo?
Če pritisnete »Pošlji«, bomo vaše povratne informacije uporabili za izboljšanje Microsoftovih izdelkov in storitev. Vaš skrbnik za IT bo lahko zbiral te podatke. Izjavi o zasebnosti.

Zahvaljujemo se vam za povratne informacije.

×