Foksh قام بنشر ديسمبر 28, 2024 قام بنشر ديسمبر 28, 2024 (معدل) السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء ) بالإشارة الى الموضوع الذي أعلنت عنه سابقاً في هذا الرابط هنا ، اسمحوا لي بأن أطرح هذه الفكرة الجديدة والتي تم تجربتها مراراً وتكراراً إلى أن خرجت بهذه النتيجة فيما يتعلق بموضوع التحديث الهوائي أو Online أو OTA ( Over-The-Air ) . الموضوع بداية بسيط جداً ولن يحتاج تعقيد في تنفيذ هذه الطريقة . حيث ما يلزمنا أولاً هو حساب على Google Drive ( لماذا ؟ = لأن 95 % من الأشخاص عندهم هذا الحساب ) . و حساب على موقع Dropbox ( لماذا ؟ = لأنه يعطينا امكانية التحميل برابط مباشر خلافاً في جوجل درايف ) وهو ما يميزه عن Google Drive . بناءً على ما سلف ، نبدأ شرح الخطوات والمتطلبات على بركة الله :- 1. سنحتاج جدول واحد مرفق وهو ( Settings ) ، ولا أنصح بالتلاعب به ما لم يكن على أساس صحيح ؛ ويحتوي على الحقول التالية :- الحقل Ver = رقمي = لتحديد الإصدار الحالي للنسخة الحالية في قاعدة البيانات الحالية. الحقل Link = نصي = لتحديد رابط الملف النصي الذي سيتم قراءة الإصدار الجديد منه ومقارنته مع قيمة الحقل Ver لتحديد ما اذا كان هناك نسخة جديدة أم لا . الحقل URLS = نصي = سيتم ادراج رابط التحميل للإصدار الجديد من خلال الكود تلقائياً. الحقل DBName = نصي = سيمكانك هنا من تحديد اسم قاعدة البيانات التي سيتم حفظ التحديث الجديد بها . وهنا لتسهيل فكرة اسم القاعدة القديمة واستبدالها بالنسخة الجديدة سيتم جلب القيمة تلقائياً . الحقل Auto_Check = نوع Yes/No = لتفعيل ميزة الفحص التلقائي للتحديثات ( فكرة شبيهة بتلك التي في أجهزة الجوال والمحمول عند تفعيلها يصلك إشعارك بوجود نسخة جديدة إن كانت الميزة مفعلة طبعاً ) 2. تحميل الإصدار الجديد على موقع Dropbox ونسخ رابط الملف ( مع التأكد أن الملف عند مشاركته قد تمت مشاركته للجميع - الموقع يجعلها قيمة افتراضية - ولكن للتأكيد ) . 3. ملف نصي واحد ( TxT. ) سميه ما شئت وهو ثابت غير قابل للتبديل ، ويكون محتواه ما يلي :- السطر الأول نضع رقم الإصدار الجديد . اي انه في الملف القديم لنفترض ان قيمة الحقل Ver = 0.1 . هنا في الملف النصي سنضع الإصدار الأحدث أي مثلاً ( 0.2 ). السطر الثاني نضع رابط النسخة الحديثة التي تم رفعها على Dropbox في النقطة السابقة 2 . أي انه سيكون لدينا ملف نصي يحتوي سطرين الأول رقم الإصدار الحديث والذي ستتم قراءته و مقارنته مع الحقل Ver في الإصدار الذي لدى العميل ، والسطر الثاني رابط النسخة الأحدث من دروب بوكس . 4. سنقوم برفع هذا الملف النصي على جوجل درايف ( السبب : دروب بوكس لم يدعم فكرة قراءة الملف النصي وجلب قيمة رقم الاصدار في السطر الأول لمقارنتها مع القيمة في النسخة التي لدى العميل في الحقل Ver ) . 5. ثم سنقوم بنسخ الرابط لهذا الملف النصي ومشاركته للجميع - أو بمعنى آخر لمن يملك الرابط - ولصقه في الجدول الثابت Settings في الحقل Link وهو هنا سيكون أيضاً قيمة ثابتة لن تتغير . أي أنك ستقوم بتغيير فقط رقم الإصدار في النسخة الجديدة في الحقل Ver . وإعادة رفع الملف النصي بعد تحديث قيمة رقم الاصدار الجديد فقط . طبعاً هنا بالإفتراض جدلاً وبعد تجربة متكررة أنه عندما تقوم برفع ملف موجود مسبقاً على أي موقع من ( جوجل درايف أو دروب بوكس ) فأن العنوان لهذا الملف لن يتغير لأنه سيتم استبدال الملف القديم بالجديد . ( وهي نقطة جيدة استفدنا منها لصالحنا ). 6. الآن الفكرة بشكل عام واضحة ولا تحتاج لتعقيد في الشرح ( وأي فكرة أو طريقة في البداية ستحتاج مرات معدودة لتصبح سهلة في تطبيقها عن ظهر قلب ) الآن وما هو مهم للجميع ، الكود التالي للمديول :- '********************************************** '*** *** '*** FFFFFF OOO KK KK SSSS HH HH *** '*** FF O O KK KK SS HH HH *** '*** FFFFF O O KKK SS HHHHHH *** '*** FF O O KK KK SS HH HH *** '*** FF OOO KK KK SSSSS HH HH *** '*** *** '*************** ( 28/12/2024 ) *************** Option Compare Database Option Explicit Public Function IsInternetConnected() As Boolean On Error GoTo ErrorHandler Dim xhr As Object Set xhr = CreateObject("MSXML2.ServerXMLHTTP.6.0") xhr.SetOption 2, 13056 xhr.Open "GET", "https://www.google.com", False xhr.send IsInternetConnected = (xhr.Status = 200) Set xhr = Nothing Exit Function ErrorHandler: IsInternetConnected = False If Not xhr Is Nothing Then Set xhr = Nothing End Function Public Function ConvertGoogleDriveLink(ByVal originalLink As String) As String On Error GoTo ErrorHandler Dim FileID As String If InStr(1, originalLink, "/d/") > 0 Then FileID = Mid(originalLink, InStr(1, originalLink, "/d/") + 3) FileID = Left(FileID, InStr(1, FileID, "/") - 1) ElseIf InStr(1, originalLink, "id=") > 0 Then FileID = Mid(originalLink, InStr(1, originalLink, "id=") + 3) If InStr(1, FileID, "&") > 0 Then FileID = Left(FileID, InStr(1, FileID, "&") - 1) End If End If If Len(FileID) > 0 Then ConvertGoogleDriveLink = "https://drive.google.com/uc?id=" & FileID Else ConvertGoogleDriveLink = originalLink End If Exit Function ErrorHandler: ConvertGoogleDriveLink = originalLink End Function Public Function CheckForUpdate() As Boolean On Error GoTo ErrorHandler Dim currentVer As Double Dim onlineVer As Double Dim xhr As Object Dim onlineContent As String Dim driveLink As String Dim contentLines() As String Dim updateURL As String Dim currentDBName As String currentDBName = CurrentDb.Name currentDBName = Mid(currentDBName, InStrRev(currentDBName, "\") + 1) currentDBName = Left(currentDBName, InStrRev(currentDBName, ".") - 1) CurrentDb.Execute "UPDATE Settings SET DBName = '" & Replace(currentDBName, "'", "''") & "'" currentVer = DLookup("Ver", "Settings") If Not IsInternetConnected() Then Forms!Frm_Index!Lbl_Load.Caption = "أنت تستخدم الإصدار: " & currentVer CheckForUpdate = False Exit Function End If driveLink = ConvertGoogleDriveLink(DLookup("Link", "Settings")) Set xhr = CreateObject("MSXML2.ServerXMLHTTP.6.0") xhr.SetOption 2, 13056 xhr.Open "GET", driveLink, False xhr.setRequestHeader "User-Agent", "Mozilla/5.0" xhr.send If xhr.ReadyState = 4 Then If xhr.Status = 200 Then onlineContent = Trim(xhr.responseText) contentLines = Split(onlineContent, vbCrLf) If UBound(contentLines) >= 1 Then onlineVer = Val(contentLines(0)) updateURL = Trim(contentLines(1)) If onlineVer > 0 Then If onlineVer > currentVer Then CurrentDb.Execute "UPDATE Settings SET URLS = '" & updateURL & "'" Forms!Frm_Index!Lbl_Load.Caption = " تحديث جديد متوفر الآن : " & onlineVer & " Ver - انقر للتحميل " Forms!Frm_Index!ImgUpdate.Visible = True CheckForUpdate = True Forms!Frm_Index!Tx_User.Enabled = True Forms!Frm_Index!Tx_Pass.Enabled = True Forms!Frm_Index!Tx_User.SetFocus Else Forms!Frm_Index!Lbl_Load.Caption = "أنت تستخدم أحدث إصدار : " & onlineVer & " Ver " Forms!Frm_Index!Tx_User.Enabled = True Forms!Frm_Index!Tx_Pass.Enabled = True Forms!Frm_Index!Tx_User.SetFocus End If End If End If End If End If Set xhr = Nothing Exit Function ErrorHandler: CheckForUpdate = False If Not xhr Is Nothing Then Set xhr = Nothing End Function Sub UpdateURLSAndOpenNewDatabase() Dim UrlValue As String, NameValue As String Dim TargetDb As DAO.Database Dim rs As DAO.Recordset Dim CurrentDbPath As String Dim NewDbPath As String CurrentDbPath = CurrentProject.Path & "\" & Dir(CurrentProject.FullName) NewDbPath = CurrentProject.Path & "\Data\Update.accdb" If Dir(CurrentProject.Path & "\Data\Update.Dll") <> "" Then Name CurrentProject.Path & "\Data\Update.Dll" As NewDbPath Else MsgBox "الملف Update.Dll غير موجود", vbCritical Exit Sub End If On Error GoTo ErrorHandler UrlValue = Nz(CurrentDb.OpenRecordset("SELECT URLS FROM Settings").Fields("URLS").Value, "") NameValue = Nz(CurrentDb.OpenRecordset("SELECT DBName FROM Settings").Fields("DBName").Value, "") If UrlValue = "" Or NameValue = "" Then MsgBox "خطأ في تحميل التحديث", vbCritical Exit Sub End If Set TargetDb = DBEngine.OpenDatabase(NewDbPath) Set rs = TargetDb.OpenRecordset("Settings", dbOpenDynaset) If rs.EOF Then rs.AddNew rs.Fields("URLS").Value = UrlValue rs.Fields("DBName").Value = NameValue rs.Update Else rs.MoveFirst rs.Edit rs.Fields("URLS").Value = UrlValue rs.Fields("DBName").Value = NameValue rs.Update End If rs.Close TargetDb.Close Shell "msaccess.exe """ & NewDbPath & """", vbNormalFocus Application.Quit Exit Sub ErrorHandler: MsgBox "حدث خطأ: " & Err.Description, vbCritical If Not rs Is Nothing Then rs.Close If Not TargetDb Is Nothing Then TargetDb.Close Exit Sub End Sub Public Function ExtractAttachmentFile() As Boolean On Error GoTo ErrorHandler Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsAttach As DAO.Recordset2 Dim fld As DAO.Field2 Dim dataFolder As String dataFolder = CurrentProject.Path If Dir(dataFolder, vbDirectory) = "" Then MkDir dataFolder End If Set db = CurrentDb Set rs = db.OpenRecordset("Settings") If Not rs.EOF Then Set fld = rs.Fields("DBFiles") If Not IsNull(fld) Then Set rsAttach = fld.Value If Not rsAttach.EOF Then rsAttach.Fields("FileData").SaveToFile dataFolder & "\" & rsAttach.Fields("FileName").Value ExtractAttachmentFile = True End If rsAttach.Close End If End If CleanUp: If Not rs Is Nothing Then rs.Close Set rs = Nothing Set db = Nothing Exit Function ErrorHandler: ExtractAttachmentFile = False Resume CleanUp End Function وما يلي كود النموذج لجميع الأجزاء والمكونات داخله :- '********************************************** '*** *** '*** FFFFFF OOO KK KK SSSS HH HH *** '*** FF O O KK KK SS HH HH *** '*** FFFFF O O KKK SS HHHHHH *** '*** FF O O KK KK SS HH HH *** '*** FF OOO KK KK SSSSS HH HH *** '*** *** '*************** ( 28/12/2024 ) *************** Option Compare Database Option Explicit Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private bMessage20Displayed As Boolean Private bMessage35Displayed As Boolean Private bMessage50Displayed As Boolean Private LoginAttempts As Integer Dim TimeCount As Long Private Sub Btn_Quit_Click() Dim userResponse As VbMsgBoxResult userResponse = MsgBox("إغلاق النظام؟", _ vbYesNo + vbInformation + vbMsgBoxRight, "تأكيد عملية الإغلاق") If userResponse = vbYes Then DoCmd.Quit ElseIf userResponse = vbNo Then DoCmd.CancelEvent End If End Sub Private Sub Form_Load() ExtractAttachmentFile LoginAttempts = 0 Me.Caption = "Foksh - Officena.Net - 2025" DoEvents If Check_Auto = -1 Then Me.TimerInterval = 1000 Else Me.TimerInterval = 0 Me.Lbl_Load.Caption = "" End If End Sub Private Sub Form_Timer() Me.TimerInterval = 0 CheckForUpdate End Sub Private Sub ImgUpdate_Click() On Error GoTo ErrorHandler Dim userResponse As VbMsgBoxResult userResponse = MsgBox("التحديث الآن؟", _ vbYesNo + vbInformation + vbMsgBoxRight, "تأكيد عملية التحديث") If userResponse = vbYes Then UpdateURLSAndOpenNewDatabase ElseIf userResponse = vbNo Then DoCmd.CancelEvent End If ErrorHandler: Resume Next End Sub ما يتم تنفيذه عند استعمال الفكرة :- أولاً عند الفتح للمشروع سيتم استخراج ملف DLL مرفق داخل قاعدة البيانات . ثانياً عند اكتمال التحديث سيتم استبدال النسخة القديمة بالنسخة الجديدة ، وشأنه شأن أي عملية تحديث ؛ فإنك ستفقد النسخة القديمة كاملةً ( وهنا الحاجة الماسة لاعتماد فكرة تقسيم قاعدة البيانات ) . ملف الواجهة المرفق مفتوح المصدر 👈 [ Main.accdb ] * عذراً إن كانت طريقتي في العمل مزعجة أو غريبة نوعاً ما ، لكن هو طبعي 😅 . فماذا أفعل ؟؟!! تم تعديل ديسمبر 29, 2024 بواسطه Foksh تعديلات نصية وتصحيح أخطاء إملائية 💡 6 2
Eng Feras Abu Saleh قام بنشر ديسمبر 28, 2024 قام بنشر ديسمبر 28, 2024 (معدل) اللهم نور له قبره وآنس وحشته ووسع مدخله، اللهمّ افسح له في قبره مدّ بصره، وافرش قبره من فراش الجنّة،اللهمّ احشره مع أصحاب اليمين، واجعل تحيّته سلامٌ لك من أصحاب اليمين تم تعديل ديسمبر 28, 2024 بواسطه Eng Feras Abu Saleh 1
فريدالطحان قام بنشر ديسمبر 28, 2024 قام بنشر ديسمبر 28, 2024 اللهم نور له قبره وآنس وحشته ووسع مدخله، اللهمّ افسح له في قبره مدّ بصره، وافرش قبره من فراش الجنّة،اللهمّ احشره مع أصحاب اليمين، واجعل تحيّته سلامٌ لك من أصحاب اليمين 1
gamal gamal قام بنشر ديسمبر 28, 2024 قام بنشر ديسمبر 28, 2024 جزاك الله خيرا ونفع بك ورحم الله والديك وأسكنهم جنات النعيم ... 1
عاشق الرقي قام بنشر ديسمبر 28, 2024 قام بنشر ديسمبر 28, 2024 بارك الله في جهودك وجميع الأعضاء بلا إستثناء ثم نسأل الله العلي القدير ان يغفر لوالدينا وجميع موتى المسلمين الله أغفر لهم وارحمهم وآنس وحشتهم ووسع مدخلهم وأكرم نزلهم وأفرش لهم من فرش الجنة يارب 1
Foksh قام بنشر ديسمبر 29, 2024 الكاتب قام بنشر ديسمبر 29, 2024 سيتم تحديث الملف الذي يتم تنزيله من التحديث بين فترة وأخرى ، لضمان أن الفكرة تعمل بدون مشاكل
ابو جودي قام بنشر ديسمبر 29, 2024 قام بنشر ديسمبر 29, 2024 اللهم يا باسط اليدين بالعطايا يا قريب يا مجيب دعوة الداع إذا دعاه يا حنان يا منّان يا رب يا أرحم الراحمين يا بديع السموات والرض يا أحد يا صمد اعطي كل من توفيته من المسلمين من خير ما أعطيت به نبيك محمد صلى الله عليه وسلم عطاء ماله من نفاد من مالك خزائن السموات والأرض عطاء عظيماً من رب عظيم عطاء ماله من نفاد عطاء أنت له اهل عطاء يليق بجلال وجهك وعظيم سلطانك اللهم ان كل من توفيته من المسلمين في كفالتك وفي ضيافتك وأنت أهل الجود والكرم فيارب أكرمهم ووسع مدخلهم واغفر لهم يارب كل خطاياهم وبدل سيئاتهم حسنات برحمتك وجودك وعفوك اللهم اغفر لكل المسلمين الاحياء منهم والاموات يارب العالمين... امين امين امين 18 ساعات مضت, Foksh said: * عذراً إن كانت طريقتي في العمل مزعجة أو غريبة نوعاً ما ، لكن هو طبعي 😅 . فماذا أفعل ؟؟!! بل السؤال الصحيح ماذا نفعل نحن جزاكم الله خيـــــرا على الافكار النيرة 1
Foksh قام بنشر ديسمبر 29, 2024 الكاتب قام بنشر ديسمبر 29, 2024 25 دقائق مضت, ابو جودي said: بل السؤال الصحيح ماذا نفعل نحن إحنا نروح الشرطة 1
Moosak قام بنشر ديسمبر 29, 2024 قام بنشر ديسمبر 29, 2024 غفر الله لك ولوالديك ، وأسكن الله موتاكم وموتانا وموتى المسلمين مساكن الأنبياء والصالحين والصديقين والشهداء وحسن أولئك رفيقا .. وزادك الله من علمه وهداه وتقواه، وأغناك الله من واسع فضله، وفتح لك فتوح العارفين، وألبسك لباس الصالحين .. يارب العالمين 🙂🤲🏻🌷🌹 ما شاء الله .. قطعة فنية نسجها محترف عارف بها 😊✌ جربتها .. وهي شغالة 10/10 تبارك الرحمن .. 😎👌🏻 1 1
Foksh قام بنشر ديسمبر 29, 2024 الكاتب قام بنشر ديسمبر 29, 2024 3 ساعات مضت, Moosak said: جربتها .. وهي شغالة 10/10 يسعدني نجاح الفكرة بعد تجربتها بأكثر من مستخدم ، أشكرك مهندسنا
gavan قام بنشر ديسمبر 31, 2024 قام بنشر ديسمبر 31, 2024 ياربي يسلمك من كل مكروه، ربي يبارك فيك يارب، وباربي اغفر له وارحمه واسكنه فسيح جناتك يارب، قطعة فنية من المبدع، سلمت يداك جاري التجربة 🌹👍♥️ 1
عربي عالمي قام بنشر بالامس في 00:12 قام بنشر بالامس في 00:12 (معدل) تمت التجربة بنجاح وفقك الله ، وغفر لنا ووالدينا أجمعين .. تم تعديل بالامس في 00:14 بواسطه عربي عالمي
عربي عالمي قام بنشر بالامس في 01:11 قام بنشر بالامس في 01:11 (معدل) أخي Foksh لعلك تضيف في حالة عدم وجود تحديث جديد أن يتم ظهور رسالة بعبارة : "النسخة التي لديك هي الأحدث" أو عبارة "لا يوجد تحديث جديد" أو أي عبارة أخرى توصل المعنى . تم تعديل بالامس في 01:29 بواسطه عربي عالمي 1
Foksh قام بنشر بالامس في 01:40 الكاتب قام بنشر بالامس في 01:40 (معدل) في 28/12/2024 at 21:46, Foksh said: "أنت تستخدم أحدث إصدار : " أخي العزيز @عربي عالمي ، العبارة هذه تدل على انك تستخدم آخر إصدار ، تستطيع تغييرها كيفما تريد . سأقوم ان شاء الله غداً بجعل الاصدار في التحديث = الاصدار في الملف المرفق لتتوضح لك الصورة عند عدم وجود تحديث تم تعديل بالامس في 01:41 بواسطه Foksh
abofayez1 قام بنشر بالامس في 13:53 قام بنشر بالامس في 13:53 عمل رائع و مميز جدا جدا..... بارك الله في جهدك وزادك علما لدي استفسار لو كانت قاعدة البيانات بصيغة accde هل يمكن التحديث اون لاين ؟ 1
Foksh قام بنشر بالامس في 14:09 الكاتب قام بنشر بالامس في 14:09 11 دقائق مضت, abofayez1 said: لو كانت قاعدة البيانات بصيغة accde هل يمكن التحديث اون لاين ؟ سؤال جميل ، العمل جاري لتعديل الملف الوسيط ليقرأ امتداد قاعدة البيانات الأساسية دون تدخل برمجي .. لكن حالياً ولتجربة الفكرة فالإمتداد المتعامل معه هو Accdb . انتظر التحديث القادم ان شاء الله . 1
kanory قام بنشر منذ 11 ساعات قام بنشر منذ 11 ساعات في 28/12/2024 at 21:46, Foksh said: اسمحوا لي بأن أطرح هذه الفكرة الجديدة والتي تم تجربتها مراراً وتكراراً إلى أن خرجت بهذه النتيجة فيما يتعلق بموضوع التحديث الهوائي أو Online أو بارك الله فيك اخي الكريم على الطرح لكن هناك فكرة مشابهه لهذه الطريقة في المنتدى .... ما الجديد في موضوعك ... لاني عجزت اعرف الفارق البرمجي فيها في 26/10/2018 at 04:25, Elsayed Bn Gemy said: السلام عليكم ورحمة الله تعالى وبركاته فى البداية اود ان اعتذر عن قلة مشاركاتى وذلك لقلة تعاملى مع الاكسس نظرا لانشغالى بـــ بيئة بيسك.نت ببساطة نحن مستخدمى الاكسس نريد ان يكون لدينا هذا الزر فى برامجنا 😂😂😂 اولا كان لدى محاولة واحدة عن كيفية جعل المستخدم يبحث عن تحديثات جديدة للبرنامج الخاص به عن طريق الانترنت فكانت نتيجة المحاولة هو ربط قاعدة البيانات اكسس بقاعدة بيانات سيكوال موجودة على استظافة مجانية قاعدة سيكوال بها حقلين هما رقم النسخة الجديدة ورابط التحميل الخاص بالتحديث الجديدة وهذا الموضوع يشرح ذلك وكانت اكبر المشاكل التى تقابلنى هى الاستضافة المجانية التى بعد شهرين او اكثر تحذف قاعدة بياناتك بدون سابق انذار ولا يوجد المال الكافى لحجز استضافة ورفع قاعدة البيانات سيكوال الخاصة بك عليها فكان التفكير فى استخدام البرامج السحابية (جوجل درايف - وان درايف - دروبوكس ) واكبر المشاكل التى ستقابلك هى المزامنة ثم المشكلة الاخرى وهى انك لن تطلب من كل المستخدمين تثبيت اى من البرامج السحابية لديه واعطائة اسم المستخدم وكلمة السر الخاص بالبرنامج السحابى الذى سترفع عليه التحديث حتى تتم المزامنة على جهاز العميل اولا باول اذا فما هو الحل انا اريد ان يضغط العميل على زر ( البحث عن تحديث جديد ) ثم يجد رسالة تخبره ان برنامجه محدث او انه توفر اصدار جديد من البرنامج اليكم فكرتى قد تحتاجونها او لا ولكن ما كنت لابخل عليكم بشئ فاء الله على به الفكرة بسيطة جدا تتلخص فى ملف نصى LastVersion.Txt قمت بكتابته به مجموعة اسطر الاول هو رقم الاصدار الجديد الثانى هو رابط تحميل التحديث الجديد وبعد هذا سطور على حسب الحاجة تقوم بالتعريف فيها بالتحديث الجديد ومميزاته طريقة العمل سيقوم المرفق الذى سادرجه هنا بتحميل الملف النصى من حسابك الخاص على دروبكس وتفريغ الاسطر التى بداخله الى مربعات النصوص التى بالنموذج ثم يقارن رقم التحديث الجديد بالرقم الحالى ويعلمك اذا كانت نسختك محدثة ام تحتاج تحديث المشاكل التى واجهتنى 1 - عدم وجود (direct download link او static download link ) نظرا لتغير رابط تحميل الملف النصى دائما فماذا سافعل اذ قمت مسبقا بادراج رابط ثابت لتحميل الملف النصى داخل البرنامج 2 - اذا اطلقت نسخة جديدة من برنامجى فساحتاج الى تعديل الملف النصى المحمل مسبقا والمدرج رابط التحميل الخاص به فى النموذج فكانت الحلول هو عمل static download link للملف النصى اى رابط تحميل ثابت للملف النصى تابع معى المتطلبات ---------------------- ان يقوم مصمم البرنامج فقط بالتسجيل على الموقع السحابى (https://www.dropbox.com/h) .. المصمم فقط ان شئت قلت كأنك حجزت استضافة مجانية بها 12 جيجا بايت ومجانية لانه بعد التسجيل سنحتاج اسم المستخدم وكلمة المرور لكتابتهم فى دوال التحميل داخل المرفق وهما دالتان مثل هذا الشكل الدالة الثانية ثم يقوم بانشاء الملف النصى الخاص بالبرنامج الذى صممه انا كتبته بهذا الشكل سنستخدم البرنامج السحابى دروبوكس (https://www.dropbox.com/h) بعد التسجيل - يمكنك التسجيل بسهوله عليه عن طريق رابط جوجل دون الحاجة الى ملئ البيانات بعد التسجيل ستجد نفسك فى الصفحة الرئيسية الخاصة بك بعد كتابة الملف النصى نقوم برفعه على الدروبكس بعد رفعه على الدروبكس نقوم باخذ اللينك الخاص به كوبى وذلك لعمل رابط مباشر له لتحميله بعد اخذ اللينك كوبى بقى اهم خطوة وهى عمل رابط تحميل مباشر له تابع معى ستجد رابط المشاركة بهذا الشكل الرابط الذى اخذته كوبى https://www.dropbox.com/s/n6oa483hwhlpkst/LastVersion.txt?dl=0 فقط استبدل https://www.dropbox.com استبدلها https://dl.dropboxusercontent.com ليصبح شكل الرابط هكذا https://dl.dropboxusercontent.com/s/n6oa483hwhlpkst/LastVersion.txt?dl=0 وبذلك اصبح لديك رابط مباشر له بعذ ذلك خذ الرابط الجديد وادرجه فى البرنامج فى هذا الكود ثم نقوم برفع القاعدة الجديدة المحدثة على الدروبكس وعمل رابط مباشر لها ولكن هذه المرة نقوم بادراج الرابط المباشر هذا فى الملف النصى لا فى البرنامج مع مراعاة ان نقوم بتحديث رقم الاصدار فيها قبل رفها ليطابق رقم الاصدار الموجود فى الملف النصى والان فيديو يشرح طريقة العمل تم اضافة اسم للمستخدم وكلمة السر يمكنك الان تجربة البرنامج المرفق LinkToUpdate.accdb 540 kB · 234 downloads اتمنى ان اكون عرفت اشرح وطبعا انا منتظر تشريفكم بتعليق لتجربة مرفقى المتواضع
Foksh قام بنشر منذ 5 ساعات الكاتب قام بنشر منذ 5 ساعات 4 ساعات مضت, kanory said: لاني عجزت اعرف الفارق البرمجي فيها أهلا أستاذ @kanory >> يسعدني مرورك العطر أولاً ثانيا لم أتابع الموضوع الذي أشرت إليه لأني فعلاً لم ابحث عن هذه المواضيع في المنتدى .. وثالثاً وهو المهم .. لا يتم استخدام اي ايميل او باسوورد لأي حساب داخل الأكواد .. يلزم المبرمج رابط الملف النصي فقط لإضافته في جدوله .. والباقي عمل الكود .. دعمت الفكرة بأن يكون التحميل من ملف خارجي يتم استخراجه من داخل الجدول المرفق في ملفي . ( فكرة جديدة ) في فكرتي لم ولن ولا اعتمد على برامج تلزم المبرمج بتثبيت برامج في جهاز العميل . لا يوجد روابط داخل الأكواد ، كلها يتم استدراجها وجلبها إل الجدول بشكل خفي منحت المستخدم فكرة الكشف التلقائي عن التحديثات حال وجودها . ففي الجدول هناك حقل Auto_Check من خلاله يستطيع المبرمج استغلاله بحيث :- Private Sub Form_Load() DoEvents If Check_Auto = -1 Then Me.TimerInterval = 1000 Else Me.TimerInterval = 0 End If End Sub Private Sub Form_Timer() Me.TimerInterval = 0 CheckForUpdate End Sub التعامل مع معلومات التنزيل للتحديث بإحترافية ( بحيث يتم عرض شريط تحميل حقيقي لحجم الملف الذي تم تحميله وعرض سرعة الإنترنت والوقت المتبقي لإكمال عملية التحديث ) والعديد موجود في الملف الذي يتم استخراجه لتنفيذ عملية التحديث الصامت بالنسبة لفكرتي مختلفة تماماً إلا أنها في الهدف متشابهة . 1 1
kanory قام بنشر منذ 3 ساعات قام بنشر منذ 3 ساعات بارك الله فيك استاذي الفاضل @Foksh اشكرك على الشرح الوافي جزاك الله خير وكتب أجرك على ما تقدمة رحم الله والدك ووالدينا وجميع المسلمين الاحياء والاموات 1
kanory قام بنشر منذ 14 دقائق قام بنشر منذ 14 دقائق في 28/12/2024 at 21:46, Foksh said: سنقوم برفع هذا الملف النصي على جوجل درايف ( السبب : دروب بوكس لم يدعم فكرة قراءة الملف النصي وجلب قيمة رقم الاصدار في السطر الأول لمقارنتها مع القيمة في النسخة التي لدى العميل في الحقل Ver ) . استاذي الغالي الدروب بوكس ايضا تستطيع من خلاله قراءة النصوص .... جرب المرفق ووافني بالنتيجة .... KAN_1.accdb
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.