Bejelentkezés Microsoft-fiókkal
Jelentkezzen be, vagy hozzon létre egy fiókot.
Üdvözöljük!
Válasszon másik fiókot.
Több fiókja van
Válassza ki a bejelentkezéshez használni kívánt fiókot.

TechKnowledge Content

Kérdés: A VBA-kód két pénznemértéket hasonlít össze. Az alábbi képen egy példa látható erre a kódra:

If ccur(cost) > ccur(1000) then

Amikor a program végrehajtja ezt a kódsort, az adattípus-inkompatibilitást vagy típuselomlást okozó hibaüzenetet okoz. A Windows pénznem jelenleg angol "font" szimbólumként van definiálva a pénznemszimbólumhoz. Ha a pénznemszimbólumát "$" jelre módosítom, a kód sikeresen lefut. Mi történik itt, és van valamilyen módszer a probléma megoldására?


Válasz: A VBA-ban a Ccur() függvény mindig figyelembe veszi a Vezérlőpult pénznembeállítását a mező értékelésekor. Mivel a Dynamics VBA-implement minden esetben karakterláncokként adja át a mezőértékeket, ez a probléma bármikor meg fog egy olyan pénznemértéket kiértékelni, amely nem felel meg a helyi Windows.


A VBA-súgófájlban az jelzi, hogy a Val függvény helyett az adattípus-konverziós függvényeket kell használni a nemzetközi szinten is jól ható konverziókhoz az egyik adattípusról a másikra. A CCur() függvény használata esetén például a különböző tizedeselválasztók, ezresválasztók és pénznem-beállítások felismerése a számítógép területi beállításaitól függően megfelelő.


Ebben a témakörben a Microsoft Dynamics GP alkalmazással kapcsolatos tudnivalókat jegyezze fel:

  • A CCur("œ1000") típuseltérés (azaz ez a karakterlánc nem érvényes pénznem), ha a Windows Pénznem beállítás nincs "font" értékűre állítva.

  • Ha a "font" értéket adja meg, akkor a CCur("ã1000") függvény 1000 értéket ad vissza, de a CCur("100 000 Ft") hibatípus-eltérést jelez.

A VBA pénznemei esetén a legjobb megoldás egy olyan függvény írása, amely a nem numerikus szimbólumokat tartalmazó karakterláncokat numerikus (vagy pénznem) értékre konvertálja. Például így:

If CurrencyValueFromDynField(cost) > ccur(1000) then

ahol a CurrencyValueFromDynField nevű függvény az alábbiak szerint van definiálva. Ez a kód megfelelően kezeli az olyan negatív számokat, amelyekben a következő vagy záró mínuszjel látható, szögletes zárójelek között vannak, vagy szóközöket tartalmaznak a pénznemszimbólum és a szám között.

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

Ez a cikk a következő volt: TechKnowledge Document ID:10036

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.

A közösségek segítségével kérdéseket tehet fel és válaszolhat meg, visszajelzést adhat, és részletes ismeretekkel rendelkező szakértőktől hallhat.

Hasznos volt ez az információ?

Mennyire elégedett a fordítás minőségével?
Mi volt hatással a felhasználói élményére?
Ha elküldi a visszajelzést, a Microsoft felhasználja azt a termékei és szolgáltatásai továbbfejlesztéséhez. Az informatikai rendszergazda képes lesz ezeket az adatokat összegyűjteni. Adatvédelmi nyilatkozat.

Köszönjük a visszajelzését!

×