TechKnowledge Content

Pitanje: VBA kôd je napisan tako da poredi dve vrednosti valute. Prikazano u nastavku je primer ovog koda:

If ccur(cost) > ccur(1000) then

Kada se ovaj red koda izvrši, to uzrokuje poruku o grešci sa nekompatibilnošću tipa podataka ili tip greške tipa migracije. Postavke Windows valute trenutno su definisane kao simbol "funte" na engleskom jeziku za simbol valute. Ako promenim simbol valute u "$", kôd se uspešno pokreće. Šta se ovde dešava i da li postoji način da se zaobišlo ovaj problem? Odgovor: U VBA funkcija Ccur() uvek poštuje postavke valute kontrolne table prilikom procene ovog polja. Pošto dynamics VBA primena uvek prenosi vrednosti polja kao niske, na taj problem ćete u bilo kom trenutku biti procenjena vrednost valute koja se ne podudara sa postavkama valute u programu Windows.U VBA datoteci pomoći ona ukazuje na to da funkcije konverzije tipa podataka treba da se koriste umesto usluge Val za pružanje konverzija sa međunarodnog ili međunarodnog tipa podataka iz jednog tipa podataka u drugi. Na primer, kada koristite funkciju CCur(), različiti razdeljivači decimala, različiti razdeljivači hiljada i razne opcije valute ispravno se prepoznaju u zavisnosti od postavke lokalnog okruženja računara.U okviru ovog razumevanja, e-pojašnje o radu sa uslugom Microsoft Dynamics GP:

  • CCur("œ1000") će jednako tipu omašku (naplaćivanje ove niske nije važeća valuta) ako postavka Windows valute nije postavljena na vrednost "funta".

  • Ako je postavljena na vrednost "funta", CCur("œ1000") će vratiti vrednost 1000, a cCur("$1000") će biti jednaka grešci pogrešnog prodsprava tipa.

Najbolji način za rad sa valutama iz VBA bilo bi da napišete funkciju koja će konvertovati bilo koju nisku sa nenumeričkim simbolima ispred numeričke vrednosti (ili valute). Na primer, na ovaj primer:

If CurrencyValueFromDynField(cost) > ccur(1000) then

gde je funkcija pod imenom "CurrencyValueFromDynField" definisana na sledeći mestu. Ovaj kôd ispravno rukuje negativnim brojevima koji imaju znakove minus koji se nastavljaju ili na krajnju minus, koji su okruženi zagradama ili koji imaju razmake između simbola valute i broja.

Public Function CurrencyValueFromDynField(FieldString As String) As CurrencyDim i As IntegerDim TempChar, TempString As String' Strip off all non-numeric charactersTempString = ""For i = 1 To Len(FieldString)TempChar = Mid(FieldString, i, 1)If InStr("1234567890.,-()", TempChar) > 0 ThenTempString = TempString & TempCharEnd IfNextFieldString = TempString' Return the numeric value of the string (as a currency data type )CurrencyValueFromDynField = CCur(FieldString)End Function

Ovaj članak je techKnowledge Document ID:10036

Da li vam je potrebna dodatna pomoć?

Želite još opcija?

Istražite pogodnosti pretplate, pregledajte kurseve za obuku, saznajte kako da obezbedite uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na pitanja, dajete povratne informacije i čujete mišljenje od stručnjaka sa bogatim znanjem.