حسين العربى قام بنشر أغسطس 25, 2020 قام بنشر أغسطس 25, 2020 السلام عليكم ورحمة الله وبركاته عندي برنامج مرتبط بجداول علي سيكوال سيرفر اريد جلب تاريخ ووقت السيرفر في حقل في نموذج بدل من تاريخ ووقت جهاز المستخدم الي عليه البرنامج IP _SERVER_ 128.122.1.20 وجزاكم الله خيرا 1
حسين العربى قام بنشر أغسطس 25, 2020 الكاتب قام بنشر أغسطس 25, 2020 (معدل) شكرا استاذي الفاضل للاسف جربته ولم يفلح معي وكان به هذا الملف عند وضع IP في اسم السيرفر يعطيني خطأ الجداول مصصمه في قاعدة بيانات سيكوال ومرتبطه عن طريق ODBC get time.rar 1176.Network_PC_Time.mdb تم تعديل أغسطس 25, 2020 بواسطه حسين العربى
jjafferr قام بنشر أغسطس 25, 2020 قام بنشر أغسطس 25, 2020 السلام عليكم 🙂 لا يكفي ان تكتب رقم IP السيرفر ، بينما يجب ان تكتب اسم المجلد الذي لك فيه صلاحية الكتابة Read/Write ، مثل : . وعملنا تعديل في الوحدة النمطية ، بحيث تأخذ اسم مجلد السيرفر من حقل النموذج : Public Function Make_File3(BE_Path As String) On Error GoTo err_Make_File3 Dim PauseTime, Start 'we need the path to have a slash at its end If Right(BE_Path, 1) <> "\" Then BE_Path = BE_Path & "\" End If BE_Path = BE_Path & "dummy.txt" 'make the dummy txt file Open BE_Path For Output As #1 Print #1, "No text required" Close #1 'pasue for a second, until file is recognized, for slow networks PauseTime = 1 ' Set duration. Start = Timer ' Set start time. Do While Timer < Start + PauseTime DoEvents ' Yield to other processes. Loop 'get the date created Make_File3 = FileDateTime(BE_Path) 'clean up, delete the file Kill BE_Path Exit_Make_File3: Exit Function err_Make_File3: If Err.Number = 75 Then MsgBox "Access Denied" & vbCrLf & "لا تملك الصلاحية في الكتابة في المجلد" Else MsgBox Err.Number & vbCrLf & Err.Description End If Resume Exit_Make_File3 End Function . ونناديها من النموذج هكذا: Me.srvr_Date_Time = Make_File3(Me.srvr_Domain_Name) جعفر 1176.my_FE_Network_PC_Time.mdb.zip 2
حسين العربى قام بنشر أغسطس 25, 2020 الكاتب قام بنشر أغسطس 25, 2020 استاذي ومعلمي الفاضل انا مصمم الجدوال داخل قاعدة بيانات سيكوال موجوده علي سيرفر الشركة وليس داخل ملف اومجلد وهذا للعلم فقط
حسين العربى قام بنشر أغسطس 26, 2020 الكاتب قام بنشر أغسطس 26, 2020 استاذي الفاضل jjafferr انا جربت التعديل وظبط معي طيب ايه رايك لو نضع الجدول الي موجود في الملف BE الموجود علي السيرفر في SQL ونربطه بالواجه FE عن طريق ODBC فما هو التعديل علي الوحده النمطيه لا ني بصراحة مش عاوز اعمل ملف شير لاني دي شركة
jjafferr قام بنشر أغسطس 26, 2020 قام بنشر أغسطس 26, 2020 وعليكم السلام 🙂 9 ساعات مضت, حسين العربى said: وليس داخل ملف اومجلد نعم اعرف هذا ، لهذا السبب لم اذكر كلمة BE او محل تواجدها ، بينما في الرابط اعلاه ذكرت هذا لأن @سلمان الشهراني لم يكن يستعمل SQL Server : في ١٢/٣/٢٠٢٠ at 14:25, jjafferr said: وبما ان ملف الجداول يكون في مجلد يسمح فيه بإنشاء/تعديل/حذف ملف ، فهذه الطريقة المفروض انها تشتغل 🙂 . 13 دقائق مضت, حسين العربى said: لا ني بصراحة مش عاوز اعمل ملف شير لاني دي شركة انت لن تعمل مجلد مشاركة لتضع فيه اي شيء له علاقة ببرنامجك ، ويمكنك استعمال اي مجلد مشاركة عام في السيرفر ، حيث ان هذه الطريقة تختاج الى عمل ملف txt على الجهاز الآخر (السيرفر في حالتك). اما الآن فاترك كل ما عملناه ، وخلينا نتكلم عن السيرفر 🙂 انت استلمت رسالتين خطأ : 1. Type mismatch ، وهذا بسبب خطأ في السطر التالي من الكود : بدلا عن If Err.Number = 70 Then MsgBox "Permission Denied" MachineTimeGet = "" استعمل If Err.Number = 70 Then MsgBox "Permission Denied" MachineTimeGet = Empty بعد البحث ، وجدت الطريقة ، ووضعتها في نموذج جديد: جعفر 1176.my_FE_Network_PC_Time.mdb.zip 2
حسين العربى قام بنشر أغسطس 26, 2020 الكاتب قام بنشر أغسطس 26, 2020 (معدل) الف شكر استاذي الفاضل علي تعبك معي بس انا توصلت الي حل اخر بالنسبة للسيرفر وضعت الجدول في قاعدة بيانات SQL وجعلة قيمة حقل التاريخ NOW وعملت ربط من برنامجي بالجدول عن طريق ODBC وعملت استعلام مرتبط بالجدول ومن خلال النموذج بستدعي التاريخ والوقت عن طريق دالة DLookup من الاستعلام فيستدعي لي تاريخ السيرفر وسوف اشرح ذلك بالفيديو ليستفيد الجميع لاكن طلبي الحين لو تكرمت ليكتمل عملي اريد كود مقارنه يظهر لي رسالة تنبيه اذا كان حقل وقت السيرفر غير مطابق لحقل وقت كمبيوتر المستخدم واقصد بالوقت الساعه فقط مع تلاشي الدقائق والثواني لاني احيانا يكون في فرق في الدقائق بين السيرفر وجهاز المستخدم وشكر واسف علي الاطالة تم تعديل أغسطس 26, 2020 بواسطه حسين العربى
أفضل إجابة jjafferr قام بنشر أغسطس 26, 2020 أفضل إجابة قام بنشر أغسطس 26, 2020 25 دقائق مضت, حسين العربى said: وضعت الجدول في قاعدة بيانات SQL وجدت كود ليقرأ من SQL Server مباشرة ، وتركته في البرنامج ، ولكني ام افعّله : Dim cmd As New ADODB.Command Dim RS As New ADODB.Recordset cmd.ActiveConnection = "Provider=SQLOLEDB;DataSource=yourserver;Database=yourDB;UID=test;PWD=test;" cmd.ActiveConnection.CursorLocation = adUseClient cmd.CommandText = "Select getdate()" Set RS = cmd.Execute Debug.Print RS(0) RS.Close cmd.ActiveConnection.Close . 28 دقائق مضت, حسين العربى said: ولو امكن التاريخ والساعة فقط استخدم دالة Format ، بحيث time_date_server هو حقل تاريخ السيرفر ، هكذا: if format(time_date_server ,"dd/mm/yy") <> format(date() ,"dd/mm/yy") then msgbox "تاريخ السيرفر لا يطابق تاريخ الكمبيوتر" elseif format(time_date_server ,"hh") <> format(date() ,"hh") then msgbox "ساعة السيرفر لا تطابق ساعة الكمبيوتر" end if جعفر 3 1
حسين العربى قام بنشر أغسطس 26, 2020 الكاتب قام بنشر أغسطس 26, 2020 الف الف شكر استاذي ومعلمي الفاضل جزاك الله خيرا وجعه في ميزان حسناتك 1
صالح حمادي قام بنشر أغسطس 26, 2020 قام بنشر أغسطس 26, 2020 السلام عليكم لقد وصلت متأخرا فوجدت الأستاذ جعفر فعل كل شيء ما شاء الله عليه. لذلك سوف أضع مشاركتي على الرغم أنها تشبه كثيرا كود الأستاذ جعفر Dim str_conn As New ADODB.Connection Dim RS As New ADODB.Recordset str_conn.Open "Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=master;Data Source=" & Me.Comp1 Set RS = str_conn.Execute("select GETDATE()") MsgBox RS(0) Set RS = Nothing str_conn.Close Me.Comp1 هو اسم مربع اسم السرفر 2 1
حسين العربى قام بنشر أغسطس 28, 2020 الكاتب قام بنشر أغسطس 28, 2020 (معدل) استاذي الفاضل jjafferr لم انتبه لهذا الكود ممكن شرح Dim cmd As New ADODB.Command Dim RS As New ADODB.Recordset cmd.ActiveConnection = "Provider=SQLOLEDB;DataSource=yourserver;Database=yourDB;UID=test;PWD=test;" cmd.ActiveConnection.CursorLocation = adUseClient cmd.CommandText = "Select getdate()" Set RS = cmd.Execute Debug.Print RS(0) RS.Close cmd.ActiveConnection.Close تم تعديل أغسطس 28, 2020 بواسطه حسين العربى
jjafferr قام بنشر أغسطس 28, 2020 قام بنشر أغسطس 28, 2020 2 ساعات مضت, حسين العربى said: لم انتبه لهذا الكود ممكن شرح هذا الكود مثل كود اخوي صالح ، يحاكي قاعدة البيانات SQL Server مباشرة ، ومثل ما نعرف ، بما ان SQL Server موجودة على السيرفر ، فالسيرفر يكون له اسم دخول وكلمة سر ، ولكن هناك طريقة بأن تقدر ان تعمل اسم المستخدم وكلمة السر في قاعدة بيانات SQL Server مباشرة ، ودون حصولك على اسم المستخدم وكلمة سر السيرفر ، فهذا الكود يقوم بهذا العمل : cmd.ActiveConnection = "Provider=SQLOLEDB هذا ثابت ولا يتغير ;DataSource=yourserver او اسم السيرفر IP ;Database=yourDB اسم قاعدة البيانات ;UID=test اسم المستخدم ;PWD=test;" كلمة السر مثلا cmd.ActiveConnection = "Provider='SQLOLEDB';DataSource='\\192.168.1.125';Database='PersonnelDB';UID='jjafferr';PWD='NoWayToExposeIT';" --------------------------------------- ولكن ، ايش لك في البحر واهواله ورزق الله على السيف !! جميع هذه الطرق للاشخاص الذين يريدون عمل مقارنة لساعة الجهاز مع ساعة السيرفر ، بينما انت تريد وقت السيرفر في برنامجك المرتبط بالـ SQL Server مباشرة ، فخلينا نعمل شيء انت تعرفه ومتعود عليه وما بتحتاج الى مساعدة ، فبدلا عن استعمال Dlookup ، اعمل جدول فيه 3 حقول: حقل الرقم التلقائي ، وحقل التاريخ التلقائي (وتكون القيمة الافتراضية: ()Now او ()getdate ) ، وحقل مؤقت ، واعمل نموذج له ، وعند تحميل النموذج ، اعمل كود للذهاب الى سجل جديد ( docmd.GoToRecord,,acNewRec ) ، وسترى قيمة حقل التاريخ التلقائي (وهو المطلوب 🙂 ) ، ومن غير ان تضيف اي سجل 🙂 جعفر
حسين العربى قام بنشر أغسطس 28, 2020 الكاتب قام بنشر أغسطس 28, 2020 الف شكر استاذي الفاضل بالعكس انا هدفي هو المقارنه لكي لايتلاعب المستخدم في وقت وتاريخ الجهاز ولاكن لي استفسار المقصود ب اسم المستخدم وكلمة السر الي هما خاصين ب SQl ولا ايه
حسين العربى قام بنشر أغسطس 29, 2020 الكاتب قام بنشر أغسطس 29, 2020 (معدل) استاذي الفاضل jjafferr لوتكرمت تظبط لي الكود علي الفورم انا وضعت الكود والبيانات المطلوبه ولاكن في اي مكان اضع اسم الحقل الذي يستدعي فيه الوقت TEST.mdb تم تعديل أغسطس 29, 2020 بواسطه حسين العربى
jjafferr قام بنشر أغسطس 29, 2020 قام بنشر أغسطس 29, 2020 وعليكم السلام 🙂 قمت بتغيير الكود ليناسب اسم الحقل 🙂 ولكن ومثل ما اخبرتك في آخر مشاركتي السابقة ، عملت جدول بإسم tbl_DateTime ، ونموذج يأخذ بياناته من الجدول ، ومن الجدول نأخذ وقت وتاريخ السيرفر ، فرجاء حوّل هذا الجدول الى SQL Server (بحيث انه لا يكون جدول اكسس) ، و اربطه مع النموذج ، ورجاء اخبرنا بالنتيجة : . اما المقارنة ، فهي بدون الثواني. جعفر 1250.Server_DateTime.mdb.zip
حسين العربى قام بنشر أغسطس 29, 2020 الكاتب قام بنشر أغسطس 29, 2020 (معدل) استاذي الفاضل جعر اسف جدا تعبتك معي التعديل علي الكود الذي ارسلته لك لايعمل معي اما المثال الثاني الذي تفضلت به يعمل بس لا يحدث الوقت انا ضفت سجل وبقي عليه لاياتي بجديد ملوحظه في جدول SQL لابد من اضافة سجل لعطيك تاريخ وقت جديد ليس مثل الاكسس يظهر لك تحت السجل تاريخ وقت جديد تم تعديل أغسطس 29, 2020 بواسطه حسين العربى
jjafferr قام بنشر أغسطس 29, 2020 قام بنشر أغسطس 29, 2020 4 ساعات مضت, حسين العربى said: التعديل علي الكود الذي ارسلته لك لايعمل معي رحم الله إمرء عرف قدر نفسه 🙂 فأنا لا علم لي بأوامر SQL Server ، وحاولت ، لهذا السبب اخبرتك بأني : في ٢٦/٨/٢٠٢٠ at 23:45, jjafferr said: بعد البحث ، وجدت الطريقة ، ووضعتها في نموذج جديد . لذا انصحك ان تستجدم كود اخي @صالح حمادي ، ويكون هكذا بمعلوماتك ، مع مراعاة ان تكون Dim str_conn As New ADODB.Connection Dim RS As New ADODB.Recordset str_conn.Open "Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=master;Data Source=\\128.122.1.130" Set RS = str_conn.Execute("select GETDATE()") 'MsgBox RS(0) Me.srvr_Date_Time = RS(0) Set RS = Nothing str_conn.Close او نمشي في طريق اكسس : 4 ساعات مضت, حسين العربى said: بس لا يحدث الوقت انا ضفت سجل وبقي عليه لاياتي بجديد ملوحظه في جدول SQL لابد من اضافة سجل لعطيك تاريخ وقت جديد جرب هذا الكود ، فهو يقوم بإضافة سجل ، ثم يقوم بالمقارنة : Private Sub Form_Load() 'Me.iCompare = IIf(Format([Server_Time], "dddd, dd-mm-yyyy, hh:nn AM/PM") = Format([Local_Time], "dddd, dd-mm-yyyy, hh:nn AM/PM"), "OK", "Not OK") DoCmd.GoToRecord , , acNewRec Me.Temp = Now() If Format([Server_Time], "dddd, dd-mm-yyyy, hh:nn AM/PM") = Format([Local_Time], "dddd, dd-mm-yyyy, hh:nn AM/PM") Then Me.iCompare = "OK" Me.iCompare.ForeColor = vbBlack Else Me.iCompare = "Not OK" Me.iCompare.ForeColor = vbRed End If End Sub جعفر
صالح حمادي قام بنشر سبتمبر 1, 2020 قام بنشر سبتمبر 1, 2020 السلام عليكم معذرة لتأخري لأنني صرت أعمل في المزرعة عوضا عن أبي المريض في هذه الأيام. الله يشفيه. أخي حسين الكود الأول الذي تقدم به أستاذنا جعفر و كذلك الذي تقدمت به أنا يقومان بالواجب. فكل ما عليك هو إضافة كود استخراج تاريخ الجهاز ثم المقارنة بينهما أما بالنسبة لشرح الأكواد فهو كالتالي: في ٢٦/٨/٢٠٢٠ at 22:42, صالح حمادي said: str_conn.Open "Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=master;Data Source=" & Me.Comp1 هذا الكود يقوم بفتح الإتصال مع sql server مع العلم أن master هي قاعدة بيانات النظام في sql server في ٢٦/٨/٢٠٢٠ at 22:42, صالح حمادي said: Set RS = str_conn.Execute("select GETDATE()") هنا قمنا بتنفيذ إستعلام داخل السرفر و أسندنا النتيجة لمصدر السجلات RS GETDATE() هو كود يقوم بجلب التاريخ الحالي في sql server و تستطيع كتابة العبارة التالية في sql server لترى النتيجة select GETDATE() MsgBox RS(0) هنا قمنا بعرض السجل الأول في المصدر RS مع العلم أن بها سجل واحد فقط في ٢٦/٨/٢٠٢٠ at 22:42, صالح حمادي said: str_conn.Close هنا قمنا بإعلاق الإتصال مع SQL SERVER 1 1
حسين العربى قام بنشر سبتمبر 1, 2020 الكاتب قام بنشر سبتمبر 1, 2020 الف شكر استاذي الفاضل صالح حمادي وجزاك الله خيرا ولكل اساتذتي الفاضل الذين قامو بمساعدتي وانا توصلت الي حل بطريقه بسيطه جدا والف سلامة علي الوالد وشفاه الله وعفاه من كل شر
اسلام سيد قام بنشر سبتمبر 1, 2020 قام بنشر سبتمبر 1, 2020 السلام عليكم حياكم الله جميعا كيف لى من الاستفاده من هذا الموضوع فى ملفى لدى قاعدة بيانات سيكول سيرفر مرطبة بملف اكسيس والوجهات موزعه على المستخدمين جميع الشاشات فى الاكسيس بتاخد التاريخ من فورم واحد menu والذى به مربع نص والقيمه الافتراضية له date() وكل الفورمز بتجلب التاريخ من مربع النص هذا فكيف لى اطب ما فعلتم من اكود لجعل مربع النص اللى فى فورم menu يقرأ من تاريخ السيرفر ملحوظه استخدم استاتك اى بى فى البرنامج
jjafferr قام بنشر سبتمبر 1, 2020 قام بنشر سبتمبر 1, 2020 1 ساعه مضت, صالح حمادي said: صرت أعمل في المزرعة عوضا عن أبي الله ان شاء الله يقويك على هذا العمل ، ويعطي الوالد الصحة والعافية ، 22 دقائق مضت, حسين العربى said: وانا توصلت الي حل بطريقه بسيطه جدا ياريت تتفضل علينا بهذا الحل 🙂 جعفر
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.