sandanet قام بنشر يوليو 14, 2017 قام بنشر يوليو 14, 2017 (معدل) السلام عليكم ورحمة الله وبركاته تحية طيبة لكل الاخوة والاساتذة الكرام أما بعد .. ابحث عن طريقة تقوم بتحميل ملف من موقع معتمداً على رابط مزود مسبقاً في البرنامج اي ان الرابط يكون مجهز تحت زر امر مسبقاً وعند استبدال الملف من الموقع بملف اخر بنفس الاسم فان البرنامج يستطيع تحميله من نفس الرابط المزود به مسبقاً هل هنالك طريقة ما لفعل ذلك؟ وشكراً .. تم تعديل يوليو 14, 2017 بواسطه sandanet
ebnjabalapp قام بنشر يوليو 19, 2017 قام بنشر يوليو 19, 2017 جرب ان تضع عادي----url داخل النموزج لكي يزهب الي رابط التحميل عند الضغط عليه --------------------------------------------------------------------- وعند تغير الملف يستحسن ان يكن بنفس الاسم في نفس الصفح في الموقع
sandanet قام بنشر يوليو 19, 2017 الكاتب قام بنشر يوليو 19, 2017 نعم بالطبع يجب ابقاء الملف بنفس الاسم والامتداد عند تغييره بواحد اخر .. لكن اين يمكن انشاء رابط ثابت للملف؟؟ على اي موقع مثلاً؟؟
أ / محمد صالح قام بنشر يوليو 20, 2017 قام بنشر يوليو 20, 2017 3 ساعات مضت, sandanet said: نعم بالطبع يجب ابقاء الملف بنفس الاسم والامتداد عند تغييره بواحد اخر .. لكن اين يمكن انشاء رابط ثابت للملف؟؟ على اي موقع مثلاً؟؟ في هذه الحالة يلزمك حساب على موقع استضافة مجانية أو مدفوعة http://www.hostingadvice.com/how-to/free-web-hosting/ 1
Shivan Rekany قام بنشر يوليو 20, 2017 قام بنشر يوليو 20, 2017 (معدل) 7 ساعات مضت, sandanet said: نعم بالطبع يجب ابقاء الملف بنفس الاسم والامتداد عند تغييره بواحد اخر .. لكن اين يمكن انشاء رابط ثابت للملف؟؟ على اي موقع مثلاً؟؟ ھذا فقط تفكير اعمل فولدر وقم بعمل رابط للفولدر وبعدين احتمال ان تقدر تتغير مافي داخلة بنفس الرابط للتجربة : اليك هذا الرابط به صورة فقط https://drive.google.com/drive/folders/0Bw7lKz1UIsW1MEdadDh0OVBWVmM اعمل تنزيل له وبعدين اي بعد تعمل التنزيل راح اعطيك نفس الرابط وبه صور اخر غير هذا تم تعديل يوليو 20, 2017 بواسطه Shivan Rekany 1
sandanet قام بنشر يوليو 20, 2017 الكاتب قام بنشر يوليو 20, 2017 استاذي الفاضل @أ / محمد صالح المشكلة في الاستضافة المجانية انها لن تبقى مجانية لفترة طويلة لذلك يلزمني عمل استضافة مدفوعة وهنا يتطلب الامر الى الدفع بالفيزا كارد وانا لا املك واحدة .. استاذي القدير @Shivan Rekany الغرض من الفكرة هو جعل البرنامج المعمول على الاكسس يقوم بتنزل الملف التنفيذي بدون تدخل .. لكن فكرتك اقرب الى ان تكون هي الحل المناسب لي وذلك عن طريق عمل مجلد واخذ رابطه ووضعه في البرنامج حيث يمكني لاحقاً تغيير مابداخل المجلد فقط .. جاري التجربة تحياتي لكم 1
Shivan Rekany قام بنشر يوليو 20, 2017 قام بنشر يوليو 20, 2017 12 دقائق مضت, sandanet said: وذلك عن طريق عمل مجلد واخذ رابطه ووضعه في البرنامج حيث يمكني لاحقاً تغيير مابداخل المجلد فقط . نعم بالضبط الان انا اضفت صورة اخر باسم اصدار جديد مثلا وتقدر تنزل الصورة في نفس الرابط اي يعني تقدر تتغير او تضيف اليه اي ملف بنفس المسار حسب رغبتك والله يعلم 2
sandanet قام بنشر يوليو 20, 2017 الكاتب قام بنشر يوليو 20, 2017 كنت ارغب بأن يتم تنزيل الملف مباشرة بعد الغضط على زر امر في البرنامج .. في الواقع يمكن عمل رابط مباشر للملف لكن طبعاً يتم توليده بشكل عشوائي حيث انه لايبقى اذا ماتم تغيير الملف بملف اخر حتى وان كان يحمل نفس الاسم والامتداد
jjafferr قام بنشر يوليو 20, 2017 قام بنشر يوليو 20, 2017 4 ساعات مضت, sandanet said: كنت ارغب بأن يتم تنزيل الملف مباشرة بعد الغضط على زر امر في البرنامج .. في الواقع يمكن عمل رابط مباشر للملف لكن طبعاً يتم توليده بشكل عشوائي حيث انه لايبقى اذا ماتم تغيير الملف بملف اخر حتى وان كان يحمل نفس الاسم والامتداد السلام عليكم شباب أخي أوس ، خلينا من اللف والدوران ، والاشارة بين الروابط إذن الفكرة ان كل يرنامج سيكون لديه الصلاحية في الدخول لهذه الصفحة وانزال البرنامج المرفق فيها ، بغض النظر عن الرابط ، اذا الجواب نعم ، ضع برنامجك في موقع معين ، واعطنا صلاحية تغيير الملف ، وخلينا نجرب عليه جعفر 1
sandanet قام بنشر يوليو 20, 2017 الكاتب قام بنشر يوليو 20, 2017 استاذي الكبير @jjafferr كنت انتظر رأيك منذ مدة .. انا فكرتي ببساطة هو جعل البرنامج قابل للتحديث عن طريق الانترنت يعني مثلاً عندما تنتهي الفترة التجريبية للبرنامج فان المستخدم يستطيع تحديث البرنامج عن طريق زر امر في النموذج حيث يقوم بانزال ملف mde صغير يفعل له البرنامج .. طبعاً الفكرة هي ان كل شخص يملك البرنامج يستطيع تنزيل الملف لكن فقط من قام بشراء البرنامج يستطيع تفعيله عن طريق ذلك الملف. في الحقيقة لازلت لا املك ملف لتفعيل البرنامج حتى اقوم برفعه افكر في عمله لاحقاً والان لايهم فيمكن استعمال اي ملف mde للتجربة مبدئياً المشكلة تكمن في انه لو تم رفع الملف على google dive مثلاً فان الموقع ينشئ رابط ديناميكي للملف يتم حذفه بمجرد تغييرك للملف بواحد آخر حتى وان كان يحمل نفس الاسم والامتداد وهذا يسبب مشكلة لان الرابط يجب ان يكون مثبت تحت زر امر في البرنامج الموجود لدى العملاء بهذا الشكل مثلاً "https://drive.google.com/drive/my-drive/Activation.mde" لو يتم رفع الملف على استضافة سواء كانت مجانية او مدفوعة فستكون مشكلة ايضاً لان الاستضافة المجانية لن تدوم والاستضافة الدفوعة مرهونة بفترة الاشتراك ايضاً .. لذلك كنت اود ان تطبق الفكرة على استضافة دائمية مثل google drive لكن كما اشرت مسبقاً فان الموقع لايعطيك رابط ثابت
sandanet قام بنشر يوليو 21, 2017 الكاتب قام بنشر يوليو 21, 2017 بفضل الله أولاً ومن ثم بفضل فكرة استاذي الكبير @Shivan Rekany تمكنت من ايجاد الكود التالي مع بعض التعديلات عليه ليقوم بالمهمة المطلوبة Sub DownloadUpdate() Dim FileNum As Long Dim FileData() As Byte Dim MyFile As String Dim WHTTP As Object Dim str_folder As String On Error Resume Next myIp = "www.google.com" strCommand = "%ComSpec% /C %SystemRoot%\system32\ping.exe -n 1 -w 500 " & myIp & " | " & "%SystemRoot%\system32\find.exe /i " & Chr(34) & "TTL=" & Chr(34) strPing = fShellRun(strCommand) If strPing = "" Then MsgBox "تحقق من اتصالك بالانترنت لكي يتم تنزيل الملف", vbCritical, "فشل التحديث" Else Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5") If Err.Number <> 0 Then Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1") End If On Error GoTo 0 MyFile = "https://drive.google.com/drive/folders/0B9STtJY2DhAoQ1JET3F5N3NiMDQ" WHTTP.Open "GET", MyFile, False WHTTP.send FileData = WHTTP.ResponseBody Set WHTTP = Nothing If Dir("C:\MyDownloads", vbDirectory) = Empty Then MkDir "C:\MyDownloads" FileNum = FreeFile Open "C:\MyDownloads\Activation.mde" For Binary As #FileNum Put #FileNum, 1, FileData Close #FileNum MsgBox " [ C:\MyDownloads ]تم تنزيل ملف التفعيل في المسار التالي", vbInformation + vbMsgBoxRight, "تنبيه" str_folder = "C:\MyDownloads" ' folder to open Call Shell("explorer.exe " & str_folder, vbNormalFocus) DoCmd.Quit End If 3
أبو عبدالله الحلوانى قام بنشر يوليو 21, 2017 قام بنشر يوليو 21, 2017 استاذ @sandanet عند تنفيذ الكود ظهر هذا الخطأ وقد تم اضافة هاتين الجملتين الى الكود وعمل بنجاح والحمد لله Dim fShellRun As Object Set fShellRun = CreateObject("Wscript.Shell") strPing = fShellRun.Run(strCommand) الا انه عند عدم وجود اتصال بالانتر نت لا يوجد اعتراض من قبل الكود وتم اهمال ارسال الرسالة التنبيهية بعدم وجود اتصال 3
sandanet قام بنشر يوليو 21, 2017 الكاتب قام بنشر يوليو 21, 2017 (معدل) استاذي @أبو عبدالله الحلوانى اعتذر عن هذا الخطأ الغير مقصود فنسيت ان اضيف التالي Option Explicit Option Compare Database Dim strPing As String Dim strCommand As String Dim myIp والكود يعمل لدي بنجاح على اكسس 2007 وسأقوم بتجربته لاحقاً على اكسس 2003 ايضاً ان شاء الله تم تعديل يوليو 21, 2017 بواسطه sandanet 2
Shivan Rekany قام بنشر يوليو 22, 2017 قام بنشر يوليو 22, 2017 (معدل) اليكم الملف تم تجربة بنجاح على اوفيس 2010 وعملت بها بعض اضافات و مسحت کود التأکید الانترنیت لأن ما اشتغل عندی حین عدم وجود الانترنیت وعگیت ھدول الرسائل و هذا هو الكود لنموذج التنزيل اوبديت للبرامج Option Compare Database Option Explicit Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef dwflags As Long, ByVal dwReserved As Long) As Long ' لتأکيد على اتصالك بالانترنيت Sub DownloadUpdate() Dim FileNum As Long Dim FileData() As Byte Dim MyFile As String Dim WHTTP As Object Dim str_folder As String Dim fShellRun As Object Set fShellRun = CreateObject("Wscript.Shell") On Error Resume Next Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5") If Err.Number <> 0 Then Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1") End If On Error GoTo 0 MyFile = "https://drive.google.com/drive/folders/0B9STtJY2DhAoQ1JET3F5N3NiMDQ" WHTTP.Open "GET", MyFile, False WHTTP.send FileData = WHTTP.ResponseBody Set WHTTP = Nothing If Dir("C:\MyDownloads", vbDirectory) = Empty Then MkDir "C:\MyDownloads" FileNum = FreeFile Open "C:\MyDownloads\Activation.mde" For Binary As #FileNum Put #FileNum, 1, FileData Close #FileNum DoCmd.OpenForm "frmrisale", acNormal Forms!FrmRisale.TimerInterval = 1000 Forms!FrmRisale!MyTxt.Caption = " [ C:\MyDownloads ]تم تنزيل ملف التفعيل في المسار التالي " Forms!FrmRisale!MyTxt.TopMargin = 100 str_folder = "C:\MyDownloads" ' folder to open Call Shell("explorer.exe " & str_folder, vbNormalFocus) 'DoCmd.Quit End Sub Private Sub Command0_Click() If GetIPAddress <> "127.0.0.1" Then Call DownloadUpdate Else DoCmd.OpenForm "frmrisale", acNormal Forms!FrmRisale.TimerInterval = 1000 Forms!FrmRisale!MyTxt.Caption = "انت غير متصل بالانترنيت .. تأكد من اتصالك بالانترنيت وحاول مجدداً " Forms!FrmRisale!MyTxt.TopMargin = 100 End If End Sub وهذا فانكشن للتأكيد على وجود الانترنيت Option Compare Database Option Explicit Public Const MIN_SOCKETS_REQD As Long = 1 Public Const WS_VERSION_REQD As Long = &H101 Public Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF& Public Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF& Public Const SOCKET_ERROR As Long = -1 Public Const WSADESCRIPTION_LEN = 257 Public Const WSASYS_STATUS_LEN = 129 Public Const MAX_WSADescription = 256 Public Const MAX_WSASYSStatus = 128 Public Type WSAData wVersion As Integer wHighVersion As Integer szDescription(0 To MAX_WSADescription) As Byte szSystemStatus(0 To MAX_WSASYSStatus) As Byte wMaxSockets As Integer wMaxUDPDG As Integer dwVendorInfo As Long End Type Type WSADataInfo wVersion As Integer wHighVersion As Integer szDescription As String * WSADESCRIPTION_LEN szSystemStatus As String * WSASYS_STATUS_LEN iMaxSockets As Integer iMaxUdpDg As Integer lpVendorInfo As String End Type Public Type HOSTENT hName As Long hAliases As Long hAddrType As Integer hLen As Integer hAddrList As Long End Type Declare Function WSAStartupInfo Lib "WSOCK32" Alias "WSAStartup" (ByVal wVersionRequested As Integer, lpWSADATA As WSADataInfo) As Long Declare Function WSACleanup Lib "WSOCK32" () As Long Declare Function WSAGetLastError Lib "WSOCK32" () As Long Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long, lpWSADATA As WSAData) As Long Declare Function gethostname Lib "WSOCK32" (ByVal szHost As String, ByVal dwHostLen As Long) As Long Declare Function gethostbyname Lib "WSOCK32" (ByVal szHost As String) As Long Declare Sub CopyMemoryIP Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long) Public Function GetIPAddress() As String Dim sHostName As String * 256 Dim lpHost As Long Dim HOST As HOSTENT Dim dwIPAddr As Long Dim tmpIPAddr() As Byte Dim i As Integer Dim sIPAddr As String If Not SocketsInitialize() Then GetIPAddress = "" Exit Function End If If gethostname(sHostName, 256) = SOCKET_ERROR Then GetIPAddress = "" MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & " has occurred. Unable to successfully get Host Name." SocketsCleanup Exit Function End If sHostName = Trim$(sHostName) lpHost = gethostbyname(sHostName) If lpHost = 0 Then GetIPAddress = "" MsgBox "Windows Sockets are not responding. " & "Unable to successfully get Host Name." SocketsCleanup Exit Function End If CopyMemoryIP HOST, lpHost, Len(HOST) CopyMemoryIP dwIPAddr, HOST.hAddrList, 4 ReDim tmpIPAddr(1 To HOST.hLen) CopyMemoryIP tmpIPAddr(1), dwIPAddr, HOST.hLen For i = 1 To HOST.hLen sIPAddr = sIPAddr & tmpIPAddr(i) & "." Next GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1) SocketsCleanup End Function Public Function GetIPHostName() As String Dim sHostName As String * 256 If Not SocketsInitialize() Then GetIPHostName = "" Exit Function End If If gethostname(sHostName, 256) = SOCKET_ERROR Then GetIPHostName = "" MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & " has occurred. Unable to successfully get Host Name." SocketsCleanup Exit Function End If GetIPHostName = Left$(sHostName, InStr(sHostName, Chr(0)) - 1) SocketsCleanup End Function Public Function HiByte(ByVal wParam As Integer) HiByte = wParam \ &H100 And &HFF& End Function Public Function LoByte(ByVal wParam As Integer) LoByte = wParam And &HFF& End Function Public Sub SocketsCleanup() Dim ERROR_SUCCESS If WSACleanup() <> ERROR_SUCCESS Then MsgBox "Socket error occurred in Cleanup." End If End Sub Public Function SocketsInitialize() As Boolean Dim WSAD As WSAData Dim sLoByte As String Dim sHiByte As String Dim ERROR_SUCCESS If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then MsgBox "The 32-bit Windows Socket is not responding." SocketsInitialize = False Exit Function End If If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then MsgBox "This application requires a minimum of " & CStr(MIN_SOCKETS_REQD) & " supported sockets." SocketsInitialize = False Exit Function End If If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then sHiByte = CStr(HiByte(WSAD.wVersion)) sLoByte = CStr(LoByte(WSAD.wVersion)) MsgBox "Sockets version " & sLoByte & "." & sHiByte & " is not supported by 32-bit Windows Sockets." SocketsInitialize = False Exit Function End If SocketsInitialize = True End Function شکرا لك استاذ @sandanet على هذا الموضوع الرائع شكرا لك استاذنا @أبو عبدالله الحلوانى على المداخلة وشكرا لك استاذنا @jjafferr على مشاركتك .. لان مشاركتك يفرحنا ويعطينا الامل وهذا هو الملف بصيغة mdb تنزيل تحديث في رابط ثابت.rar تم تعديل يوليو 22, 2017 بواسطه Shivan Rekany 3
sandanet قام بنشر يوليو 22, 2017 الكاتب قام بنشر يوليو 22, 2017 اشكرك جزيل الشكر استاذي الكبير @Shivan Rekany جاري تجربة ماتفضلت به .. في الحقيقة ان مشاركتك في الموضوع في بدايته كانت ذو فائدة عظيمة أدت الى تلك النتائج .. كما ان مشاركة اساتذتي الكرام الآخرين وعلى رأسهم الاستاذ جعفر كانت هي الحافز الكبير لدي للبحث المستمر حتى النهاية الموضوع من وجهة نظري مهم جداً وسوف يحتاجه الاخوة الافاضل لعمل تحديث لبرامجهم عن طريق الانترنت .. الموضوع قد طرحته قبل فترة لكن لم يتم التعقيب عليه وكنت شخصياً قد نسيته الى ان قام الاخ ebnjabalapp بالرد عليه مشكوراً ..فتحياتي لكم جميعاً 1
jjafferr قام بنشر يوليو 22, 2017 قام بنشر يوليو 22, 2017 السلام عليكم شباب انا ساكت واستمتع بالتطورات ، لكن مخي يمخخ وراح بعيد لكيفية الاستفادة من هذه الخطوة مادمتم قد قطعتوا المشوار في هذا الطريق البديع (شكرا أخي أوس على الفكرة والكود ، ابو عبدالله وشفان على تعديل الكود) ، فبدل ان ابدأ من البداية ، سوف اضع امامكم الفكرة اللي على بالي ، راجيا منكم بلورتها برمجيا خلينا نتوسع في الفكرة شوي ، لتشمل احتياجات المبرمج ، فاللي على بالي هو: 1. البرنامج يدخل على مجلد معين في الموقع (وحاليا كلامنا عن Google Drive) (كما هو الحال الآن) ، ويكون فيه ملف نص txt او xml ، ويُنزل هذا الملف ، 2. هذا الملف يكون فيه اسماء برامجي ، ورقم النسخة الموجودة ، واسم مجلد الموقع الذي فيه هذه البرامج (مجلد آخر في Google Drive ، يعني اعمل مجلد لكل برنامج من برامجي) ، (طبعا نستطيع ان نضيف تاريخ من ، تاريخ الى ، نوع البرنامج: Full او Demo او Activation ، و....) ، والنص يكون هكذا مثلا : Enquiry_Book,2.0,0B9STtJY2DhAoQ1JET3F5N3NiMDQ myAccounting,1.5,0B9STtJY2DhAoQ1JET3F5N3Nuwiu Archiving_Goods,5.23,0B9STtJY2DhAoQ1JET3F5Nlujhft 3. البرنامج يُنزل هذا الملف ويقرأه ، ويقارن نسخة البرنامج (سيكون هناك جدول خاص في البرنامج ، وبه رقم نسخة البرنامج) ، 4. البرنامج سيقارن رقم النسخة من الجدول ، مع رقم نسخة البرنامج الموجودة في ملف النص ، 5. اذا كان رقم النسخة الموجودة في الملف/الموقع اكبر من النسخة الموجودة في البرنامج ، فيعطي رسالة للمستخدم بأنه هناك نسخة احدث للبرنامج ، وسيقوم بإنزالها وتنصيبها ، 6. البرنامج سيقوم بإستخدام نفس الكود اعلاه (طبعا مع تغييرات بسيطة اذا دعى الامر ، او نجعل الكود كوحدة نمطية نستطيع استعمالها لإنزال مختلف الملفات من الموقع) ، ويُنزل البرنامج. بهذه الطريقة المبرمج يستطيع ان يُحدث برامجه عالميا ، وبدون الذهاب الى مكتب المستخدم مجرد فكرة جعفر 1
sandanet قام بنشر يوليو 22, 2017 الكاتب قام بنشر يوليو 22, 2017 استاذنا الكبير @jjafferr اولاً احب ان اشكرك جزيل الشكر على مشاركتك السابقة والتي فيها افكار جميله جداً لكنها معقدة بعض الشيء بالنسبة لي واعتقد بانه لو تم عمل ماتفضلت به على برنامج واحد يكون افضل ومن ثم بعدها يمكن التوسع بالفكرة لتشمل مجموعة اخرى . لكن ما استوقفني في ماتفضلت به هو "لكن مخي يمخخ وراح بعيد لكيفية الاستفادة من هذه الخطوة" نعم انا احسست بذلك لان الموضوع فيه خطورة نوعاً ما في ما اذا تم استخدام الطريقة في امر اخر وانت سيد العارفين وفاهم الموضوع كيف يتم لكن الحمد لله ليس في نيتي الا الخير ان شاء الله انا متابع لأغلب المواضيع ولم اجد احد قد فكر في ان يقوم بتحديث برنامجه عن طريق الانترنت ولا اعلم لماذا لايقوم الاخوة بهذه الخطوة الجميلة في برامجهم مع انها موجودة في جميع البرامج الأخرى المصممة في لغات برمجية اخرى كما في البرامج التي يثبتونها على اجهزتهم على العموم الباب مفتوح لتطوير الفكرة وان شاء الله تكون مرجع لجميع البرامج المعمولة بالاكسس تحياتي 1
jjafferr قام بنشر يوليو 23, 2017 قام بنشر يوليو 23, 2017 السلام عليكم موضوع التحديث كبير وفيه عدة نقاط والتي يجب النظر فيها ، مثلا: 1. تحديث FE فقط ، 2. تحديث FE ، وعمل تغيير على الجداول. خلينا في النقطة الاصعب والاهم ، وهي انزال النسخة الاحدث من الموقع كنتم 3 محترفين في عمل هذا الموضوع ، وانت قررت ان الخطوة التالية "معقدة بعض الشيء بالنسبة" فأرجو من اخي @Shivan Rekany و اخي @أبو عبدالله الحلوانى ان يتطوعوا لهذا العمل (او يعتذروا) ، وإلا فأنا مستعد ان شاء الله جعفر
sandanet قام بنشر يوليو 23, 2017 الكاتب قام بنشر يوليو 23, 2017 استاذي الغالي جعفر موضوع تحديث FE فقط او FE مع تغيير في الجداول يعتمد على الملف الذي سوف ترفعه على google drive فأنا في هذا الموضوع كنت ارغب بتغيير المدة الزمنية فقط والتي هي قيمة مشفرة مخزنة في جدول خاص بملف FE عن طريق ملف ال Activation.mde حيث انه بعد التنزيل يتم غلق البرنامج الاصلي ومن ثم تشغيل ملف ال Activation واختيار مكان ملف FE لكي يتم تعديل المدة الزمنية لدى العميل طبعاً بعد التأكد من التصريح المعمول له في ملف ال Activation .. لكن يمكن تطويع الفكرة ايضاً لكي يتم تنزيل ملف FE محدث بالكامل ويتم استبداله يدوياً او عن طريق الكود بالملف الاصلي لكن بالنسبة لموضوع انزال النسخة حسب رقم التحديث اجد فيها صعوبة في كيفية تطبيقها لكنها جميلة فهي سوف تمنع تنزيل الملف من الانترنت الا اذا كان اصداره احدث من الذي يمتلكه المستخدم وهذه الفكرة تنفع في حال تم عمل تحديث كامل على ملف البرنامج وترغب باستبداله بالملف القديم وليس لعمل Activation كما في حالتي تلك تحياتي
sandanet قام بنشر يوليو 23, 2017 الكاتب قام بنشر يوليو 23, 2017 اخواني الاعزاء واجهتني مشكلة وهي تشغيل ملف ال Activation على ملف mde لكنه يعمل بكفاءة مع ملف mdb كما في المرفق ..فما السبب؟؟ example.zip
أبو عبدالله الحلوانى قام بنشر يوليو 23, 2017 قام بنشر يوليو 23, 2017 أستاذنا جعفر @jjafferr شكرا لثقتكم التى أعتز بها مشاركتم بعمل ما لأمر جدير أن يحرص عليه المرؤ - ولكن حسب ما اتسع الوقت لو سمحتم لى وبعد أما بالنسبة للنقطة الثانية وخصوصا بشأن اجراء تغيرات على الجداول اعتقد أنه دار حوله نقاش بأحد موضوعات أستاذنا أبو خليل وقد أسفرت بالنهاية على مرفق ممتاز يؤدى الغرض يمكن الاستفادة به هنا اذا احتاج الأمر لذلك. 4 ساعات مضت, jjafferr said: 2. تحديث FE ، وعمل تغيير على الجداول. واعتقد أن هذا رابط موضوع أستاذنا @ابوخليل أما بشأن فكرة سيادتكم بشأن اضافة ملف نص txt او xml أعتقد أننا الآن ابتعدنا بهذه الفكرة عن مضمون الموضوع الأصلى ( ولكنى أعتقد أنها فكرة متميزة وتستحق أن تفرد بموضوع مستقل ) فما فهمته من موضوع أستاذ @sandanet أنه ما يريد ألا تنزيل ملف واحد فحسب وهو الخاص بكراك التنشيط والذى يرغب بتغيره وفقا لأختلاف البرامج الموزعة على العملاء . عودا لفكرة تحديث البرنامج وفقا لرقم الاصدار الأحدث للنسخة الجديدة اعقد أننا بحاجة للسير وفقا لتسلسل عمل كهذا: 1- نحتاج لوضع كود لتحميل هذا الملف النصى عند بداية فتح البرنامج كل مرة - ومن ثم استيراد هذا الملف ومقارنة رقم رقم الاصدار برقم الاصدار المخزن بجدول مسبق بالبرنامج 2- فان كان رقم الاصدار أكبر من الاصدار الحالى تم العمل على تحميل نسخة البرنامج الأحدث والتى يوجد رابطها بجوار رقم النسخة داخل الملف النصى - وان لم تكن الاصدار أكبر من النسخة الحالية يتم حذف الملف النصى وحذف البيانات التى تم استيرادها بالجدول. 3- ولكن نحن بحاجة لسؤال وتنبيه المستخدم قبل تحميل النسخة الأحدث هل يريد الاستمرار بالتحديث أم لا (حتى لا نفرض عليها قرارات ) هذه بعض الأفكار التى تدور بخاطرى الآن ان لم ترو خللا بها عملت على تنفيذها متى اتسع الوقت ان شاء الله. ولكن هنالك سؤالا يؤرقنى واحاول منع نفسى منه ولكن لم استطع ؟ بالنسبة لمبرمج مبتدأ مثلى فى الغالب يتم تحديث البرنامج وفقا لطلب العميل واعتقد أن امر التحديث التلقائى هذا خاص بشركات كبرى تطرح نسخا لبرنامجها الواحد الذى يقبل عليه اعداد كبيرة من العملاء (كتحديثات الويندوز الدورية وكسبرانتى فيرس وهكذا) ... وليس عميل واحد يتعامل مع مبرمج واحد بشأن برنامج واحد ؟ أرجو أن لا يكون كلامى مزعجا ولا معوقا للمواصلة بتنفيذ الفكرة. تحياتى
Shivan Rekany قام بنشر يوليو 23, 2017 قام بنشر يوليو 23, 2017 5 ساعات مضت, jjafferr said: خلينا في النقطة الاصعب والاهم ، وهي انزال النسخة الاحدث من الموقع كنتم 3 محترفين في عمل هذا الموضوع ، وانت قررت ان الخطوة التالية "معقدة بعض الشيء بالنسبة" فأرجو من اخي @Shivan Rekany و اخي @أبو عبدالله الحلوانى ان يتطوعوا لهذا العمل (او يعتذروا) ، وإلا فأنا مستعد ان شاء الله جعفر حسب مستطاعي انا حاضر لكن في الحقيقة انا لا اعرف ما هو اللازم علي ان افعل ... لأني بعد لا اعرف ماذا تريدون بالفعل ... وبحب العمل معك واذا تكون مستعد ان تشتعغل معنا هذا سيكون حافز لنا لكي نشتغل احسن ونقدم 3 ساعات مضت, sandanet said: اخواني الاعزاء واجهتني مشكلة وهي تشغيل ملف ال Activation على ملف mde لكنه يعمل بكفاءة مع ملف mdb كما في المرفق ..فما السبب؟؟ example.zip اتفضل اليك هذا الحل Dim sql As String Dim x As Integer x = Len(Forms!FORM1![txtPath]) - Len(Replace(Forms!FORM1![txtPath], ".", "")) If (Split(Forms!FORM1!txtPath, ".")(1)) = "MDE" Then sql = "UPDATE TdateT INNER JOIN [system.MDE].Tdate ON TdateT.ID = Tdate.ID SET Tdate.demo = TdateT.demo" Else sql = "UPDATE TdateT INNER JOIN [system.MDB].Tdate ON TdateT.ID = Tdate.ID SET Tdate.demo = TdateT.demo" End If DoCmd.SetWarnings False DoCmd.RunSQL (sql) DoCmd.close acForm, Me.nAME اليك القاعدة example.rar 1
sandanet قام بنشر يوليو 23, 2017 الكاتب قام بنشر يوليو 23, 2017 (معدل) شكراً جزيلاً استاذي القدير @Shivan Rekany ماشاء الله عليك مبدع دائماً .. وفقك الله .. اطمح منك المزيد استاذي الفاضل وهو في الكود الذي عدلته يوجد تحته كود غير مفعل وهو لقاعدة اسمها system_admin.MDE هل يمكن دمجها ايصاَ لكي يتم تطبيق البرنامج على اكثر من قاعدة؟ بالنسبة لتطوير الفكرة فاعتقد انه يجب البدء بعمل كود يقرأ مابداخل ملف text موجود على الجهاز ليكن اسمه update.text فيه البيانات التالية اسم البرنامج مع امتداده اصدار البرنامج كود التفعيل وهذا ماتفضل به استاذنا جعفر كالتالي Enquiry_Book.mde,2.0,0B9STtJY2DhAoQ1JET3F5N3NiMDQ myAccounting.mde,1.5,0B9STtJY2DhAoQ1JET3F5N3Nuwiu Archiving_Goods.mde,5.23,0B9STtJY2DhAoQ1JET3F5Nlujhft طبعاً الكود اللازم يجب اولاً ان يتأكد من وجود ملف ال update.txt على المسار المحدد بعد تنزيله تلقائياً من الانترنت اثناء فتح صفحة التحديث من داخل البرنامج ثم يقوم بقراءة المعلومات التي في داخله ويقارنها مع المعلومات المخزنة في جدول داخل البرنامج فيه نفس البيانات مع اختلاف رقم اصدار البرنامج وكود التفعيل طبعاً بالامكان الاستغناء عن كود التفعيل اذا كان الغرض هو تطوير البرنامج فقط حيث يتم الاكتفاء بمقارنة اصدار البرنامج فقط فإن وجد الكود ان رقم الاصدار بداخل الملف اكبر من ذلك الذي في الجدول فسيتم تنبيه المستخدم بوجود اصدار احدث للبرنامج وعند الضغط على زر امر تحديث فانه يتم اتباع الاسلوب الذي تم عمله في هذا الموضوع مبدئياً هذه الفكرة هي الاساس كما تفضل بها استاذ جعفر تحياتي طبعاً ملف ال update.text يمكن رفعه على google drive واستعمال الطريقة التي اتبعناها في هذا الموضوع لتنزيله من داخل البرنامج تم تعديل يوليو 23, 2017 بواسطه sandanet
Shivan Rekany قام بنشر يوليو 23, 2017 قام بنشر يوليو 23, 2017 4 دقائق مضت, sandanet said: طبعاً الكود اللازم يجب اولاً ان يتأكد من وجود ملف ال update.txt على المسار المحدد بعد تنزيله تلقائياً من الانترنت اثناء فتح صفحة التحديث من داخل البرنامج الان ليس لدي شيء ولكن حسب فكري الان يجب ان يقرأ ما بداخل الملف تيكست قبل تنزيل من الانترنيت وليس بعد
sandanet قام بنشر يوليو 23, 2017 الكاتب قام بنشر يوليو 23, 2017 لا ضرر في ان يتم تنزيل ملف ال txt عند فتح البرنامج ويتم قراءته على الجهاز وعمل المقارنات ومن ثم تنبيه المستخدم بانه يوجد اصدار جديد 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.