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

jjafferr

أوفيسنا
  • Posts

    10126
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    411

كل منشورات العضو jjafferr

  1. اليك كودك بعد التصحيح: بدلا عن Function DialogColor(rgb As Long) As Long Call ChooseColor(Application.hWndAccessApp, rgb) DialogColor = rgb End Function استعمل #If VBA7 Then Function DialogColor(rgb As LongPtr) As LongPtr #Else Function DialogColor(rgb As Long) As Long #End If Call ChooseColor(Application.hWndAccessApp, rgb) DialogColor = rgb End Function . والسبب: عند استعمال 64بت ، المتغير rgb (لاحظ انه المتغير رقم 2 في الدالة ChooseColor) والدالة ChooseColor يصبحون LongPtr ، وعليه ، وفي الدالة DialogColor ، فاننا ننادي الدالة ChooseColor ، والمتغير رقم 2 هو rgb ، فيجب ان يكون نفس نوع rgb الـ 64بت ، وهو LongPtr ، وعند اعطائنا قيمة rgb الى DialogColor (في المعادلة DialogColor=rgb) ، فيجب ان DialongColor تصبح LongPtr ايضا. لذلك في حالة 64 بت ، يجب استعمال Function DialogColor(rgb As LongPtr) As LongPtr 1643.FileDialog.accdb
  2. السلام عليكم يمكنك رفع الملف كما هو ، ويمكنك رفع الملف بضغطه ببرامج winRar او winZip ، والافضل في الضغط هو صيغة 7z. ويمكنك انزال برنامجه المجاني من هنا : https://www.7-zip.org/ ويمكنك رفع الملف على اي من مواقع رفع الملفات على الانترنت ، و ارفاق الرابط في الموضوع ، ويمكنك رفع الملف في حسابك في Google Drive ومشاركة الرابط هنا.
  3. تم ارفاق المرفق في المشاركة الاولى للاخ احمد. المرفق من موضوع آخر للاخ احمد في مكتبة الموقع
  4. معك حق ، فالاكسس ما دون 2010 كان يعمل على النواة 32 بت فقط ، واالاكسس 2010 فما فوق يملك نسخة 32 بت واخرى 64 بت ، مما نضطر لعمل الامر ptrSafe حتى يعمل البرنامج على النواتين. فاذا كان التنصيب على حاسبتك النسخة 2010 فما فوق ، فيمكنك استعمال برنامج الرابط كما هو ، واذا كان التنصيب على حاسبتك النسخة اقل من 2010 ، فيجب عليك حذف جميع الاسطر التي بها الامر PtrSafe. بالاضافة الى عمل المرفق في الرابط اعلاه في تحسين الاداء ، اليك بعض الروابط للاسباب الاخرى: . . . . .
  5. وعليكم السلام اخوي احمد رجاء قرأة هذا الرابط ، واستخدم الاداة اللي فيه ، فانا لا استغني عنه وبإستمرار خلال عمل اي برنامج ، وقبل ان اعطيه الزبون
  6. في الواقع هو مشروع كان في بالي واتمنى ان اقوم به ، وفيه يجب ان اعتمد على الساعة لقراءة الوقت من سجلات ، فعرضت جزء من الفكرة مسبقا. حاليا انا وسط مجموعة من التعديلات في بعض البرامج ، وان شاء الله لما افضى ارجع للموضوع وارفق لك قاعدة بيانات صغيرة بس للعمل الحقيقي
  7. المعذرة ، كنت اعتقد ان الساعة ستؤدي الغرض !! اذن خليني اعمل قاعدة بيانات صغيرة ، وارفقها هنا
  8. تفضل ، ارفقت المثال البسيط ، فرجاء تضبيطه بدالتك 🙂 TimeInterval.accdb
  9. المعذرة ، اعتقد صار فيه اشباه في الموضوع وفي طلبي ، وما كان مفروض اخليه في موضوعك !! انا قلت تنفيذ الوقت عن طريق Time Interval لازم يكون مستمر ، لأن الحدث يقوم بعدة امور ، ومو ممكن اوقفه علشان تظبيط الكود في مكان آخر من البرنامج ، وخلال عمل ذلك النموذج ، اريد ان اعدل الكود في نموذج آخر ، بحيث اشتغل فيه كالمعتاد ولا يسبب لي مشكلة في كتابة الكود.
  10. المعذرة ، اعتقد صار فيه اشباه في الموضوع وفي طلبي ، وما كان مفروض اخليه في موضوعك !! انا قلت تنفيذ الوقت عن طريق Time Interval لازم يكون مستمر ، لأن الحدث يقوم بعدة امور ، ومو ممكن اوقفه علشان تظبيط الكود في مكان آخر من البرنامج ، وخلال عمل ذلك النموذج ، اريد ان اعدل الكود في نموذج آخر ، بحيث اشتغل فيه كالمعتاد ولا يسبب لي مشكلة في كتابة الكود.
  11. السلام عليكم انا لا استعمل الساعة في اي من برامجي ، اضطر للتعامل مع Timer Interval في بعض النماذج لفحص مجلدات معينة (هناك مجلد مشاركة بين المستخدمين ، والبرنامج يراقب هذا المجلد ، فلما يجد فيه ملف معين ، يقوم بعمل معين) ، هذا النوع من المجلدات يسمى Hot Folder. اثناء عمل هذا البرنامج (فكر به كأنه ساعة ، تغير المعاينة كل ثانية) ، لما ادخل الكود ، لا استطيع الكتابة بسلاسة ، بسبب Time Interval نموذج آخر. كنت اتمنى عملكم اعلاه يحل المشكلة ، ولكن اتضح ان الساعة تتوقف عن العمل عند دخولي الى نافذة الكود ، مما يجعلني لا استفيد من الكود.
  12. السلام عليكم انا لا استعمل الساعة في اي من برامجي ، اضطر للتعامل مع Timer Interval في بعض النماذج لفحص مجلدات معينة (هناك مجلد مشاركة بين المستخدمين ، والبرنامج يراقب هذا المجلد ، فلما يجد فيه ملف معين ، يقوم بعمل معين) ، هذا النوع من المجلدات يسمى Hot Folder. اثناء عمل هذا البرنامج (فكر به كأنه ساعة ، تغير المعاينة كل ثانية) ، لما ادخل الكود ، لا استطيع الكتابة بسلاسة ، بسبب Time Interval نموذج آخر. كنت اتمنى عملكم اعلاه يحل المشكلة ، ولكن اتضح ان الساعة تتوقف عن العمل عند دخولي الى نافذة الكود ، مما يجعلني لا استفيد من الكود.
  13. تطور التعليم بالنسبة لي: وقبل ايام الانترنت ، في عمل المجسمات الثلاثية الابعاد 3D Animation كنت مشترك في مجلات شهرية تجيني من الخارج ، استفيد من الامثلة . الان لما اكون بحاجة الى مساعدة لكود معين: ارجع الى مساعد اكسس في الكود F1 وابحث فيه ، ابحث في المنتدى هذا ، وفي مواقع الانترنت ، استعين بالذكاء الاصطناعي ، وبالخصوص في مناقشة عمل مشروع جديد (يعني مو الكود). صحيح عدد الاسئلة في المنتدى صار اقل ، ولكني اقرأ عداد "عدد مرات قراءات الموضوع" ، وارى ان هناك كم كبير من الاعضاء الصامت ، الذي لايزال يقرأ مواضيع معينة. بمعنى ، انهم لا يسألون الكثير من الاسئلة ، لأن هناك طرق اخرى للحصول على اجابات ، ولكنهم يزورون المنتدى لمعرفة الطرق التي لا يلبيها الذكاء الاصطناعي. وللعلم ، فهناك على الاقل موقعين عالميين للاكسس تم اغلاقهم قريبا ، واعتقد الذكاء الاصطناعي له دور في الغلق ، وهتاك موقع ممنوع فيه استعمال الذكاء الاصطناعي في الاجابات ، وهو عامر الى الان. هي موجه ، فلا بد من صعودها
  14. السلام عليكم في هذا الرابط مرفق لتكبير الصورة ، والمثال المرفق من الرابط . مثال:
  15. وليش نأخذ طريق ملتوي، عندنا طريق واضح
  16. احد اكثر مشاكل الخلط بين الفاصلة والفاصلة المنقوطة ، هي عند عمل ملف csv ، وترى انه لا يفتح عند العميل !! الامثلة التالية لعمل هذا الملف بأربعة طرق مختلفة ، وترى نتيجة الطرق في صورة من ملفات الاكسل ادناه: 3 طرق عن طريق الامر #Print بإستعمال: الفاصلة Comma ، الفاصلة المنقوطة Semi Comma ، فاصل النظام عن طريق الدالة fList_Seperator (في الكود اعلاه). ومرة عن طريق الامر #Write والذي لا يحتاج الى فواصل Function make_csv_1() Dim file_path As String Dim i As Integer ' , file_path = CurrentProject.Path & "\csv_COMMA.csv" Open file_path For Output As #1 Print #1, "AscW" & "," & "الحرف" For i = 1575 To 1610 Print #1, i & "," & ChrW(i) Next i Close #1 ' ; file_path = CurrentProject.Path & "\csv_Semi_COMMA.csv" Open file_path For Output As #1 Print #1, "AscW" & ";" & "الحرف" For i = 1575 To 1610 Print #1, i & ";" & ChrW(i) Next i Close #1 ' Line Seperator file_path = CurrentProject.Path & "\csv_Separator.csv" Open file_path For Output As #1 Print #1, "AscW" & fList_Seperator & "الحرف" For i = 1575 To 1610 Print #1, i & fList_Seperator & ChrW(i) Next i Close #1 ' Write file_path = CurrentProject.Path & "\csv_Write.csv" Open file_path For Output As #1 Write #1, "AscW", "الحرف" For i = 1575 To 1610 Write #1, i, ChrW(i) Next i Close #1 End Function . . رجاء الانتباه ان نظام حاسبتي انجليزي وليس عربي ، لذلك فنتائجي قد تختلف عن نتائجك
  17. في المثال الذي ارفقته ، يمكنك الحصول على اي بيانات من الاعدادات الاقليمية ، فهناك بعض الامثلة على ذلك. هذا الكود كاملا من المرفق: 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 ) : 1. طريقة اضافة فاصلة الآلاف (LOCALE_SMONTHOUSANDSEP ) : نأخذ نسخة من كود الفاصلة مثلا ، A - اسم الدالة ، B - قيمة فاصلة الآلاف اعلاه . فيصبح الكود: 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
  18. شكرا جزيلا ابو احمد ، وللأسف ما كنت شايف موضوع ابو هادي 🙂
  19. وقد عملت موضوعا لهذه الخاصية 🙂
  20. السلام عليكم في كثير من الاوقات ما نعرف نستعمل الفاصلة او الفاصلة المنقوطة !! هي جزء من اعدادات الوندوز في المرفق وحدة نمطية تقوم بجلب الفاصل ، ونستعملها كالتالي: 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
  21. نعم الموقع ثقة ، وانا اشرت الى هذا في الرابط التالي ، وهناك رد من الاخ @محمد سلامة عن طريقة لا اعرفها:
  22. حاليا ، للطباعة : لا تستطيع طباعة شجرة معينة ، فالشجرة تظهر كاملة ، ولا تظهر الشجرة في وضع المعاينة للطباعة. وبما اننا في طور عمل طريقة جديدة للشجرة ، فكنت اتمنى عمل التالي: اضافة ايقونة/صورة لكل نوع من السجل (Node Level) ، عمل لون لكل Node Level ، بحيث يكون لون سجل الابن هو نفس لون الاب ، ولكن فاتح ، وهكذا لكل ابن.
×
×
  • اضف...

Important Information