-
Posts
9998 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
406
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
للعلم اذا اردت ان تنادي عضو لموضوعك ، فهناك طريقة لإرسال تنبيه له ، هكذا: اكتب @ وبعدها اكتب الاسم مباشرة ، واذا اردت التنبيه لأكثر من عضو ، فاترك مسافة بينهم مثلا ، سأرسل تنبيه اليك والى اخي أوس واخونا العود ابوخليل: @Shivan Rekany @sandanet @ابو خليل
-
كسر حماية الوحدة النمطية متوفر، والقصد من commercial معناه بأنهم يقومون بالعمل بأجر مادي شو المشكلة اخي الو عبدالله !! الموضوع ليس بجديد وصار له سنين ، والحمدلله ، مافي شئ من برامجنا تأثر واللي يريد يسرق ، يحصل له الف طريقة !! جعفر
-
بالعكس اخي أوس ، انا اتعمد فك الكود الى اسطر بالتفصيل ، حتى يكون الكود سهل الفهم (بس الظاهر جبت اسمي وقصدك @رمهان بكوده المختزل) واليك شرح الكود: Dim rst1 As DAO.Recordset Dim rst2 As DAO.Recordset نحتفظ ببيانات الجدول1 في هذا المتغير#1 في ذاكرة الكمبيوتر المؤقته Set rst1 = CurrentDb.OpenRecordset("Select * From tbl1") بينما نحتفظ ببيانات الجدول2 في هذا المتغير #2 في ذاكرة الكمبيوتر المؤقته Set rst2 = CurrentDb.OpenRecordset("Select * From tbl2") من الآن ، تقريبا كل شغلنا على #1 ، حيث سنقرأ سجلات الجدول جميعها ، ثم نقارن حقلي الاسم والشهادة فاذا وجدنا القيم متساوية في #2 ، فاننا نحذف سجل #2 علشان نبدأ من اول سجل ، يجب ان نذهب الى آخر سجل ، ثم نرجع لأول سجل rst1.MoveLast: rst1.MoveFirst الآن نستطيع حساب عدد السجلات الموجودة في #1 RC1 = rst1.RecordCount الآن سنقرأ جميع سجلات #1 For i = 1 To RC1 اسم حقل الاسم يختلف في الجدولين ، فانتبه له ، بينما اسم الشهادة هو نفسه بين الجدولين لذا الذي نعمله هنا هو اننا نقارن حقلي الاسم والشهادة في السجل في #1 ، ونختبر وجودهما في الجدول #2 rst2.FindFirst "[degree]='" & rst1!degree & "' And [names]='" & rst1!fullnames & "'" اذا "عدم المطابقه" خطأ ، معناه انه في مطابقة بين الحقلين في هذا السجل ونستخدم هذه الطريقة ، لأنها الاسهل If rst2.NoMatch = False Then اذن ، احذف هذا السجل من #2 rst2.Delete End If انتقل الى السجل التالي في الجدول #1 rst1.MoveNext Next i هذه الجزئية جدا مهمة ، لأننا جعلنا الجدولين في ذاكرة الكمبيوتر المؤقته ولكي نُخلي الذاكرة ، يجب عمل التالي rst1.Close: Set rst1 = Nothing rst2.Close: Set rst2 = Nothing جعفر
-
تفضل: http://www.everythingaccess.com/mdeconversion_example.htm وسترى: Original source code Reverse engineered source code وفي الرابط التالي ، اسمهم مذكور من شخص ثقة ، Allen Browne http://allenbrowne.com/links.html جعفر
-
وبدون تعليق : http://www.pruittfamily.com/paul/MDE2MDB.htm http://www.everythingaccess.com/mdeconversion.asp جعفر
-
المساعده فى حل المشكله( لا يمكن تحديث الحقل )
jjafferr replied to ابو الآء's topic in قسم الأكسيس Access
وعليكم السلام أخي أبو الآء الظاهر الحياة اخذتك بعيدا عن الاكسس جعفر -
اخي شفان هل تستعمل الاكسس 2016؟ وهل عملت القفل على الاكسس 2016؟ جعفر
-
يعني لما تمسك الشفت وتفتح البرنامج ، هل تستطيع ان ترى الجداول وبقية الكائنات؟ جعفر
-
السلام عليكم أخي ابوجاسم ، اعتقد فيه عدم فهم للموضوع!! لما اباجودى قال: 1 و 2 لحل مشكلة ماقبل التحويل ، ولم يصل للنتقطة 3 بعد !! بالنسبة للنقاط 1 و 2 ، فانت تؤكد على عمل البرنامج بطريقة صحيحة: ولكن اباجودى لم يعمل النقطة رقم 3 بعد ، لذلك تقدر تعمل اللي قلت عنه لوسمحت اباجودى ، اكمل مشوار الخطوة 3 ، والتي ستكون قفل الشفت ، وتسليم المرفق بصيغة accde جعفر
-
اها ، لم التفت للشرط الاول اذن الاستعلام سيكون: . والكود سيصبح: Dim rst1 As DAO.Recordset Dim rst2 As DAO.Recordset Set rst1 = CurrentDb.OpenRecordset("Select * From tbl1") Set rst2 = CurrentDb.OpenRecordset("Select * From tbl2") rst1.MoveLast: rst1.MoveFirst RC1 = rst1.RecordCount For i = 1 To RC1 rst2.FindFirst "[degree]='" & rst1!degree & "' And [names]='" & rst1!fullnames & "'" If rst2.NoMatch = False Then rst2.Delete End If rst1.MoveNext Next i rst1.Close: Set rst1 = Nothing rst2.Close: Set rst2 = Nothing جعفر
-
وعليكم السلام اخي شفان الرابط بين الجدولين معناه ان Degree يجب ان تكون متساوية بين الجدولين ، فيعرض النتائج تلك فقط واليك طريقة اخرى بالكود ، وبنفس النتائج: Dim rst1 As DAO.Recordset Dim rst2 As DAO.Recordset Set rst1 = CurrentDb.OpenRecordset("Select * From tbl1") Set rst2 = CurrentDb.OpenRecordset("Select * From tbl2") rst1.MoveLast: rst1.MoveFirst RC1 = rst1.RecordCount For i = 1 To RC1 rst2.FindFirst "[degree]='" & rst1!degree & "'" If rst2.NoMatch = False Then rst2.Delete End If rst1.MoveNext Next i rst1.Close: Set rst1 = Nothing rst2.Close: Set rst2 = Nothing جعفر
-
السلام عليكم ثلاثة من عمالقة الموقع تدخلوا في هذا الموضوع ، ولم يتم الوصول الى حل شو يا شباب ، الهمّه الهمّه يا شباب والا يعني تريدون الشباب الكبار (ما بقول الشياب) يتدخلون جعفر
-
وعليكم السلام أخي ابوجاسم ، ماشاءالله عليك انت في مشاركتك الـ 204 . لقد فتحت 4 مواضيع بمسميات مختلفة لنفس السؤال !!! لماذا ؟ انت تعرف انك تستطيع ان "تعدل" الموضوع (بما فيها اسم الموضوع ومكوناته) ، بعد وضعك الموضوع ، وقبل ان يضع احد رد عليك. وهذا الجزء من المنتدى ، منتدى الاكسس موجود لكي نتبادل الخبرات ، ونساعد بعض ، اما ان يساعدك احد على الخاص ، فالرجاء وضع مثل هذا الطلب في إعلانات شخصية للاعضاء بمقابل مادي بالاضافة الى انه عندك موضوع مفتوح نشط هنا: يُقفل. جعفر
- 1 reply
-
- 2
-
-
وعليكم السلام الطريقة الصحيحة انك تعمله في النموذج ، هكذا جعفر
-
السلام عليكم الحمدلله في الكثير من الاحيان ، يحتاج صاحب السؤال الى الامساك بطرف الخيط ، ويُكمل المشوار ، وهذا ما حصل هنا انا توقفت لثلاثة اسباب: 1. وجود خبير محترف ومتخصص ، الاستاذ رمهان ، وفي انتظار مرفق فيه جميع ما توصل اليه ، 2. كنت على ثقة ان أخي أوس (وكم مرة ناديتك أنس وانت ساكت عني ، شكرا) سيستفيد من عمل الاستاذ رمهان وعملي وسيخطو للخطوة التالية ، 3. وكان يجب ان ابدأ من المرفق الاصل من اول وجديد ، للوصول الى مجموعة الشروط التي اعطانا إياها اخي أوس ، فلم تكن الفكرة في البداية تشتمل على كل هذه الشروط (حسب فهمي حينها) جعفر
-
السلام عليكم اخي كريمو يجب اولا ان نصل الى الحل الصحيح ، ومنها نعمل المعادله / المعادلات ، في المرفق ملف اكسل ، وفيه حساب يدوي لكل يوم من تاريخ التوظيف ، لموظفين اثنين ، رجاء التدقيق على العمل ، واذا كانت النتائج صحيحة ، فعليه ان شاء الله نقوم بترجمة الخطوات الى معادلات في الاكسس جعفر 600.xlsx.zip
-
وعليكم السلام مع تعديل أخي صالح ، استعمل الكود في الحدث "قبل التحديث" جعفر
-
تم حذف المرفق بناء على طلب صاحب الموضوع جعفر
-
السلام عليكم هذه النسخة: ستفحص الجداول الخلفية في BE ، واذا كانت تختلف من عن جداول برنامج الواجهة FE (اذا اي من الجداول غير موجود ، او قيمة الرقم 12 غير موجود في جدول tblMonths) ، فسيخبرك بذلك ، وهذا هو الكود حاليا: Option Compare Database Option Explicit Function AreLinkedDBs() On Error GoTo MyErr Dim IsThereDBs As Long IsThereDBs = Nz(DCount("[DBID]", "BackDBs"), 0) If IsThereDBs = 0 Then DoCmd.OpenForm "LinkDBsMain" Exit Function End If Dim NoDBSCount As Long If IsThereDBs <> 0 Then CodeDb.Execute "UPDATE BackDBs SET BackDBs.[Found] = IIf(CheckFile(BackDBs.[DBPathANDName])=1,True,False);" NoDBSCount = Nz(DCount("[DBID]", "BackDBs", "[Found]=False"), 0) If NoDBSCount = 0 Then DoCmd.OpenForm "Background" Else: DoCmd.OpenForm "LinkDBsMain" Exit Function End If MyErr: If Err.Number <> 0 Then MsgBox Err.Number & " - " & Err.Description End If End Function Function AutoLink() On Error GoTo MyErr ' حذف الجداول المرتبطة الموجودة بقاعدة البيانات الامامية أي الحالية Dim FrontObj As AccessObject, FrontDB As Object Set FrontDB = Application.CurrentData For Each FrontObj In FrontDB.AllTables If left(FrontObj.NAME, 4) <> "MSys" And FrontObj.NAME <> "BackDBs" Then DoCmd.DeleteObject acTable, FrontObj.NAME End If Next FrontObj ' إعادة ربط الجداول مرة أخرى Dim MinDBID As Long, MaxDBID As Long, i As Long Dim BackObj As TableDef, BackDB As Database, BackFile As String, PW As String, PWD As String MinDBID = Nz(DMin("[DBID]", "BackDBs"), 0) MaxDBID = Nz(DMax("[DBID]", "BackDBs"), 0) For i = MinDBID To MaxDBID BackFile = Nz(DLookup("[DBPathANDName]", "BackDBs", "[DBID]=" & i), Null) PW = Nz(DLookup("[MyPass]", "BackDBs", "[DBID]=" & i), "") PWD = ";" & "PWD" & "=" & PW Set BackDB = DBEngine.Workspaces(0).OpenDatabase(BackFile, True, False, PWD) For Each BackObj In BackDB.TableDefs If left(BackObj.NAME, 4) <> "MSys" Then DoCmd.TransferDatabase acLink, "Microsoft Access", BackFile, acTable, BackObj.NAME, BackObj.NAME End If Next BackObj Next i Set FrontDB = Nothing Set BackDB = Nothing ' هنا ، نكتب اسم النموذج الخاص بالشاشة الافتتاحية ' اذا لم تكن ترغب في ان يتم فتح نموذج ما ، بعد عملية ربط الجداول ، امسح السطر التالي 'j DoCmd.OpenForm "Background" DoCmd.OpenForm "frm" MyErr: If Err.Number <> 0 Then MsgBox Err.Number & " - " & Err.Description End If End Function Function CheckFile(DBPath) As Integer ' هذه الدالة تقوم بالتأكد من وجود قاعدة البيانات الخلفية On Error GoTo MyErr: Open DBPath For Input As #1 Close CheckFile = 1 Exit Function MyErr: Exit Function End Function Function Compare_FE_BE_Tables(BackFile) On Error GoTo Err_Compare_FE_BE_Tables Dim stDocName As String Dim stLinkCriteria As String 'j DoCmd.Close 'j stDocName = "frm" 'j DoCmd.OpenForm stDocName, , , stLinkCriteria ' BackFile = GetOpenFile() If Len(BackFile & "") = 0 Or BackFile = 1 Then 'this is a start up test BackFile = DLookup("[DBPathANDName]", "BackDBs", "[DBID] = 3") Dim Start_Up As Integer Start_Up = 1 End If Dim FrontObj As AccessObject, FrontDB As Object Dim BackObj As TableDef, BackDB As Database, PW As String, PWD As String Set FrontDB = Application.CurrentData 'the Selected BE Set BackDB = DBEngine.Workspaces(0).OpenDatabase(BackFile, True, False, PWD) 'Start with a table to look for For Each FrontObj In FrontDB.AllTables If left(FrontObj.NAME, 4) <> "MSys" And FrontObj.NAME <> "BackDBs" Then ' FE = FrontObj.NAME 'look for that table in BE For Each BackObj In BackDB.TableDefs If left(BackObj.NAME, 4) <> "MSys" Then ' BE = BackObj.NAME If BackObj.NAME = FrontObj.NAME Then 'check if tblmonths contain the value 12 in Month_No If BackObj.NAME = "tblMonths" Then Dim dbsNew As Database Dim rst_TQ As DAO.Recordset Dim msg As Integer Set dbsNew = OpenDatabase(BackFile) Set rst_TQ = dbsNew.OpenRecordset("SELECT * FROM tblMonths IN '" & BackFile & "'") rst_TQ.FindFirst "[Month_No]=12" If rst_TQ.NoMatch Then 'MsgBox "Didn't find 12" msg = 1 Compare_FE_BE_Tables = 1 Else 'MsgBox "OK" Compare_FE_BE_Tables = 0 GoTo Found_It End If rst_TQ.Close: Set rst_TQ = Nothing: Set dbsNew = Nothing Else Compare_FE_BE_Tables = 0 GoTo Found_It End If ' Compare_FE_BE_Tables = 0 ' GoTo Found_It Else Compare_FE_BE_Tables = 1 End If End If 'BackObj Next BackObj If Compare_FE_BE_Tables = 1 Then GoTo Not_Same Found_It: End If 'FrontObj Next FrontObj 'All Good If Start_Up = 0 Then MsgBox "All FE tables exist in BE" Else DoCmd.OpenForm "Background" End If Set FrontDB = Nothing Set BackDB = Nothing 'update the field in the table 'DoCmd.SetWarnings False ' DoCmd.RunSQL ("UPDATE BackDBs SET DBPathANDName = " & BackFile & " WHERE DBID = 3") 'DoCmd.SetWarnings True 'link the tables 'Call AutoLink Exit Function Not_Same: 'No Good If msg = 0 Then MsgBox "The FE table : " & FrontObj.NAME & vbCrLf & _ "Is Not in the BE" Else MsgBox "Didn't find 12 in tblMonths" End If Set FrontDB = Nothing Set BackDB = Nothing If Start_Up = 1 Then DoCmd.OpenForm "LinkDBsMain" End If Exit_Compare_FE_BE_Tables: Exit Function Err_Compare_FE_BE_Tables: MsgBox Err.Description Resume Exit_Compare_FE_BE_Tables End Function جعفر 605.3.test.mdb.zip
-
نسخ سجل من نموذج عن طريق مربع التحرير والسرد
jjafferr replied to Phatomas's topic in قسم الأكسيس Access
السلام عليكم استاذنا الفاضل رجاء تعمل نسخة من برنامجك ، وتحذف جميع الكائنات الأخرى اللي مالها علاقة بسؤالك ، وتبقي سجل واحد له علاقة في السؤال ، وارفقه. وإنشاءالله نساعدك في الجواب جعفر -
غالي والطلب رخيص وهذا المرفق بعد ان يتأكد من وجود الجدول tblMonths ، يتأكد من وجود الشهر 12 ، بهذه الاضافة الى الكود: 'look for that table in BE For Each BackObj In BackDB.TableDefs If left(BackObj.NAME, 4) <> "MSys" Then ' BE = BackObj.NAME If BackObj.NAME = FrontObj.NAME Then 'check if tblmonths contain the value 12 in Month_No If BackObj.NAME = "tblMonths" Then Dim dbsNew As Database Dim rst_TQ As DAO.Recordset Dim msg As Integer Set dbsNew = OpenDatabase(BackFile) Set rst_TQ = dbsNew.OpenRecordset("SELECT * FROM tblMonths IN '" & BackFile & "'") rst_TQ.FindFirst "[Month_No]=12" If rst_TQ.NoMatch Then 'MsgBox "Didn't find 12" msg = 1 Compare_FE_BE_Tables = 1 Else 'MsgBox "OK" Compare_FE_BE_Tables = 0 GoTo Found_It End If rst_TQ.Close: Set rst_TQ = Nothing: Set dbsNew = Nothing Else Compare_FE_BE_Tables = 0 GoTo Found_It End If ' Compare_FE_BE_Tables = 0 ' GoTo Found_It Else Compare_FE_BE_Tables = 1 End If End If 'BackObj Next BackObj جعفر 605.2.test.mdb.zip