اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

السلام عليكم

 

في كثير من الاوقات ما نعرف نستعمل الفاصلة او الفاصلة المنقوطة !!

هي جزء من اعدادات الوندوز

image.png

 

 

في المرفق وحدة نمطية تقوم بجلب الفاصل ، ونستعملها كالتالي:


debug.print fList_Seperator
او
  
dim fList as string
fList=fList_Seperator

stDocName = "tbl_student1" & DLookup("Year_name" & fList & "tbl_basic")

 

وانا اقوم بعمل الكثير من ملفات csv ، فحتى الكود يتوافق بين جهازي وبين اجهزة جميع المستخدمين وبغض النظر عن اعدادات الوندوز لهم ، استعمل هذا الكود لحل هذه الحالات

Period_or_Semi_Period.zip

  • Like 2
  • Thanks 1
قام بنشر
25 دقائق مضت, AbuuAhmed said:

تذكرت موضوع قديم، قد يسهم في إثراء الموضوع:

شكرا جزيلا ابو احمد ، وللأسف ما كنت شايف موضوع ابو هادي 🙂

  • Like 1
قام بنشر

في المثال الذي ارفقته ، يمكنك الحصول على اي بيانات من الاعدادات الاقليمية ، فهناك بعض الامثلة على ذلك.

هذا الكود كاملا من المرفق:

Option Compare Database
Option Explicit

' This code was originally written by Dev Ashish.
' It is not to be altered or distributed,
' except as part of an application.
' You are free to use it in any application,
' provided the copyright notice is left unchanged.
'
' Code Courtesy of
' Dev Ashish
'
Public Const LOCALE_ILANGUAGE = &H1         '  language id
Public Const LOCALE_SLANGUAGE = &H2         '  localized name of language
Public Const LOCALE_SENGLANGUAGE = &H1001   '  English name of language
Public Const LOCALE_SABBREVLANGNAME = &H3   '  abbreviated language name
Public Const LOCALE_SNATIVELANGNAME = &H4   '  native name of language
Public Const LOCALE_ICOUNTRY = &H5          '  country code
Public Const LOCALE_SCOUNTRY = &H6          '  localized name of country
Public Const LOCALE_SENGCOUNTRY = &H1002    '  English name of country
Public Const LOCALE_SABBREVCTRYNAME = &H7   '  abbreviated country name
Public Const LOCALE_SNATIVECTRYNAME = &H8   '  native name of country
Public Const LOCALE_IDEFAULTLANGUAGE = &H9  '  default language id
Public Const LOCALE_IDEFAULTCOUNTRY = &HA   '  default country code
Public Const LOCALE_IDEFAULTCODEPAGE = &HB  '  default code page
Public Const LOCALE_SLIST = &HC             '  list item separator
Public Const LOCALE_IMEASURE = &HD          '  0 = metric, 1 = US
Public Const LOCALE_SDECIMAL = &HE          '  decimal separator
Public Const LOCALE_STHOUSAND = &HF         '  thousand separator
Public Const LOCALE_SGROUPING = &H10        '  digit grouping
Public Const LOCALE_IDIGITS = &H11          '  number of fractional digits
Public Const LOCALE_ILZERO = &H12           '  leading zeros for decimal
Public Const LOCALE_SNATIVEDIGITS = &H13    '  native ascii 0-9
Public Const LOCALE_SCURRENCY = &H14        '  local monetary symbol
Public Const LOCALE_SINTLSYMBOL = &H15      '  intl monetary symbol
Public Const LOCALE_SMONDECIMALSEP = &H16   '  monetary decimal separator
Public Const LOCALE_SMONTHOUSANDSEP = &H17  '  monetary thousand separator
Public Const LOCALE_SMONGROUPING = &H18     '  monetary grouping
Public Const LOCALE_ICURRDIGITS = &H19      '  # local monetary digits
Public Const LOCALE_IINTLCURRDIGITS = &H1A  '  # intl monetary digits
Public Const LOCALE_ICURRENCY = &H1B        '  positive currency mode
Public Const LOCALE_INEGCURR = &H1C         '  negative currency mode
Public Const LOCALE_SDATE = &H1D            '  date separator
Public Const LOCALE_STIME = &H1E            '  time separator
Public Const LOCALE_SSHORTDATE = &H1F       '  short date format string
Public Const LOCALE_SLONGDATE = &H20        '  long date format string
Public Const LOCALE_STIMEFORMAT = &H1003    '  time format string
Public Const LOCALE_IDATE = &H21            '  short date format ordering
Public Const LOCALE_ILDATE = &H22           '  long date format ordering
Public Const LOCALE_ITIME = &H23            '  time format specifier
Public Const LOCALE_ICENTURY = &H24         '  century format specifier
Public Const LOCALE_ITLZERO = &H25          '  leading zeros in time field
Public Const LOCALE_IDAYLZERO = &H26        '  leading zeros in day field
Public Const LOCALE_IMONLZERO = &H27        '  leading zeros in month field
Public Const LOCALE_S1159 = &H28            '  AM designator
Public Const LOCALE_S2359 = &H29            '  PM designator
Public Const LOCALE_SDAYNAME1 = &H2A        '  long name for Monday
Public Const LOCALE_SDAYNAME2 = &H2B        '  long name for Tuesday
Public Const LOCALE_SDAYNAME3 = &H2C        '  long name for Wednesday
Public Const LOCALE_SDAYNAME4 = &H2D        '  long name for Thursday
Public Const LOCALE_SDAYNAME5 = &H2E        '  long name for Friday
Public Const LOCALE_SDAYNAME6 = &H2F        '  long name for Saturday
Public Const LOCALE_SDAYNAME7 = &H30        '  long name for Sunday
Public Const LOCALE_SABBREVDAYNAME1 = &H31  '  abbreviated name for Monday
Public Const LOCALE_SABBREVDAYNAME2 = &H32  '  abbreviated name for Tuesday
Public Const LOCALE_SABBREVDAYNAME3 = &H33  '  abbreviated name for Wednesday
Public Const LOCALE_SABBREVDAYNAME4 = &H34  '  abbreviated name for Thursday
Public Const LOCALE_SABBREVDAYNAME5 = &H35  '  abbreviated name for Friday
Public Const LOCALE_SABBREVDAYNAME6 = &H36  '  abbreviated name for Saturday
Public Const LOCALE_SABBREVDAYNAME7 = &H37  '  abbreviated name for Sunday
Public Const LOCALE_SMONTHNAME1 = &H38      '  long name for January
Public Const LOCALE_SMONTHNAME2 = &H39      '  long name for February
Public Const LOCALE_SMONTHNAME3 = &H3A      '  long name for March
Public Const LOCALE_SMONTHNAME4 = &H3B      '  long name for April
Public Const LOCALE_SMONTHNAME5 = &H3C      '  long name for May
Public Const LOCALE_SMONTHNAME6 = &H3D      '  long name for June
Public Const LOCALE_SMONTHNAME7 = &H3E      '  long name for July
Public Const LOCALE_SMONTHNAME8 = &H3F      '  long name for August
Public Const LOCALE_SMONTHNAME9 = &H40      '  long name for September
Public Const LOCALE_SMONTHNAME10 = &H41     '  long name for October
Public Const LOCALE_SMONTHNAME11 = &H42     '  long name for November
Public Const LOCALE_SMONTHNAME12 = &H43     '  long name for December
Public Const LOCALE_SABBREVMONTHNAME1 = &H44 '  abbreviated name for January
Public Const LOCALE_SABBREVMONTHNAME2 = &H45 '  abbreviated name for February
Public Const LOCALE_SABBREVMONTHNAME3 = &H46 '  abbreviated name for March
Public Const LOCALE_SABBREVMONTHNAME4 = &H47 '  abbreviated name for April
Public Const LOCALE_SABBREVMONTHNAME5 = &H48 '  abbreviated name for May
Public Const LOCALE_SABBREVMONTHNAME6 = &H49 '  abbreviated name for June
Public Const LOCALE_SABBREVMONTHNAME7 = &H4A '  abbreviated name for July
Public Const LOCALE_SABBREVMONTHNAME8 = &H4B '  abbreviated name for August
Public Const LOCALE_SABBREVMONTHNAME9 = &H4C '  abbreviated name for September
Public Const LOCALE_SABBREVMONTHNAME10 = &H4D '  abbreviated name for October
Public Const LOCALE_SABBREVMONTHNAME11 = &H4E '  abbreviated name for November
Public Const LOCALE_SABBREVMONTHNAME12 = &H4F '  abbreviated name for December
Public Const LOCALE_SABBREVMONTHNAME13 = &H100F

Public Const LOCALE_SYSTEM_DEFAULT& = &H800
Public Const LOCALE_USER_DEFAULT& = &H400

Const cMAXLEN = 255

Private Declare PtrSafe Function apiGetLocaleInfo Lib "kernel32" _
    Alias "GetLocaleInfoA" (ByVal Locale As Long, _
    ByVal LCType As Long, ByVal lpLCData As String, _
    ByVal cchData As Long) As Long

''''
Function CountryName() As String
    Dim lngLocale As Long
    Dim strLCData As String, lngData As Long
    Dim lngx As Long
    strLCData = String$(cMAXLEN, 0)
    lngData = cMAXLEN - 1
    lngx = apiGetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SCOUNTRY, strLCData, lngData)
    
    If lngx <> 0 Then
        CountryName = Left$(strLCData, lngx - 1)
    End If
End Function
''''
Function fLocaleInfo(lngLCType As Long) As String
Dim lngLocale As Long
Dim strLCData As String, lngData As Long
Dim lngx As Long

    strLCData = String$(cMAXLEN, 0)
    lngData = cMAXLEN - 1
    lngx = apiGetLocaleInfo(LOCALE_USER_DEFAULT, lngLCType, _
                    strLCData, lngData)
    If lngx <> 0 Then
        fLocaleInfo = Left$(strLCData, lngx - 1)
    End If
End Function

Function fLOCALE_IMEASURE() As String
'  0 = metric, 1 = US

Dim lngLocale As Long
Dim strLCData As String, lngData As Long
Dim lngx As Long

    strLCData = String$(cMAXLEN, 0)
    lngData = cMAXLEN - 1
    lngx = apiGetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IMEASURE, _
                    strLCData, lngData)
    If lngx <> 0 Then
        fLOCALE_IMEASURE = Left$(strLCData, lngx - 1)
    End If
End Function

Function fList_Seperator() As String
'  list seperator , OR ;

Dim lngLocale As Long
Dim strLCData As String, lngData As Long
Dim lngx As Long

    strLCData = String$(cMAXLEN, 0)
    lngData = cMAXLEN - 1
    lngx = apiGetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLIST, _
                    strLCData, lngData)
    If lngx <> 0 Then
        fList_Seperator = Left$(strLCData, lngx - 1)
    End If
End Function

 

وهذا مثال لا يوجد في المرفق:

اذا اردنا عمل برنامج يعمل لجميع عملات العالم ، فيجب علينا وضع الفاصلة بالطريقة الصحيحة لكل دولة حسب الاعدادات الاقليمية لتلك الدولة:

1. فاصلة الآلاف (من الكود ، يتضح ان تعريفه هو: Public Const LOCALE_SMONTHOUSANDSEP = &H17  '  monetary thousand separator )

2. الفاصلة العُشرية (من الكود ، يتضح ان تعريفه هو:Public Const LOCALE_SMONDECIMALSEP = &H16   '  monetary decimal separator ) :

 

image.png.92c180b2717b8185baa5e9d80886e8d3.png

 

1. طريقة اضافة فاصلة الآلاف (LOCALE_SMONTHOUSANDSEP

نأخذ نسخة من كود الفاصلة مثلا ، 

A - اسم الدالة ،

B - قيمة فاصلة الآلاف اعلاه

image.png.3729199e4849721e1a414e348530892e.png

.

فيصبح الكود:

Function fmonetary_thousand_Seperator() As String
'   monetary thousand separator

Dim lngLocale As Long
Dim strLCData As String, lngData As Long
Dim lngx As Long

    strLCData = String$(cMAXLEN, 0)
    lngData = cMAXLEN - 1
    lngx = apiGetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SMONTHOUSANDSEP, _
                    strLCData, lngData)
    If lngx <> 0 Then
        fmonetary_thousand_Seperator = Left$(strLCData, lngx - 1)
    End If
End Function



Function fmonetary_decimal_Seperator() As String
'  monetary decimal separator

Dim lngLocale As Long
Dim strLCData As String, lngData As Long
Dim lngx As Long

    strLCData = String$(cMAXLEN, 0)
    lngData = cMAXLEN - 1
    lngx = apiGetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SMONDECIMALSEP, _
                    strLCData, lngData)
    If lngx <> 0 Then
        fmonetary_decimal_Seperator = Left$(strLCData, lngx - 1)
    End If
End Function

.

وعندما نريد التأكد منها ، نتأكد هكذا:

?fmonetary_decimal_Seperator
.
?fmonetary_thousand_Seperator
,

.

ولكن الحمدلله ، لا نحتاج لعمل هذا في الاكسس ، فالامر التالي يقوم بالمهمة:

?format(12345.67,"Standard")
12,345.67

 

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information