06-06-16, 12:05 PM
(آخر تعديل لهذه المشاركة : 06-06-16, 12:14 PM {2} بواسطة silverlight.)
السلام عليكم ورحمة الله وبركاته
عملية الترقيم التلقائي في برامج الداتا بيز التي تستخدم Sql أو التي تستخدم MS-Access تحدث بشكل تلقائي لأن ملفات Sql و ملفات MS-Access تقوم بعملية الترقيم التلقائي نيابة عن المبرمج
لكن هنا يأتي السؤال هل من الممكن الإستفادة من هذا الترقيم التلفائي ليعمل بمثابة مفتاح Key يمكن استخدامه في عمليات البحث داخل الداتا بيز ..... من المؤكد أنه يوجد هناك افكارا كثيرة للإجابة علي هذا السؤال
والفكرة التالية تعتبر واحدة من تلك الأفكار
الفكرة
1- يتم قراءة الوقت والتاريخ في لحظة إدخال البيانات باستخدام الدالة DateTime.Now
2- يتم استخدام StopWatch Class لتحديد الفترة الزمنية التي يأخذها تنفيذ الكود وهي غالبا ستكون عبارة عن اجزاء من الثانية
3- يتم إضافة الوقت المستغرق لتنفيذ الكود الي الوقت و التاريخ
4- تحويل الناتج الي String باستخدام String.Format
5- يتم تحويل هذا String الي رقم
و الكود التالي يوضح الأمر قليلا
لو قمت بإختبار الكود أعلاه ستجد انه وفي كل مرة تقوم بتجربة الكود ستحصل علي رقم مختلف و هذا الرقم سيكون عبارة عن التاريخ و الوفت باليوم و الشهر و السنة و الدقائق و الثواني و بعض الأجزاء من الثانية لكن عليك أن لا تنسي أنك هنا تتعامل مع String و دوما ستجد ان طول هذا String عبارة عن عشرون حرفا و احيانا هذا String قد يبدأ بالقيمة صفر Zero
ولكي تستطيع رؤية الترقيم الذي يعبر عن الوقت والتاريخ بشكل افضل أعد كتابة الكود بالشكل التالي
كما هو واضح فإنه وحتي الأن فإن الكود سهل و بسيط وقد لا تحتاج الي تحويله الي رقم بل ويمكن استخدامه كما هو في قواعد البيانات بحيث يتم تخزينه علي هيئة String
لكن إن أردت تحويله الي رقم فأنت بحاجة للمزيد من العمل علي الكود قليلا لأنك لو حاولت تحويل String هذا الي Integer سيحدث بعض الأخطاء وهذه الأخطاء سببها محدودية الكلاس Integer لأن الكلاس Integer أقصي قيمة له ستكون دوما اقل من قيمة الترقيم التلقائي لذلك قد يكون من الأفضل أن تقوم بتحويله إلي ULong مثلا وعلي ما أعتقد أنه وفي بعض الحالات قد تحدث أخطاء ايضا لذلك يجب ان تفكر في تحويل String الذي يعبر عن الترقيم التلقائي إما الي بايت Byte او مصفوفة من الأرقام او الي DateTime حتي يمكنك التحكم في الترقيم التلقائي بشكل افضل
عموما ولكي نستفيد بشكل أكبر من الكود اعلاه من الافضل تحويل الكود الي دالة او إلي كلاس حتي نستطيع التحكم فيه بشكل افضل و بالتالي يمكن استخدامه في عقد المقارانات والبحث بين البيانات بكل سهولة
و إن شاء الله فإن للحديث بقية .... تقبلوا تحياتي وكل عام و انتم بخير
عملية الترقيم التلقائي في برامج الداتا بيز التي تستخدم Sql أو التي تستخدم MS-Access تحدث بشكل تلقائي لأن ملفات Sql و ملفات MS-Access تقوم بعملية الترقيم التلقائي نيابة عن المبرمج
لكن هنا يأتي السؤال هل من الممكن الإستفادة من هذا الترقيم التلفائي ليعمل بمثابة مفتاح Key يمكن استخدامه في عمليات البحث داخل الداتا بيز ..... من المؤكد أنه يوجد هناك افكارا كثيرة للإجابة علي هذا السؤال
والفكرة التالية تعتبر واحدة من تلك الأفكار
الفكرة
1- يتم قراءة الوقت والتاريخ في لحظة إدخال البيانات باستخدام الدالة DateTime.Now
2- يتم استخدام StopWatch Class لتحديد الفترة الزمنية التي يأخذها تنفيذ الكود وهي غالبا ستكون عبارة عن اجزاء من الثانية
3- يتم إضافة الوقت المستغرق لتنفيذ الكود الي الوقت و التاريخ
4- تحويل الناتج الي String باستخدام String.Format
5- يتم تحويل هذا String الي رقم
و الكود التالي يوضح الأمر قليلا
PHP كود :
Dim keyDateTime As DateTime = DateTime.UtcNow
Dim sw As New Stopwatch
sw.Start()
Dim currentValue As DateTime = keyDateTime + sw.Elapsed
Dim currentValueString As String = currentValue.ToString(String.Format("{0:00}{1:00}{2:00}{3:00}{4:00}{5:00}ffffff", keyDateTime.Day, keyDateTime.Month, keyDateTime.Year, keyDateTime.Hour, keyDateTime.Minute, keyDateTime.Second, sw.Elapsed), Globalization.CultureInfo.InvariantCulture)
sw.Stop()
Me.Text = currentValueString
لو قمت بإختبار الكود أعلاه ستجد انه وفي كل مرة تقوم بتجربة الكود ستحصل علي رقم مختلف و هذا الرقم سيكون عبارة عن التاريخ و الوفت باليوم و الشهر و السنة و الدقائق و الثواني و بعض الأجزاء من الثانية لكن عليك أن لا تنسي أنك هنا تتعامل مع String و دوما ستجد ان طول هذا String عبارة عن عشرون حرفا و احيانا هذا String قد يبدأ بالقيمة صفر Zero
ولكي تستطيع رؤية الترقيم الذي يعبر عن الوقت والتاريخ بشكل افضل أعد كتابة الكود بالشكل التالي
PHP كود :
Dim keyDateTime As DateTime = DateTime.UtcNow
Dim sw As New Stopwatch
sw.Start()
Dim currentValue As DateTime = keyDateTime + sw.Elapsed
Dim currentValueString As String = currentValue.ToString(String.Format("{0:00} - {1:00} - {2:00} - {3:00} - {4:00} - {5:00} - ffffff", keyDateTime.Day, keyDateTime.Month, keyDateTime.Year, keyDateTime.Hour, keyDateTime.Minute, keyDateTime.Second, sw.Elapsed), Globalization.CultureInfo.InvariantCulture)
sw.Stop()
Me.Text = currentValueString
كما هو واضح فإنه وحتي الأن فإن الكود سهل و بسيط وقد لا تحتاج الي تحويله الي رقم بل ويمكن استخدامه كما هو في قواعد البيانات بحيث يتم تخزينه علي هيئة String
لكن إن أردت تحويله الي رقم فأنت بحاجة للمزيد من العمل علي الكود قليلا لأنك لو حاولت تحويل String هذا الي Integer سيحدث بعض الأخطاء وهذه الأخطاء سببها محدودية الكلاس Integer لأن الكلاس Integer أقصي قيمة له ستكون دوما اقل من قيمة الترقيم التلقائي لذلك قد يكون من الأفضل أن تقوم بتحويله إلي ULong مثلا وعلي ما أعتقد أنه وفي بعض الحالات قد تحدث أخطاء ايضا لذلك يجب ان تفكر في تحويل String الذي يعبر عن الترقيم التلقائي إما الي بايت Byte او مصفوفة من الأرقام او الي DateTime حتي يمكنك التحكم في الترقيم التلقائي بشكل افضل
عموما ولكي نستفيد بشكل أكبر من الكود اعلاه من الافضل تحويل الكود الي دالة او إلي كلاس حتي نستطيع التحكم فيه بشكل افضل و بالتالي يمكن استخدامه في عقد المقارانات والبحث بين البيانات بكل سهولة
و إن شاء الله فإن للحديث بقية .... تقبلوا تحياتي وكل عام و انتم بخير