jjafferr قام بنشر مارس 1, 2020 قام بنشر مارس 1, 2020 السلام عليكم 🙂 نعمل البرنامج ، ثم نقسمه الى قسمين ، FE الواجهة و BE الجداول ، ولما نعطيه للمستخدم ، نربط الجداول بمسار خاص به ، ويعمل البرنامج. ولما المستخدم يحتاج الى تعديل/اضافات ، ويرسل لنا نسخته بالايميل (انا ممكن اكون مسافر وبعيد عن نسختي) ، فيجب علينا ان نغير مسار الجداول ليتناسب مع مجلدات الكمبيوتر عندنا ، ولما ننتهي من التعديل ، نرسله بالايميل ، وهناك يجب على المستخدم ان يغير المسار الى ذلك الذي به BE الاصل 🙂 المشكلة انه: 1. بعض الاوقات نكون قد وضعنا الـ BE في مكان لا يجب ان يعرفه المستخدم ، فلا نريد تدخل منه لهذا التغيير ، 2. بعض الاوقات المستخدم لا يعرف مكان الـ BE اصلا ، 3. وبعض الاوقات ، المستخدم لا يكون فني ليعرف كيف يختار مكان الـ BE 🙂 صادفتني هذه المشكلة مراراً ، ومرة دفعت الثمن غالي لما ربطوه بالـ BE الغلط ، ربطوه بنسخة الـ Backup بدل عن النسخة الاصل 😁 الى ان اهتديت الى هذه الطريقة 🙂 الفكرة هي عبارة عن اضافة جدول tbl_ReLink_To_Original في الـ FE فيه سجلين ، سجل يحتوي على مسار BE المستخدم ، وسجل يحتوي على مسار BE المبرمج ، وبدل هذا الجدول ، ممكن ان نضع ملف نص txt في مجلد FE ، ونكتب فيهم السجلين ، ثم نقرأهم ، ولكن الجداول في الـ FE تناسبني اكثر ، فإستعملتها 🙂 1. لمعرفة مسار BE المستخدم: . . ثم ننسخه من (1) جدول MSysObjects الى السجل الاول (Seq = 1) في جدولنا (2) tbl_ReLink_To_Original . ثم في السجل الثاني (Seq = 2) ، نكتب مسار الـ BE حسب مجلدات الكمبيوتر عندنا (3) . طريقة العمل: نعمل ماكرو Macro باسم Autoexec ، والذي يقوم الاكسس بفتحه وتنفيذ اوامره اول ما يفتح البرنامج ، 1. نقوم بتشغيل الكود الذي سيربط الـ BE الى المسار الصحيح للمستخدم (اما المبرمج فلا يسنخدم هذا الماكرو ، وانما يدخل في البرنامج بمسك مفتاح الشفت) ، 2. اذا لم يحصل البرنامج على المسار الصحيح ، فيجب ان نخبره ان يعطينا نافذة نختار منها المسار الصحيح ، وهناك عدة طرق ، واخترت طريقتي هنا ، 3.4.5.7.8 هذه لإخفاء جميع كائنات البرنامج من جداول واستعلامات ونماذج وماكرو وتقارير ووحدات نمطية ، وتوسيع البرنامج لحجم الشاشة (فلا نحتاج ان نجعل النموذج منبثق ، والذي به الكثير من المشاكل) ، 5. فتح النموذج الاول من البرنامج ، . هذه هي الوحدة النمطية التي تقوم بالعمل (1) اعلاه : Public Function f_ReLink_To_Original(Optional Seq As Integer = 1) 'On Error GoTo err_f_ReLink_To_Original On Error GoTo Exit_f_ReLink_To_Original ' ' The client have his own path to the linked BE tables, ' yet for Development when we want to do change and modifications on the FE, ' we want to link this FE to our local BE tables, for testing, ' and we are done, we will send this FE back to the client, which will have our BE path!! ' ' Although the FE have a code on startup, which will prompt for the new BE path, but not all clients know how to use it!! ' So I added a table tbl_ReLink_To_Original to the FE, and the path to the client BE path, as Seq = 1 , ' and for the Developer BE, the Seq is 2 or other numbers. ' ' for the Development BE path, we call this Function, for the immediate window: ' ?f_ReLink_To_Original(2) ' ' or from a normal Event: ' Call Call f_ReLink_To_Original(2) ' ' and enter the DB with Shift key, ' ' and when the FE goes to the client, this Function will call Seq = 1 by default, thus returning their correct Path. ' ' ' by jjafferr ' ' v1. 24-Feb-2020 ' Dim db As dao.Database Dim tdf As dao.TableDef Dim ConnectionString As String, Linked_Connection As String Set db = CurrentDb 'which BackEnd the user selected ConnectionString = DLookup("[DB_Path]", "tbl_ReLink_To_Original", "[Seq]=" & Seq) 'the existing BackEnd Linked_Connection = DLookup("[Database]", "MSysObjects", "[flags] = 2097152") 'if the existing BackEnd = User Selected, then No need to connect again, just exit If ConnectionString = Linked_Connection Then GoTo Exit_f_ReLink_To_Original For Each tdf In db.TableDefs ' Only make a change if the table is a linked table If Len(tdf.Connect) Then tdf.Connect = ";DATABASE=" & ConnectionString tdf.RefreshLink End If Next Exit_f_ReLink_To_Original: Exit Function err_f_ReLink_To_Original: If Err.Number = 3170 Then 'MsgBox "رجاء التاكد من مسار القاعدة الموجوده في الجدول" & vbCrLf & "tbl_ReLink_To_Original" 'Resume Next Resume Exit_f_ReLink_To_Original Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_f_ReLink_To_Original End If End Function . اما للمبرمج ، فيجب عليه ان يدخل الكود ويكتب (لاحظوا اننا استخدمنا الرقم Seq = 2 ، ليشير الى السجل الثاني في الجدول ، المشير الى مسار الـ BE حسب مجلدات الكمبيوتر عندنا (3) : من نافذة الكود السفلى: immediate ?f_ReLink_To_Original(2) او من اي حدث Call f_ReLink_To_Original(2) . واذا اردت الاستفادة من هذه الطريقة لبرامجك ، فيجب عليك استيراد هذه الكائنات الى برنامجك (مع الاخذ في الاعتبار تغيير اسم النموذج في ماكرو autoexec ) : جعفر Relink Tables.zip 4 4
Khalid Jnb قام بنشر مارس 1, 2020 قام بنشر مارس 1, 2020 بارك الله فيك استاذنا الكبير جعلها الله في ميزان حسناتك تحياتي
أبوبسمله قام بنشر مارس 1, 2020 قام بنشر مارس 1, 2020 جزاك الله خيرا اخى واستاذنا الغالى جعفر ربنا ما يحرمنا من هداياك القيمه وشروحاتك المبسطه جعلها الله فى ميزان حسناتك تقبل تحياتى وتمنياتى لك وللجميع بالتوفيق
SEMO.Pa3x قام بنشر مارس 2, 2020 قام بنشر مارس 2, 2020 احسنت يا مُعلمي، سيتم قراءة الموضوع بتمعن ودقة مع فنجان قهوة عند عودتي للمنزل
ابوآمنة قام بنشر مارس 3, 2020 قام بنشر مارس 3, 2020 ما شاء الله تبارك الله استاذي ومعلمي جعفر بوركت وجعله في ميزان حسناتك
qathi قام بنشر مارس 3, 2020 قام بنشر مارس 3, 2020 وفقك الله أستاذنا الكبير الى كل خير بالتوفيق ساقوم بمتابعة الموضوع في وقت لا حق
Moosak قام بنشر مارس 8, 2022 قام بنشر مارس 8, 2022 ما شاء الله تبارك الله .. هذا من أهم المواضيع التي تواجهني في التعامل مع برامجي والتغيرات والتعديلات المستمرة عليها 😅 وكانت عندي فكرة عمل شي مشابه لهذي الطريقة ولكن ما محصل وقت أطبقها 😁 فكرتي هي : أن الجدول الخاص بمسارات ال BE المتعددة أول ما تقوم الدالة باكتشاف أن الباك إند غير مرتبطة يظهر لك نموذج يخيرك بإعادة الربط حسب المكان الذي أنت فيه ( أي المبرمج - أو المستخدم ) بالمناسبة الرابط لا يظهر في النموذج لضمان السرية إنما اسم يعطى لمكان النسخة (حقل جديد تضيفه في جدول المسارات) ، وبمجرد الضغط على المكان المطلوب الربط به يفحص الكود هل المسار موجود أم لا ثم يقوم بعملية الربط بين ال FE و BE .. وإذا وجد الكود أن المسار غير متوفر يعيد العملية من جديد .. 🙂 الكلام سهل بس التطبيق يريدله شغل 😅 على العموم تشكر مهندس جعفر على هذا الإثراء الكبير والطرح المتميز 🙂 ما شاء الله أفكارك كلها خارج الصندوق 🙂 ربي يحفظك 🌹
jjafferr قام بنشر مارس 8, 2022 الكاتب قام بنشر مارس 8, 2022 2 ساعات مضت, Moosak said: ما شاء الله أفكارك كلها خارج الصندوق 🙂 لا وانت الصادق ، اضطر افكر بهذه الطرق لإنجاز عملي 🙂 لهذا السبب ترى انه ما عندي مشاركات في اخفاء خلفية الاكسس ، او طرق الحمايات ، او ... ، بينما تخصصي في التعامل مع البيانات 🙂 اخوي موسى ، اليك آخر تحديث للموصوع ، وطريقة عملي: لما استلم برنامج جديد مجزأ الى واجهة وخلفية: في الواجهة FE ، امسك مفتاح الشفت وافتح الواجهة في وضع التصميم ، ثم اضع الكائنات التالية: الجدول tbl_ReLink_To_Original (تم عمل تغييرات على الجدول في المرفق) ، مع حذف جميع بياناته ، الماكرو Autoexec ، مع تغيير اسم اول نموذج يتم فتحه ، الوحدة النمطية basJStreetAccessRelinker وبدون المساس بها ، الوحدة النمطية m_Arc_Subs ، مع مراعاة استخدام النسخة الاحدث من الدالة f_ReLink_To_Original (انظر الكود في الاسفل) ، واضافة الدالة الجديدة f_Original_DB_Path_Append ، الدالة الجديدة f_Original_DB_Path_Append تقوم بجميع الخطوات اليدوية التي شرحتها في اول مشاركة ، وتقوم بإدخال مسارات الجداول المرتبطة في VBA في نافذة immediate اكتب (لاحظ ان علامة الاستفهام بالانجيزي) ?f_Original_DB_Path_Append اغلق البرنامج بعد حفظ كل شيء اعلاه ، افتح البرنامج بدون مسك مفتاح الشفت ، وسيسألني البرنامج عن مسار الجداول ، واخبره عن المسار ، ويشتغل البرنامج بالبيانات ، اقوم بجميع التعديلات/الزيادة المطلوبة ، وبعد كل تعديل اغلق البرنامج ، ثم استخدم البرنامج في الرابط التالي ، حتى ينظف برنامجي ويعمل لي نسخة احتياطية (وكثر ما اقول ، ما اوفي البرنامج حقه ، فكثير من الاحيان وبعد ايام او اشهر ، اضطر للرجوع الى احد النسخ القديمة والذي كان فيه كود قديم يشتغل ، ولكني استبدلته بكود جديد وظهر به اخطاء) : وفي النهاية اضغط البرنامج وارسله لصاحبه ، لما صاحبه يفتحه ، تلقائيا البرنامج يفتح بالطريقة العادية وبدون تدخل المستخدم في اي شيء 🙂 هذا هو الكود المعدل: Public Function f_ReLink_To_Original(Optional Seq As Integer = 1) On Error GoTo err_f_ReLink_To_Original ' ' this Function runs from startup, from AutoExec Macro. ' ' The client have his own path to the linked BE tables, ' yet for Development when we want to do changes and modifications on the FE, ' we want to link this FE to our local BE tables, for testing, ' and when we are done, we will send this FE back to the client, which will have our BE path, and that is the problem !! ' ' The Developer: ' since this Function runs from startup, but will NOT find the client BE, ' then the startup will run the Function jstCheckTableLinks_Full, which will prompt for the new BE path, and Link the FE to the BE. ' ' So I added a table tbl_ReLink_To_Original to the FE, and the path to the client BE path, as Seq = 1 , ' and for the Developer BE, the Seq is Not 1. ' ' for the Development BE path, we can run the DB normally, ' and the Function jstCheckTableLinks_Full will prompt asking for the BE path (since the DB will NOT find the BE from this Function), ' ' Or, if entered the DB while holding the Shift key, we can: ' call this Function, from the immediate window: ' ?f_ReLink_To_Original(2) ' ' or call this Function from any Event: ' Call f_ReLink_To_Original(2) ' ' ' The Client: ' And when the FE goes to the client, this Function will call Seq = 1 by default, thus returning their correct Path. ' ' ' by jjafferr ' ' v1.0, 24-Feb-2020 , One BE ' v2.0, 10-Jul-2020 , Multiple BEs ' v2.1, 13-Jul-2020 , Multiple BEs, but each table should be connected to it's owen BE !! ' , the table might be in different BE, so this way we connect it to the right BE ' Dim db As DAO.Database Dim tdf As DAO.TableDef Dim rst As DAO.Recordset Set db = CurrentDb 'assuming it is the Client, loop through his BE path Set rst = CurrentDb.OpenRecordset("Select [tbl_Name], [DB_Path] From tbl_ReLink_To_Original Where [Seq]=" & Seq) For Each tdf In db.TableDefs ' Only make a change if the table is a linked table If Len(tdf.Connect) Then rst.FindFirst "[tbl_Name] = '" & tdf.Name & "'" tdf.Connect = ";DATABASE=" & rst![DB_Path] tdf.RefreshLink ' if the table is not found in the DB Path, the Function will generate error 3011 End If 'Len Next Exit_f_ReLink_To_Original: rst.Close: Set rst = Nothing Exit Function err_f_ReLink_To_Original: If Err.Number = 3170 Then 'MsgBox "رجاء التاكد من مسار القاعدة الموجوده في الجدول" & vbCrLf & "tbl_ReLink_To_Original" 'Resume Next Resume Exit_f_ReLink_To_Original ElseIf Err.Number = 3011 Or Err.Number = 3044 Then 'this Table belonges to another DB, ignore, 'as the other DB Path will be checked too Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description Resume Exit_f_ReLink_To_Original End If End Function Public Function f_Original_DB_Path_Append() Dim mySQL As String DoCmd.SetWarnings False mySQL = "UPDATE tbl_ReLink_To_Original SET Seq = 5, Remarks = 'A different BE Path was added' WHERE Seq=1" DoCmd.RunSQL mySQL mySQL = "INSERT INTO tbl_ReLink_To_Original ( DB_Path, tbl_Name, Seq, Remarks )" mySQL = mySQL & " SELECT Database, Name, 1, 'Client'" mySQL = mySQL & " FROM MSysObjects WHERE Flags = 2097152 ORDER BY Database" DoCmd.RunSQL mySQL DoCmd.SetWarnings True End Function جعفر Relink Tables.zip 1
Moosak قام بنشر مارس 9, 2022 قام بنشر مارس 9, 2022 لله درك باش مهندس .. @jjafferr 😊🌺 كنت حاس يقينا أنه لديك إضافات وتحديثات للموضوع 👍😉 ما شاء الله عليك ، ومن وحي التجارب والحاجة تولد عجائب الأمور ... 😊 ولي إضافات من تجاربي على نفس هذا الموضوع ومحاولة لتطبيق الأفكار التي أثارها موضوعك في راسي قريبا إن شاء الله 😁 سأحاول تبسيط الأمور أكثر باستخدام نوافذ صديقة للمستخدم إن شاء الله 🤗 مستعينا بالله ثم خلاصة ما طورته أنت في هذا الشأن .. 1
ابوخليل قام بنشر مارس 9, 2022 قام بنشر مارس 9, 2022 شكرا اخوي جعفر انت شباب تحب الطريق وان طال واكيد تهوى السفر اما اخوك ابو خليل فعلى قولتهم حطني لقيتني .. لا ابتعد كثيرا .. حدي باب البيت او المسجد اللي هو ملاصق لبيتي الجدار بالجدار هذه مقدمة لوصف طريقتي مع برامجي غالبا اجعل قاعدة البيانات الخلفية في مكان محدد واحد في اجهزة العملاء .. لما اعمل تحديث وتطوير للواجهات وكنت رابطها على مسار الجداول التي في جهازي ومسارها هذا يختلف عن المسار الذي عند العملاء ، فقط ارسلها على وضعها الحالي ، والبرنامج هو من يبحث عن المكان الاصلي ويرتبط بقاعدة البيانات من دون ان يشعر العميل ، ولو فرضنا تم حذف مجلد البرنامج او ان العميل وضع الواجهات على جهاز آخر جديد .. هنا لن تعمل .. فقط تفتح لنصف ثانية ثم تقفل
ابوخليل قام بنشر مارس 9, 2022 قام بنشر مارس 9, 2022 وحدة نمطية صغيرة استخدمها في جميع برامجي ، اضع فيها مسار BE ونستدعيها في نموذج البداية . اذا اردت اشتغل عليها افتحها بالشفت واربط جداولي يدويا ولكني اذا نسيت وفتحتها مباشرة قبل الربط اليدوي تظهر لي هذه الرسالة على اعتبار ان ليس لدي BE في المكان الذي عند العملاء بمعنى : انه ينظر هل الربط صحيح والقاعدة المرتبط بها يدويا .. الآن موجودة فعلا فيفتح والا يذهب الى المسار المحدد فان لم يجد القاعدة اظهر الرسالة واغلق هل شغلي كذا تمام او من جنب القائم .. والموضوع يتحدث عن شيء آخر 1
jjafferr قام بنشر مارس 9, 2022 الكاتب قام بنشر مارس 9, 2022 اخوي ابوخليل ، ويقول المثل قديم البريسم ولا جديد الصوف 🙂 خلينا نشوف الكود لوسمحت علشان اطبق واجرب 🙂 جعفر 1
عمر ضاحى قام بنشر مارس 9, 2022 قام بنشر مارس 9, 2022 ما شاء الله بارك الله فيك استاذي الجليل ابو خليل ابداااع ربنا يجازيك عنا كل خير ويبارك لنا فى عمرك وصحتك وعلمك
ابوخليل قام بنشر مارس 9, 2022 قام بنشر مارس 9, 2022 3 ساعات مضت, jjafferr said: خلينا نشوف الكود لوسمحت علشان اطبق واجرب 🙂 الكود موجود في المنتدى وانا عرضته كاملا مع شروحات الأصل في اكثر من مشاركة تخص ربط الجداول ولكني هذبته لغرضي هذا الخاص هذا هو الكود: Public Function AutoLinks(ByVal strDBPassword As String) As Boolean On Error GoTo AutoLinksErr Dim tdf As TableDef Dim strNewMDB As String For Each tdf In CurrentDb.TableDefs If UCase(Left(tdf.name, 6)) <> "COMPAS" Then If Len(tdf.Connect) > 0 And tdf.Fields.Count = 0 Then strNewMDB = "c:\bader\BData.db" If (IsNull(strDBPassword) = True) Or (strDBPassword = "") Then tdf.Connect = ";DATABASE=" & strNewMDB Else tdf.Connect = ";DATABASE=" & strNewMDB & ";PWD=" & strDBPassword End If tdf.RefreshLink End If End If Next tdf AutoLinks = True ' AutoLinksDone: Exit Function AutoLinksErr: MsgBox "لا يوجد قاعدة بيانات فضلا اتصل بالدعم الفني" 'MsgBox "Error #" & err.Number & ": " & err.Description, vbCritical Resume AutoLinksDone End Function ويتم مناداته في نموذج البداية على هذا النحو : If AutoLinks("") = False Then Call Application.Quit End If وهذا مرفق صغير عبارة عن مجلد .. تم اعداده على ان يتم وضع المجلد على قرص C وللتجربة يمكن اخذ نسخة من القاعدة الخلفية BDAta.db ولصقها في اي مكان آخر وتغيير اللاحقة الى mdb واجراء التجربة bader.rar 1
jjafferr قام بنشر مارس 9, 2022 الكاتب قام بنشر مارس 9, 2022 شكرا جزيلا اخوي ابوخليل 🙂 بكرة الصباح اشوف الموضوع من اول وجديد ان شاء الله 🙂 جعفر
Moosak قام بنشر مارس 10, 2022 قام بنشر مارس 10, 2022 السلام عليكم مجددا 🙂 إنتهيت ولله الحمد من تصميم وبرمجة الفكرة التي أشرت إليها سابقا .. وهذه مجرد تشويقة للموضوع 🙂 وسوف أفرد موضوع خاص بهذا الأمر إن شاء الله 🙂 ======================================================= في البداية صممت قاعدة بيانات تقوم بحفظ المسارات ( مسارات ال Back End) أو نسخة الجداول التي يتم ربطها بها .. وذلك للعودة إليها لاحقا بدل البحث عنها في كل مرة 🙂 وكذلك لتجنب أن يعرف الزبون أو العميل أو المستخدم النهائي المكان الذي تم وضع قاعدة البيانات به .. 😉 أول ما نشغل البرنامج ( أو الـ Front End ) في الجهاز وما يلاقي ال BE ستظهر هذي النافذة : كما هو ملاحظ .. - عندنا 4 مواقع أو أربع BE مخزنة لنفس هذا البرنامج . - الروابط الحقيقية غي ظاهرة للمستخدم .. فقط أسم الملف يظهر . - النقاط الحمراء والخضراء تحت العنوان ( متوفرة؟) .. ( الخضراء ) تخبرنا بالروابط المتاحة حالياً ويمكن الاتصال بها ، ( والحمراء ) تخبرنا بالمواقع الغير متوفرة حاليا 🙂 . وذلك باعتبرار أننا نشتغل من جهاز المبرمج حاليا 🙂 - تاريخ الإضافة يبين لي التاريخ الذي تم إضافة هذا الرابط فيه وذلك للتأكد من تاريخ النسخة التي أريد العمل عليها . وهذه طريقة الاتصال بالقواعد المخزنة : ( لا يفوتك شريط التقدم 😉 .. هذا لوحده حكاية .. من إبداعاتي طبعا 😅 ) - طبعا لاحظتوا أنه مباشرة بعد الاتصال بنجاح يفتح لنا صفحة الدخول على طول 🙂 ثانيا : في حال عدم تطابق أي نسخة من النسخ المخزنة الحالية .. : - يمكن عمل اتصال جديد من خلال الزر [ إنشاء اتصال جديد ] .. - وسوف البرنامج تلقائيا بحفظ المسار الجديد من ضمن القائمة ( قائمة المسارات المخزنة ) . - وعند فتح البرنامج مرة أخرى سنجد أن البرنامج قام بحفظ المسار الجديد من ضمن القائمة 🙂 ثالثا : خيار تحرير المسارات المخزنة ( إضافة / حذف / تعديل ) : - هذا الخيار محمي بكلمة سر ( خاصة بالمبرمج ) يطلبها البرنامج للدخول على نافذة التعديل 🙂 - يمكن إضافة مسارات جديدة هنا بكل سهولة .. مثلا في حال عدم وجودك في موقع الزبون لكي تربط ال FE بال BE لتخزينه في الجدول ، يمكنك نسخ الرابط من هناك أو كتابته يدويا ليكون من ضمن القائمة 🙂 أما بخصوص طريقة فتح البرنامج بدون نوافذ علوية ومع إخفاء نافذة العناصر .. فجمعتها كلها في موديول واحد اسمه Start أناديه من خلال ماكرو البداية المسمى بالـ AutoEXEC 🙂 .. - فقط عليك أن ترسل له ثلاثة أشياء ( متغيرات ) : 1- اسم نموذج البداية ( أول نموذج تريده يفتح في البرنامج ) 2- هل تريد ظهور النوافذ العلوية ونافذة العناصر ؟ تكتب : ( True / False ). 3- اسم أحد الجداول ( المرتبطة ) ،،،، لاحظ المرتبطة 🙂 وذلك بهدف فحص ما إذا كانت الواجهة مرتبطة بقاعدة البيانات أو لا . فمن خلال هذا الموديول لن تحتاج للدخول فيه لتغيير الإعدادات .. فقط عليك كتابة المتغيارات هنا في ماكرو ال AutoEXEC . هذا والسلام 🙂 وبانتظار رأيكم واقتراحاتكم أساتذتي الأعزاء للتطوير .. 🙂 وبعدها سأنشر الملفات كلها هنا ليستفيد منها الجميع 🙂 أخوكم ... موسى الكلباني 1 1
معاذ الجماعي قام بنشر مارس 10, 2022 قام بنشر مارس 10, 2022 1 ساعه مضت, Moosak said: السلام عليكم مجددا 🙂 إنتهيت ولله الحمد من تصميم وبرمجة الفكرة التي أشرت إليها سابقا .. وهذه مجرد تشويقة للموضوع 🙂 وسوف أفرد موضوع خاص بهذا الأمر إن شاء الله 🙂 ======================================================= في البداية صممت قاعدة بيانات تقوم بحفظ المسارات ( مسارات ال Back End) أو نسخة الجداول التي يتم ربطها بها .. وذلك للعودة إليها لاحقا بدل البحث عنها في كل مرة 🙂 وكذلك لتجنب أن يعرف الزبون أو العميل أو المستخدم النهائي المكان الذي تم وضع قاعدة البيانات به .. 😉 أول ما نشغل البرنامج ( أو الـ Front End ) في الجهاز وما يلاقي ال BE ستظهر هذي النافذة : كما هو ملاحظ .. - عندنا 4 مواقع أو أربع BE مخزنة لنفس هذا البرنامج . - الروابط الحقيقية غي ظاهرة للمستخدم .. فقط أسم الملف يظهر . - النقاط الحمراء والخضراء تحت العنوان ( متوفرة؟) .. ( الخضراء ) تخبرنا بالروابط المتاحة حالياً ويمكن الاتصال بها ، ( والحمراء ) تخبرنا بالمواقع الغير متوفرة حاليا 🙂 . وذلك باعتبرار أننا نشتغل من جهاز المبرمج حاليا 🙂 - تاريخ الإضافة يبين لي التاريخ الذي تم إضافة هذا الرابط فيه وذلك للتأكد من تاريخ النسخة التي أريد العمل عليها . وهذه طريقة الاتصال بالقواعد المخزنة : ( لا يفوتك شريط التقدم 😉 .. هذا لوحده حكاية .. من إبداعاتي طبعا 😅 ) - طبعا لاحظتوا أنه مباشرة بعد الاتصال بنجاح يفتح لنا صفحة الدخول على طول 🙂 ثانيا : في حال عدم تطابق أي نسخة من النسخ المخزنة الحالية .. : - يمكن عمل اتصال جديد من خلال الزر [ إنشاء اتصال جديد ] .. - وسوف البرنامج تلقائيا بحفظ المسار الجديد من ضمن القائمة ( قائمة المسارات المخزنة ) . - وعند فتح البرنامج مرة أخرى سنجد أن البرنامج قام بحفظ المسار الجديد من ضمن القائمة 🙂 ثالثا : خيار تحرير المسارات المخزنة ( إضافة / حذف / تعديل ) : - هذا الخيار محمي بكلمة سر ( خاصة بالمبرمج ) يطلبها البرنامج للدخول على نافذة التعديل 🙂 - يمكن إضافة مسارات جديدة هنا بكل سهولة .. مثلا في حال عدم وجودك في موقع الزبون لكي تربط ال FE بال BE لتخزينه في الجدول ، يمكنك نسخ الرابط من هناك أو كتابته يدويا ليكون من ضمن القائمة 🙂 أما بخصوص طريقة فتح البرنامج بدون نوافذ علوية ومع إخفاء نافذة العناصر .. فجمعتها كلها في موديول واحد اسمه Start أناديه من خلال ماكرو البداية المسمى بالـ AutoEXEC 🙂 .. - فقط عليك أن ترسل له ثلاثة أشياء ( متغيرات ) : 1- اسم نموذج البداية ( أول نموذج تريده يفتح في البرنامج ) 2- هل تريد ظهور النوافذ العلوية ونافذة العناصر ؟ تكتب : ( True / False ). 3- اسم أحد الجداول ( المرتبطة ) ،،،، لاحظ المرتبطة 🙂 وذلك بهدف فحص ما إذا كانت الواجهة مرتبطة بقاعدة البيانات أو لا . فمن خلال هذا الموديول لن تحتاج للدخول فيه لتغيير الإعدادات .. فقط عليك كتابة المتغيارات هنا في ماكرو ال AutoEXEC . هذا والسلام 🙂 وبانتظار رأيكم واقتراحاتكم أساتذتي الأعزاء للتطوير .. 🙂 وبعدها سأنشر الملفات كلها هنا ليستفيد منها الجميع 🙂 أخوكم ... موسى الكلباني الأخ موسى الكلباني @ الفكرة اعجبتني جدا جدا جدا ومجهود يستحق الشكر والتقدير ولأول مرة اضفت ردا في هذا المنتدى الذي افادنا كثيرا ونشكر القائمين عليه وكل من نشر او شارك بهدف ان يستفيد الجميع نرجوا تنزيل الملف مفتوح المصدر نستفيد وجزاك الله خير اسأل الله ان يجعلها في ميزان حسناتك 1
Moosak قام بنشر مارس 10, 2022 قام بنشر مارس 10, 2022 1 ساعه مضت, معاذ الجماعي said: الأخ موسى الكلباني @ الفكرة اعجبتني جدا جدا جدا ومجهود يستحق الشكر والتقدير ولأول مرة اضفت ردا في هذا المنتدى الذي افادنا كثيرا ونشكر القائمين عليه وكل من نشر او شارك بهدف ان يستفيد الجميع نرجوا تنزيل الملف مفتوح المصدر نستفيد وجزاك الله خير اسأل الله ان يجعلها في ميزان حسناتك العفو أخي العزيز .. 🙂 لازلت أنتظر رأي ومقترحات السادة الخبراء والأعضاء الأفذاذ للتطوير وسماع الآراء بهدف إيجاد حلول متكاملة تخدم المطورين والمبرمجين .. ولعل الاستماع للتجارب والمواقف المختلفة للأعضاء يفيدنا في تلافي الأخطاء عند التصميم ويسهل علينا العمل مستقبلا . 😊 2
jjafferr قام بنشر مارس 11, 2022 الكاتب قام بنشر مارس 11, 2022 السلام عليكم اخوي ابوخليل 🙂 الهدف من هذا الموضوع: 1. عند عمل المبرمج واجهة برنامجه FE ، فيحتاج الى عمل ربط لجداوله BE في جهازه ، 2. عند ارسال الواجهة للمستخدم ، فيجب ان يعمل البرنامج بدون تدخل المستخدم بإختيار مسار قاعدة البيانات ، 1. عند استلام المبرمج واجهة البرنامج للتعديل/الاضافة ، فيحتاج الى عمل ربط لجداوله BE في جهازه ، 2. عند ارجاع الواجهة للمستخدم ، فيجب ان يعمل البرنامج بدون تدخل المستخدم بإختيار مسار قاعدة البيانات. وهناك تشابه كبير بين طريقتي وطريقتك ، وهناك نقاط قوة وضعف في الطريقتين 🙂 جعفر 1
Moosak قام بنشر مارس 11, 2022 قام بنشر مارس 11, 2022 36 دقائق مضت, jjafferr said: السلام عليكم اخوي ابوخليل 🙂 وعليكم السلام ورحمة الله وبركاته عمي جعفر 🌹😊 هل الكلام موجه لأبو خليل ؟ أم لكلينا ؟ 😅
jjafferr قام بنشر مارس 11, 2022 الكاتب قام بنشر مارس 11, 2022 انت اصبر دورك جاي🙂 في الواقع كتبت عدة اسطر في المشاركة السابقة ، بعدين اختصرتها في كلمتين 🙂 جعفر 1
Moosak قام بنشر مارس 21, 2022 قام بنشر مارس 21, 2022 السلام عليكم ورحمة الله وبركاته .. رجعت لك من جديد عمي جعفر @jjafferr ( ما نسيت السالفة ) 😅 هذي المرة راجع مع إضافات مميزة 🙂 .. أخذت ملاحظاتك للأستاذ أبو خليل بعين الاعتبار 👍😉 في 11/3/2022 at 19:45, jjafferr said: 1. عند عمل المبرمج واجهة برنامجه FE ، فيحتاج الى عمل ربط لجداوله BE في جهازه ، 2. عند ارسال الواجهة للمستخدم ، فيجب ان يعمل البرنامج بدون تدخل المستخدم بإختيار مسار قاعدة البيانات ، 1. عند استلام المبرمج واجهة البرنامج للتعديل/الاضافة ، فيحتاج الى عمل ربط لجداوله BE في جهازه ، 2. عند ارجاع الواجهة للمستخدم ، فيجب ان يعمل البرنامج بدون تدخل المستخدم بإختيار مسار قاعدة البيانات. إليك الجديد في البرنامج : أول شيء عليك أن تقوم به (كمبرمج) هو إضافة روابط قواعد البيانات الخلفية للاتصال وتخزينها في البرنامج ( لاحظ أن جدول قواعد البيانات المخزنة هو جدول محل وليس جدول مرتبط) .. وهذا الجديد : 1 - أضفت خيار الاتصال التلقائي 🙂 : البرنامج يتصل تلقائيا بأول قاعدة جداول يجدها عند توافر 3 شروط : 1- يكون خيار (اتصال تلقائي )مفعل 2- يكون خيار (عرض المسار )مفعل 3- تكون القاعدة متوفرة. 2 - أضفت خيار عرض المسار : لعرض المسار في قائمة المسارات اللي تظهر أو عدم عرضه وتخزينه فقط لاعتبارات تخدم المبرمج فقط 🙂 3 - أضفت خيار كتابة كلمة مرور قاعدة البيانات في حال كان لها باسوورد ، في حالة لا يوجد كلمة مرور يترك الحقل فاضي والبرنامج سيتعامل معها بطريقته . ---------------------------------------------------------------------------------- الآن باعتبار أن لدينا ثلاث قواعد بيانات وكلها مخزنة في الجدول .. هكذا تقوم القاعدة بالإتصال التلقائي لما نكون في جهاز المبرمج : 🙂 ولما ننتقل إلى جهاز العميل .. يقوم البرنامج بالاتصال تلقائيا بقاعدة البيانات في جهازة .. وعندما لايجد البرنامج أي قاعدة بيانات متوفرة .. يفتح لك نافذة إنشاء اتصال جديد .. أو أنك تعدل الروابط في قسم التعديل .. ====================================================== الآن لإلغاء موضوع الاتصال التلقائي يحتاج أنك تلغي الخيار (اتصال تلقائي ) بتلك القاعدة .. ويمكنك تحطه لقاعدة معينة وتلغيه من الباقيات .. بعد كذا عند الفتح ( لما تكون ألغيت الاتصال التلقائي ) ستظهر لك هذي النافذة مباشرة ( الاتصال اليدوي بقاعدة البيانات ) : لاحظ أنه يخبرك في الأسفل بآخر قاعدة كان متصل بها .. أو القاعدة اللي متصل بها الآن 🙂 بالمناسبة الآن بعد إضافة حقل لكلمة المرور الخاصة بقاعدة البيانات .. الآن البرنامج يسألك إذا كان لها باسوورد أو لا عند عمل اتصال بقاعدة جديدة 🙂 ===================================================================== وبخصوص ماكرو ال Autoexc تم تطويره أيضا 🙂 وضيفة الماكرو أنه يشغل لنا دالة اسمها Start .. ولها 4 متغيرات هذي المرة بدل 3 🙂 1 - تعطيها اسم أول نموذج أو فورم تريده يشتغل . 2- تكتب ( true / False ) وذلك لتقفيل البرنامج بشكل كامل وإخفاء النوافذ العلوية وتعطيل القوائم الخاصة ووو ... إلخ 😁 ( باختصار تجهيز البرنامج للتسليم النهائي). 3- تكتب ( true / False ) في حالة أنك تريد تفعيل خاصية الاتصال التلقائي لقاعدة الجداول أو تعطيله . 4 - نكتب فيه اسم أحد الجداول المرتبطة وذلك لفحص إذا كان البرنامج متصل بقاعدة البيانات (الجداول) أو لا .. شي أكثر من كذا دلع !! 😄 ====================================== والآن مع اللحظة الحاسمة .. ملف التحميل 😊 طبعا الغرض الأساسي من وضع العمل هنا .. لارتباطة بالموضوع الأساسي لأستاذنا @jjafferr وأيضا يهمني رأيه ورأيكم جميعا في هذا الابتكار بغرض التعديل والتطوير والتحسين 🙂 والهدف الأكبر خدمة المبرمجين وتسهيل حياتهم 😊 المرفق : Auto Reconnect FE.zip 1 1
jjafferr قام بنشر مارس 21, 2022 الكاتب قام بنشر مارس 21, 2022 وعليكم السلام اخوي موسى 🙂 فتحت البرنامج ، ورحبت بي رسالة خطأ . هذا الرابط يوضح لك ما هي المشكلة . جعفر
Moosak قام بنشر مارس 21, 2022 قام بنشر مارس 21, 2022 7 دقائق مضت, jjafferr said: فتحت البرنامج ، ورحبت بي رسالة خطأ يا ساتر 😅 .. الحين اسم البرنامج انجليزي والقاعدة انجليزي !! ما العمل ؟ أنت حليت المشكلة ولا تختبرني ؟ 😁✋🏻
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.