Prijavite se pomoću Microsofta
Prijavi se ili izradi račun.
Zdravo,
Odaberite drugi račun.
Imate više računa
Odaberite račun putem kojeg se želite prijaviti.

TechKnowledge Content

Pitanje: napisan je VBA kod koji uspoređuje dvije valutne vrijednosti. U nastavku je prikazan primjer ovog koda:

If ccur(cost) > ccur(1000) then

Kada se taj redak koda izvrši, uzrokuje poruku o pogrešci vrste neusklađenost vrste podataka ili vrstu neusklađenosti. Postavke Windows trenutno su definirane kao simbol engleske "funte" za simbol valute. Ako simbol valute promijenim u "$", kod se uspješno pokreće. Što se ovdje događa i postoji li način za rješavanje tog problema?


Odgovor: u vba funkciji Ccur() prilikom procjene tog polja uvijek poštuje postavke valute upravljačke ploče. Budući da će implementacija vba sustava Dynamics uvijek proslijediti vrijednosti polja kao nizove, taj ćete problem imati svaki put kada se procijeni vrijednost valute koja ne odgovara postavkama valute u Windows.


U VBA datoteci pomoći upućuje na to da se umjesto vala koriste funkcije pretvorbe vrste podataka radi pružanja međunarodno svjesnih pretvorbi iz jedne vrste podataka u drugu. Kada, primjerice, koristite funkciju CCur(), različiti decimalni razdjelnici, različiti razdjelnici tisućica i razne mogućnosti valute pravilno se prepoznaju ovisno o postavkama regionalne regionalne postavke računala.


U ovom razumijevanju imajte na umu da se radi o radu sa sustavom Microsoft Dynamics GP:

  • CCur("œ1000") jednak je neusklađenost vrste (npr. taj niz nije valjana valuta) ako postavka Windows Currency nije postavljena na "funta".

  • Ako je postavljen na "pound" (funta), CCur("œ1000") vratit će vrijednost od 1000, ali će CCur("$1000") biti jednak pogrešci u neusklađenju vrste.

Najbolji način za rješavanje problema s valutama iz VBA-a bio bi pisanje funkcije koja će pretvoriti bilo koji niz s nebrojčanim simbolima ispred brojčane (ili valutne) vrijednosti. Na primjer, ovako:

If CurrencyValueFromDynField(cost) > ccur(1000) then

gdje je funkcija pod nazivom CurrencyValueFromDynField definirana na sljedeći način. Ovaj kod pravilno rukuje negativnim brojevima koji imaju znakove minus ili koji se nastavljaju, koji su okruženi zagradama ili koji imaju razmake između simbola valute i broja.

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

Ovaj je članak bio TECHKnowledge DOCUMENT ID:10036

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.

Jesu li vam ove informacije bile korisne?

Koliko ste zadovoljni jezičnom kvalitetom?
Što je utjecalo na vaše iskustvo?
Ako pritisnete Pošalji, vaše će se povratne informacije iskoristiti za poboljšanje Microsoftovih proizvoda i usluga. Vaš će IT administrator moći prikupiti te podatke. Izjava o zaštiti privatnosti.

Hvala vam na povratnim informacijama!

×