Prijavite se pomoću Microsoft naloga
Prijavite se ili kreirajte nalog.
Zdravo,
Izaberite drugi nalog.
Imate više naloga
Odaberite nalog pomoću kojeg želite da se prijavite.

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 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 č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.

Da li su vam ove informacije koristile?

Koliko ste zadovoljni kvalitetom jezika?
Šta je uticalo na vaše iskustvo?
Kada kliknete na dugme Prosledi“, vaše povratne informacije će se koristiti za poboljšanje Microsoft proizvoda i usluga. Vaš IT administrator će moći da prikupi ove podatke. Izjava o privatnosti.

Hvala vam na povratnim informacijama!

×