اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    408

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

  1. السلام عليكم ورحمة الله وبركاته عملت مثال على الرابط التالي وبه مرفق يعمل على 32 بت و 64 بت: http://www.officena.net/ib/topic/64325-مثال-يعمل-على-اكسس-32-بت-و-64-بت/ جعفر
  2. السلام عليكم ورحمة الله وبركاته هذا الموضوع اُثير اكثر من مرة في الآونة الاخيرة ، ورأيت من الافضل ان اضع مثال ليقتدي به الجميع وقبل ان نبدأ ، اود ان اشير الى انني اعمل على اكسس 32 بت ، ولا املك نسخة من اكسس 64 بت احب ان اشير الى الرابط الذي شرحت فيه ان مايكروسوفت توصي بتنصيب الاوفيس / اكسس 32 بت ، بغض النظر عن نوع الوندوز المنصّب على الكمبيوتر ، سواء كان 32 بت او 64 بت: http://www.officena.net/ib/topic/64036-هل-استخدم-اوفيس-32-بت-او-64-بت/ ولكن ، ماذا نفعل اذا عملنا برنامجنا على اكسس 32 بت ، واتضح ان الزبون عنده جهاز فيه اكسس 64 بت المثال التالي يشتغل على 32 بت و 64 بت ، ونستطيع ان نستفيد منه لعمل برنامجنا البرنامج المرفق ، بعد فك الضغط ، سيحتوي على 3 برامج: . هذا برنامج No_Password_BE.accdb ، وبه جدول واحد ، ولا يحتاج الى كلمة سر لفتحه: . هذا برنامج Password_is_jj_BE.accdb ، وبه جدول واحد ، وكلمة السر لفتحه هي jj: . البرنامج: JStreetAccessRelinker2.accdb من الرابط http://www.jstreettech.com/downloads.aspx ، وبه ماكرو ووحدات نمطية تعمل على 32 بت و 64 بت (فالفضل في هذا المثال يعود للبرنامج وليس لي ) ، وقد قمت بإضافة نموذج لربطه مع احد برنامج الجداول اعلاه ، ومبدئيا فهو مرتبط مع البرنامج No_Password_BE.accdb ، . وعند فتح البرنامج لأول مرة ، سوف يفتح نافذة تطلب معرفة مكان برنامج الجداول No_Password_BE.accdb ، وتستطيع ان تنقر على الزر Link Another BE ، وستفتح لك نافذة تطلب منك معرفة مكان برنامج الجداول الجديد الذي تريد ان تربطه (بدل البرنامج No_Password_BE.accdb) : . وبما ان البرنامج هذا محمي بكلمة سر ، فسوف تظهر لك نافذة لإدخال كلمة السر (لاحظ ان الادخال مشفر) : . وعندما يتم الربط ، سترى رسالة التاكيد: . الرجاء من الشباب الذين لديهم نسخة من الاكسس 64 بت ، التاكد من ان البرنامج يشتغل على كمبيوترهم بدون اخطاء. عندما نريد ان نعمل برنامج يشتغل على النسختين 32 و 64 بت ، فكود النماذج هو نفسه بين نسختي 32 بت و 64 بت ، والشئ الوحيد الذي يتغير هو دوال الوحدات النمطية API ، والكود الذي ينادي هذه الوحدات (بغض النظر سواء كان في نموذج او في وحدة نمطية مستقلة) ، هنا سوف اعطي مثال واحد من الكود عن طريقة العمل للنسختين 32 و 64 بت: الكود التالي يستعمل دالة API فتح نافذة اختيار ملف ، والدالة هي 32 بت (لاحظ comdlg32.dll ) : Private Declare Function GetOpenFileName Lib "comdlg32.dll" _ Alias "GetOpenFileNameA" (OPENFILENAME As tagOPENFILENAME) As Long الان اذا اردنا ان نجعل هذه الداله API تعمل على 64 بت كذلك ، فالكود يجب ان يكون: #If VBA7 Then 'هذه لنسخة 64 بت Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" _ Alias "GetOpenFileNameA" (OPENFILENAME As tagOPENFILENAME) As Boolean #Else 'وهذه لنسخة 32 بت Private Declare Function GetOpenFileName Lib "comdlg32.dll" _ Alias "GetOpenFileNameA" (OPENFILENAME As tagOPENFILENAME) As Long #End If ولاحظ في كود البرنامج ، انه تم جمع جميع الدوال مع بعض ، وجمعها في if# و else# و end if# واحدة. وهناك اصدار جديد لكود الربط ، ويمكن انزاله من هنا: http://www.jstreettech.com/files/JStreetAccessRelinker2.zip جعفر 238.Work_on_32Bits_and_64Bits.zip
  3. أخي طارق اذا عندك اي استفسار ، رجاء ان تسأل ، لأني يوم الاربعاء صباحا على سفر ولن استطيع دخول المنتدى لفترة. جعفر
  4. السلام عليكم ورحمة الله وبركاته . نعم يمكن عمل هذا ، بإتباع التعليمات حسب ما وضحت في الرابط اعلاه http://www.officena.net/ib/topic/59661-الأكسس-32-بت،-64-بت/#comment-398477 في الرابط التالي توضيح من مايكروسوفت https://msdn.microsoft.com/en-us/library/office/gg264421.aspx . . الظاهر اني لم اشرح نفسي بشكل واضح في الرابط السابق ، مما نتج عنه هذا المفهوم الخاطئ ، فانا اعتذر عن هذا جعفر
  5. تفضل 1. أضفت حقل جديد للنموذج وجعلته مخفيا . 2. الكود اصبح: 'only split is nfous is empty If Len(Me.nfous & "") <> 0 Then Exit Sub Dim x() As String x = Split(Me.barcode, "+") Me.nfous = DLookup("[NoufousName]", "NoufousTable", "[Field1]='" & x(0) & "'") Me.nfous_ID = DLookup("[NoufousID]", "NoufousTable", "[Field1]='" & x(0) & "'") Me.[0000] = x(1) Me.[00] = x(2) Me.[00000] = x(3) Me.[0] = x(4) 'we will use the query method instead of the Recordset 'update the Record, if found DoCmd.SetWarnings False DoCmd.OpenQuery "qry_Update_BC_NF" DoCmd.SetWarnings True . 3. عملت استعلام تحديث: . للعلم ، بسبب كبر حجم قاعدة بياناتك ، اضطررت ان اضغط المرفق بصيغة 7z وتستطيع ان تنزل برنامج فك الضغط المجاني من هذا الموقع: http://www.7-zip.org لذلك بعد انزال المرفق fin.zip ، رجاء تغيير اسمه الى fin.7z ، ثم فك الضغط. جعفر fin.zip
  6. وعليكم السلام أخي طارق انا عندي حالة طارئه من كم يوم ولازالت ، ولم ادخل المنتدى. انا شخصيا لا اتعامل مع الافراد حسب هواي (ولم ألاحظ هذا على اي من المشاركين) ، ولكننا جميعا نساعد قدر استطاعتنا ووقتنا المتاح. سأحاول الليلة عمل المستطاع لإيجاد الحل لطلبك جعفر
  7. تفضل يا سيدي الكريم شاكرا لك جميل كلمات ، ودعائك جعفر 230.Report_to_Excel.mdb.zip
  8. معلش أخي وائل ، انا دايخ ومخي ما يستوعب اشياء جديدة اليوم (الكوتا حقة مخي قفلت خلاص ) مادام الاستاذ رمهان ماشي معاك ، فعلى بركة الله جعفر
  9. حياك الله شروط المنتدى لا تسمح بأكثر من سؤال في مشاركة واحدة فالرجاء افتح مشاركات جديدة بعدد الاسئلة جعفر
  10. السلام عليكم أخي موسى الرابط التالي فيه طريقة حفظ النسخ الاحتياطية: http://www.officena.net/ib/topic/63797-دعوة-لتطوير-اداه-لنسخ-قاعدة-البيانات-المرتبطة-كل-مدة-زمنية-ساعةيومشهرسنة/ جعفر
  11. أخي نكرو مانسر ما سمعنا منك ، هل الرابط والامثلة اللي انا وضعتها تخدم طلبك؟ جعفر
  12. السلام عليكم . 1. والكود لا يفعل هذا الشئ ، مثل طلبك ، فالكود لا يعمل على ازرار + و - ، 2. وهذا الذي يفعله البرنامج بالضبط ، مثل طلبك ، فالكود يعمل على ازرار الاصناف فقط. وين الخطأ اذا؟ جعفر
  13. وعليكم السلام . تذكر لما سألتك: . ولا يهمك تريد شئ ثاني قبل ما اقفل الدكان جعفر
  14. . وعليكم السلام اخي رمهان 1. الـ Recordset يكون باستخدام ADO او DAO ، فلذلك الامثلة حسب طلب السؤال 2. انا افتكرت الموضوع مثلك ، ولكن لما الاخ نكرو مانسر شرح الموضوع بشكل اكبر ، فارفقت له رابط بنفس الفكرة (طبعا حسب فهمي للموضوع) جعفر
  15. وعليكم السلام أختي انا عملت لك 3 استعلامات ، على اساس الحوارات اللي دارت بينك وبين الاستاذ رمهان رجاء تتأكدي من النتائج جعفر 236.‫tajera3.mdb.zip
  16. امبونك متدوده وخابصها من الزين لما دخلت التاريخ تو الكود كذاك: Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) 'a = DLookup("[Org_Name]", "tbl_Org", "[Org_ID]='" & Forms!frm_Org_Details!Org_ID & "'") a = Forms!frm_Org_Details!cmb_Org_Name.Column(0) Me.Body_Text.Caption = Replace(Me.Body_Text.Caption, "a1", a) Me.Body_Text.Caption = Replace(Me.Body_Text.Caption, "a2", Forms!frm_Org_Details!cmb_Org_ID) 'Me.Body_Text.Caption = Replace(Me.Body_Text.Caption, "dh") 'Me.Body_Text.Caption = Replace(Me.Body_Text.Caption, "dm") Calendar = vbCalHijri dh = Date dh = Format(dh, "yyyy/mm/dd") Calendar = vbCalGreg dm = Date dm = Format(dm, "dd-mm-yyyy") End Sub . والمرفق في خدمتك جعفر 224.1.تعديل1 .اصدار التراخيص.mdb.zip
  17. 2. لانه انا شايف الدالة ConnectSQL() بتنادي نفسها اذا الكنكشن مغلق ! وخلق الكائن وفتحه ياتي بعد مناداة الدالة ! فهنا هل سيتم تنفيذ باقي جسم الدالة خصوصا انها تتطلب تمرير الكائن cnn وهو لسا لم تسند له القيم !! 1. والله أخوي رمهان البرنامج ليس بالكامل ، ومشتت ، وصار لي 7 سنوات ما لمسته ، فما اتذكر ايش وضعه 2. انا فتحت الاتصال من كود النموذج الاساسي بمناداة الدالة Call ConnectSQL(cnn) جعفر
  18. وعليكم السلام أخي كرار هاي ما كانت سهلة لازم تستخدم الزر اللي في النموذج ، والكود حقه: Private Sub cmd_Combine_Click() 'delete the old data mySQL = "Delete * From tbl_PP" CurrentDb.Execute (mySQL) Dim rstpp As DAO.Recordset Dim rst As DAO.Recordset Set rstpp = CurrentDb.OpenRecordset("Select * From tbl_PP") '1 Set rst = CurrentDb.OpenRecordset("Select * From sh Order By tash") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount 'add all the records For i = 1 To RC rstpp.AddNew rstpp!iDate = rst!tash rstpp!Purchase = rst!mbsh rstpp.Update rst.MoveNext Next i '2 Set rst = CurrentDb.OpenRecordset("Select * From ts Order By tats") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount 'we should check if the date is available, then we should use it For i = 1 To RC rstpp.FindFirst "iDate=#" & rst!tats & "#" If rstpp.NoMatch Then rstpp.AddNew rstpp!iDate = rst!tats rstpp!Payment = rst!mbts rstpp.Update Else rstpp.Edit 'rstpp!iDate = rst!tats rstpp!Payment = rst!mbts rstpp.Update End If rst.MoveNext Next i rstpp.Close: Set rstpp = Nothing rst.Close: Set rst = Nothing DoCmd.OpenQuery "qry_PP" End Sub . وهذه النتيجة: جعفر 231.الرصيد.accdb.zip
  19. هذا من لطفك وإحسانك
  20. حياك الله أستاذ علي ، وعذرا على التأخر في الاجابة نعم تستطيع ان تستخدم الكود كما ذكرت ، ولكن الامر Dlookup ثقيل على البرنامج ، وهو سيستخدم 31 مرة (صحيح الكمبيوترات سريعة هذه الايام ، وقد لا تلاحظ البطئ ) ، ولكني افضل ان نجعله في الكود ، بحيث تفحص اللغة بكود شبيه للذي وضعته انت ، وعلى اساس اللغة تستخدم if else جعفر
×
×
  • اضف...

Important Information