![]() |
|
كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40) +--- قسم : قسم أسئلة قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=41) +--- الموضوع : كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل (/showthread.php?tid=11737) الصفحات:
1
2
|
كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - emando - 16-03-15 السلام عليكم إخوانى بالمنتدى الكريم vb4arb هذاكود شاشة الدخول للبرنامج يعمل 100% بس محتاج أنفذه بالادو دوتنت أنا صممت برنامج لدخول الموظفين بالبنك باستخدام VB.NET 2010 & وقاعدة بيانات SQL 2008 وذلك بتقنية الادو كلاسيك - وأريد المساعده لكتابة شاشة اللوجين ولكن بالادو دوتنت نظام متصل "كونيكتيدمود" قبل أن نبدأ ده توضيح لاآلية ومنطقية الكود ** من المنطقى هناك أربعة إحتمالات عند شاشة دخول أحد الموظفين --إما أن يدخل إسم غير موجود بجدول الموظفين --أوأنه ليس مديرا --أو أنه أدمين مسجل لكن تفعيله متوقف --أو أنه أدخل جميع بياناته صحيحه وهو أيضا أدمين وفى هذه الحاله له صلاحية الدخول وسوف أوضح لحضراتكم ما عملته – أولا عملت داله(فنكشن)من قاعدة البيانات نفسها وسميتها"IsAdmin" ALTER FUNCTION [dbo].[IsAdmin] (@UID NVARCHAR(15),@Pwd nvarchar(15)) returns int as Begin Declare @St bit; Declare @Ad bit; Select @St=[Status] , @Ad=[Admin] from Employees where [UserName]= @UID and [Password] = @Pwd if @@ROWCOUNT=0 Begin return (0) end if @Ad=0 Begin return (1) end if @St=0 Begin return (2) end return (3) end ثانيا فى الموديل قمت بتعريف كائنات الاتصال بقاعدة البيانات Module Module1 Public CN As New ADODB.Connection Public Rst As New ADODB.Recordset Public p As Integer Public ms As String Public IDEMP As String Sub CONN() If Not CN.State = 1 Then CN.ConnectionString = "Driver={SQL Server Native Client 10.0};Server=EMANDO-PC;Database=ATM;Uid=sa;Pwd=sa5000;" CN.Open() End If End Sub End Module ثالثا كود مفتاح لوجين من شاشة دخول موظف بالبرنامج Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Rst.State = 1 Then Rst.Close() Rst.Open("select dbo.isadmin ('" + TextBox1.Text + "','" + TextBox2.Text + "')", CN) If Rst(0).Value = 0 Then MsgBox("عفوا ليس لك صلاحيه" & vbCrLf & "خطأ فى إسم المستخدم أو كلمة المرور ", MsgBoxStyle.Critical, "نظام الموظفين") ElseIf Rst(0).Value = 1 Then MsgBox("عفوا ليس لك صلاحيه" & vbCrLf & "عفوا لست مسجل هنا ", MsgBoxStyle.Critical, " دخول نظام الموظفين") ElseIf Rst(0).Value = 2 Then MsgBox("عفوا ليس لك صلاحيه" & vbCrLf & "الحساب متوقف مؤقتا", MsgBoxStyle.Critical, "نظام الموظفين") ElseIf Rst(0).Value = 3 Then IDEMP = TextBox1.Text TextBox1.Text = "" TextBox2.Text = "" Me.Hide() frmMaster.ShowDialog() Exit Sub End If Dim uid As String = TextBox1.Text Dim pwd As String = TextBox2.Text Dim rs1 As New ADODB.Recordset Rst.Open("select dbo.isadmin('" + uid + "','" + pwd + "') as TT ", Cn) Dim I As Integer = Rst("TT").Value 'MsgBox(I) Rst.Close() If I = 0 Then MsgBox("إسم المستخدم غير مسجل", MsgBoxStyle.Information, "دخول نظام الموظفين") Exit Sub End If If I = 1 Then MsgBox("عفوا ليس لك صلاحية الدخول هنا", MsgBoxStyle.Critical, "دخول نظام الموظفين") End End If If I = 2 Then MsgBox("عفوا تم إيقاف الحساب مؤقتا", MsgBoxStyle.Critical, "دخول نظام الموظفين") End End If Try If TextBox1.Text = "" Then MsgBox("you should enter UserName", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly) TextBox1.Focus() Exit Sub End If If TextBox2.Text = "" Then MsgBox("you should enter Password", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly) TextBox2.Focus() Exit Sub End If rs1.Open("Select dbo.EmployeeStatus('" & TextBox1.Text & "','" & TextBox2.Text & "')", Cn) Dim H As Integer = rs1(0).Value 'نغلق الاتصال هنا 'حتى لا يعطى للمستخدم إعتراض بالمرحله القادمه حين يفتح الاتصال عند إدخال عميل جديد rs1.Close() If H = 0 Then MsgBox("يوجد خطأ فى إسم المستخدم أو كلمة المرور", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Login") TextBox1.Focus() Exit Sub End If If H = 1 Then MsgBox("إسم المستخدم و كلمة المرور صحيحه ولكن حسابك متوقف", MsgBoxStyle.Critical, "Login") Exit Sub End If ' handle the error Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Login") End End Try Me.Hide() frmMaster.ShowDialog() End Sub بطلب المساعدة فى كود شاشة اللوجين كود الدخول ولكن باستخدام مكتبة الادودوت نت كونيكتيدمود النظام المتصل أفادنا الله وإياكم RE: كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - msb20102004 - 22-03-15 (16-03-15, 12:42 AM)emando كتب : السلام عليكم إخوانى بالمنتدى الكريم vb4arb اسف اخي رددت علي الموضوع بالخطا انا اعرف الكود وكنت قد كتبته في كورس AGC ارجو من التواصل معي لنتعاون في الكورس RE: كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - emando - 31-03-15 إخوانى لماذا لم يتم الرد على سؤالى حتى الان؟ رغم وجود عباقره بالبرمجه بهذا المنتدى وأرى أن سؤالى بسيط وسهل لهم وأنا مبتدئ وبحثت عن الاجابه عنه كتير منذ رفع هذا السؤال ولم أجد إلا أمثله بالنظام الدس? RE: كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - emando - 31-03-15 إخوانى لماذا لم يتم الرد على سؤالى حتى الان؟ رغم وجود عباقره بالبرمجه بهذا المنتدى وأرى أن سؤالى بسيط وسهل لهم وأنا مبتدئ وبحثت عن الاجابه عنه كتير منذ رفع هذا السؤال ولم أجد إلا أمثله بالنظام الدسكونيكتيدمود إن أمكن أحد يرفع مثال لبرنامج صغير مكون من 2 فورم 1- فورم العملاء مثلا وعليها مفتاح إضافة عميل ومفتاح تعديل والحذف والبحث والتالى والسابق بالاكواد بنظام الادودوتنت النظام المتصل 2- فورم التقارير مع شرح ربط التقرير وكيفية كتابة الكود وإن كان يوجد مثال لهذا مرفوع بالمنتدى سابقا أو بمنتديات أخرى أو اليوتيوب فرجاءا إعطائى الرابط الخاص به للإطلاع عليه مشكوين أولا وأخيرا *** RE: كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - raoe-041 - 03-04-15 اخي الكريم حاول تغير طريقة السؤال يعني الكود طويل جدا و حاول تنسيقه بين الوسوم و ايضا لو ترفع المشروع يمكن احد الاخوة يستطيع مساعدتك و امل انت تجد حل لمشكلتك و لا تيأس .............. تحياتي RE: كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - emando - 12-04-15 السلام عليكم المشروع وقاعدة البيانات توجد فى مجلد مضغوط بعنوان test ado.net ومضمونه عن النظام البنكى نظام الموظفين ونظام العملاءمن إيداع نقديه ومن سحب والبرنامج يحسب الرصيد من خلال فنكشن بداخل قاعدة البيانات يوجد على هذا الرابط https://www.dropbox.com/s/g1lodkazhq2vwu6/test%20ado.net.rar?dl=0 من المهم وضع تفسير لكل كائنات قاعدة البيانات لفهم سير العمليات بداخلها وسهولة التعامل مع الكود عند كتابته فى بيئة فيجوال بيزيك دوتنت ولهذا شرح لتصميم قاعدة البيانات بجداولها والاجراءات الفرعيه Procedures و الفنكشن Functions والديجرام Diagram_0 فإلى الشرح ويمكنكم الاطلاع على كل الكائنات من قاعدة البيانات المرفقه بالمشروع لتسهيل العمل نصمم الجداول التاليه:- جدول العملاء Customers حقول الجدول تسمية الحقل النوع السماح بفارغ (Null) التسميه وصف النوع ID int رقم تسلسل العميل مفتاح أساسى وترقيم تلقائى من خاصية Is Identity=yes FirstName Nvarchar(10) الاسم الاول حقل نصى طوله (10) LastName Nvarchar(10) الاسم الاخير حقل نصى طوله (10) Company Nvarchar(20) الشركه حقل نصى طوله (20) JobTitle Nvarchar(50) الوظيفه حقل نصى طوله (50) BusinessPhone Nvarchar(15) تليفون العمل حقل نصى طوله (15) HomePhone Nvarchar(15) تليفون المنزل حقل نصى طوله (15) MobilePhone Nvarchar(15) الموبايل حقل نصى طوله (15) Email Nvarchar(30) البريد الالكترونى حقل نصى طوله (30) Street Nvarchar(30) الشارع حقل نصى طوله (30) City Nvarchar(15) المدينه حقل نصى طوله (15) AccountNo Nvarchar(15) رقم حساب العميل حقل نصى طوله (15) PinCode Nvarchar(10) الرقم الكودى حقل نصى طوله (10) Status bit حالة التفعيل حقل نصى طوله (15) جدول الإيداع Deposits حقول الجدول تسمية الحقل النوع السماح بفارغ (Null) التسميه وصف النوع ID int رقم تسلسل العميل مفتاح أساسى وترقيم تلقائى من خاصية Is Identity=yes CustomerID int رقم حساب العميل حقل رقمى DateMove Datetime التاريخ حقل تاريخ Amoun t int مبلغ الايداع حقل رقم عشرى ويقبل نقدىه Details nvarchar(50) التفاصيل حقل نصى طوله (50) EmployeeID int رقم الموظف حقل رقمى جدول السحب Withdrawals حقول الجدول تسمية الحقل النوع السماح بفارغ (Null) التسميه وصف النوع ID int رقم تسلسل العميل مفتاح أساسى وترقيم تلقائى من خاصية Is Identity=yes CustomerID int رقم حساب العميل حقل رقمى DateMove Datetime التاريخ حقل تاريخ Amount int مبلغ السحب حقل رقم عشرى ويقبل نقدىه Details nvarchar(50) التفاصيل حقل نصى طوله (50) EmployeeID int رقم الموظف حقل رقمى جدول الموظفين Employees تسمية الحقل النوع ا لسماح بفارغ (Null) التسميه وصف النوع ID int رقم تسلسل العميل مفتاح أساسى وترقيم تلقائى من خاصية Is Identity=yes FirstName Nvarchar(10) الاسم الاول حقل نصى طوله (10) LastName Nvarchar(10) الاسم الاخير حقل نصى طوله (10) jobTitle Nvarchar(50) الوظيفه حقل نصى طوله (50) BusinessPhone Nvarchar(15) تليفون العمل حقل نصى طوله (15) HomePhone Nvarchar(15) تليفون المنزل حقل نصى طوله (15) MobilePhone Nvarchar(15) الموبايل حقل نصى طوله (15) Email Nvarchar(30) البريد الالكترونى حقل نصى طوله (30) Street Nvarchar(30) الشارع حقل نصى طوله (30) City Nvarchar(15) المدينه حقل نصى طوله (15) UserName Nvarchar(15) إسم المستخدم حقل نصى طوله (15) Password Nvarchar(15) كلمة السر حقل نصى طوله (15) Status bit حالة التفعيل منطقى 0 أو 1 أو القيمه True أو False 0 CustomersForm bit شاشة العملاء " DepositsForm bit شاشة الايداعات " WithdrawalsForm bit شاشة السحب " NewCustomers bit شاشة عميل جديد " DeleteCustomer bit حذف عميل " Admin bit مدير قاعدة البيانات " حقول الجدول جدول المستخدمين Users ************ ومن تقنية قواعد البيانات SQL Severe التى أثبتت نجاحها هو أمن وحماية البيانات Security نستطيع أن نحدد من هم الذين لهم القدره والصلاحيه لمجرد رؤية فقط أو التعديل أو الحذف أو حتى إنشاء القواعد أو الجداول وإنشاء مستخدمين وعمل بعض الاجراءات الفرعيه التى تخدم المشروع ككل فهى تعتبر من مميزات هذا النوع من قواعد البيانات 0 **************** بعد ذلك أنشأنا مستخدم جديد لقاعدة البيانات ATM New Login . نضغط زر الفأره اليمين و نختار Login نحدد Security من تبويب Geeneral ونسميه Dev1 Login name ونعين له كلمة سر الدخول لقاعدة البيانات وهى 123 SQL Server authentication ونحدد له صلاحياته:- من تبويب User Mapping نحدد قاعدة البياناتATM من Users Mapped to this Login: نحدد علامة صح أمام db_owner Database Role membership for: ATM إنشاء إجراءات فرعيه Procedures Stored Procedures New Stored Procedure من Programmbility ** أو من شريط الادوات القياسى نضغط مفتاح New Query 0 كما نرى هنا مجموعة الاجراءات الفرعيه المستخدمه للمشروع الحالى 0 *** أول هذه الإجراءات هو إجراء للقيام بعملية الايداع dbo. AddDeposit من قاعدة البيانات 0 لتفتح شاشة فارغه لانشاء البروسيدجر فنكتب بها الكود كما ترى شرح آلية هذا الاجراء الفرعى عندما نبحث عن عميل من خلال رقم حسابه من الدوتنت وإستدعينا على هذا الاجراء الذى يقوم بعملية إيداع مررنا له أربعة بارامترات والخامسه قيمة التارخ والتى سنمررها للقاعده من خلال مهامه أنشئت من قبل سنوضحها فيما بعد تأخذ التوقيت المصرى هذه المهمه dbo.EgyptDatTime من خلال جملة Insert Into والتى تتطلب إرسال هذه القيم من خلال شاشة الايداع بالدوتنت --------------------.-.-.-.-.-.-.-.------------------- ثانى هذه الإجراءات هو إجراء للقيام بعملية السحب dbo. Addwithdrawals من قاعدة البيانات 0 شرح آلية هذا الاجراء الفرعى نفس ما حدث فى الاجراء الخاص بحركة الايداع ولكنه عمليه عكسيه هنا وتتطلب أربعة إحتمالات من هنا قبل الشروع فى هذا الحدث: • التحقق من رصيد العميل قبل البدء • التحقق من رقم حساب العميل • التحقق من إسم الموظف المسئول • إذا تحققت الشروط ينفذ عملية السحب وطبع رساله تأكيد : ' The Operation Completed Succesfully ' ++++++++********++++++++ المهام Functions من شريط الادوات القياسى نضغط مفتاح New Query 0 أول هذه المهام هو مهمة معرفة حالة التفاعل للعميل dbo. CustomersStatus من قاعدة البيانات 0 شرح آلية CustomersStatus: هذه المهمه نحتاجها عند دخول أحد العملاء من خلال ماكينات ال ATM بالشارع للتأكد من حالة تفاعلية العميل لتعود به True or False . بعد إختبار إسم المستخدم وكلمة المرور وهنا حددنا طول كلا المتغيرين مطابقة لطول الحقلين حجزنا متغير @Stc ليحمل قيمة حقل الحاله للعميل لتعود به لل Client ب True or False وهنا مررنا ثلاثة بارامترات لرقم حساب عميل والرقم الكودى له والبرامتر الثالث هو حالة التفعيل للعميل . ثم من جملة الاستعلام Select هنا نستفسر عن ذلك وتوجد ثلاث إحتمالات: • أن العميل أدخل بيانات خاطئه (غير مسجله) وهنا يأتى دور الأمر @@ROWCOUNT إذا رجعت بصفر تعنى أن العميل ليس مسجل وبالتالى سيخرج من الامر ولا يكمل 0 • إذا رجعت بواحد تعنى أن العميل موجود وحالته متوقف Suspend وبالتالى سيخرج من الامر ولا يكمل 0 • إذا رجعت بإثنين تعنى العميل موجود وحالته فعال وبالتالى سيكمل وينتقل للخطوه التاليه ليفتح للعميل 0 *********** ثانى هذه المهام هو مهمة معرفة التوقيت المصرى dbo. EgypteDateTimeمن قاعدة البيانات 0 شرح آلية dbo. EgypteDateTime: تقوم هذه المهمه أنها تقوم بحساب الوقت والتاريخ حسب توقيت جرينتش فالداله GETUTCDATE وظيفتها أنها تعود بالوقت والتاريخ حسب توقيت جرينتش والداله DATEADD أنها تزيد الوقت والتاريخ وبداخل القوس أدخلنا المعامل الزمنى للساعهHOUR والقيمه 2 ساعتين هى فارق الوقت بين مصر وبين جرينتش ثالث: هذه المهام هو مهمة معرفة حالة التفاعل للعميل dbo. EmployeeStatusمن قاعدة البيانات 0 شرح آلية EmployeeStatus: هذه المهمه للتأكد من حالة تفاعلية الموظف المسؤل عن السحب بالبنك لتعود به True or False بعد إختبار إسم المستخدم وكلمة المرور وهنا حددنا طول كلا المتغيرين مطابقة لطول الحقلين حجزنا متغير @Stc ليحمل قيمة حقل الحاله للموظف لتعود به لل Client ب True or False وهنا مررنا ثلاثة بارامترات لاسم المستخدم للموظف وكلمة المرور له والبرامتر الثالث هو حالة التفعيل للموظف. ثم من جملة الاستعلام Select هنا نستفسر عن ذلك وتوجد ثلاث إحتمالات: • أن الموظف أدخل بيانات خاطئه (غير مسجله) وهنا يأتى دور الأمر @@ROWCOUNT إذا رجعت بصفر تعنى أن الموظف ليس مسجل وبالتالى سيخرج من الامر ولا يكمل 0 • إذا رجعت بواحد تعنى أن الموظف موجود وحالته متوقف Suspend وبالتالى سيخرج من الامر ولا يكمل 0 • الموظف موجود وحالته فعال وبالتالى سيكمل وينتقل للخطوه التاليه ليفتح للموظف 0 رابعا: هذه المهام هو مهمة معرفة حالة التفاعل للعميل dbo. GetBalanceمن قاعدة البيانات 0 شرح آلية GetBalance: لحساب الرصيد الحالى للعميل نستعلم عنه بالجداول الثلاثه بدلالة رقم حساب العميل AccountNo وحجزنا مخزن بالذاكره @AccNo ووضعنا به رقم العميل ID من جدول العملاء Customers عندما يكون الرقم الذى أدخله الموظف يساوى رقم حساب العميل AccountNo ونرى هنا المعامل الذى نوعه decimal لانه سيحمل مبالغ نقديه وبها كسور ثم حجزن مخزن @TotalDeposits decimal ليجمع إيداعات هذا الحساب ثم حجزن مخزن @TotalWithdrawals decimal ليجمع مسحوبات هذا الحساب ثم حجزن مخزن @Balance decimal لطرح المسحوبات من الإيداعات وهنا إستخدمنا coalesce لتعود بصفر عندما يكون إجمالى الايداعات أو المسحوبات = NUL خامس: هذه المهام هو مهمة معرفة حالة التفاعل للعميل dbo.IsAdminمن قاعدة البيانات 0 شرح آلية GetBalance: إرسال أربعة معاملات حالة التفعيل Status @St مدير قاعدة البيانات Admin @Ad إسم الموظف UserName @UID كلمة السر Password @Pwd --هناك أربعة إحتمالات عند شاشة دخول أحد الموظفين عند تشغيل البرنامج --إما أن يدخل إسم غير موجود بجدول الموظفين --وأنه ليس مديرا --أو أنه أدمين مسجل لكن تفعيله متوقف --أو أنه أدخل جميع بياناته صحيحه وهو أيضا أدمين أرجو دخول أحد لاستكمال كتابة الاكواد بالدوتنت 2010 VB.NT بمكتبة الادودوتنت النظام المتصل وشاشات البرنامج جاهزه بأدواتها حتى الاكواد ولكنها مرتبطه بقاعدة البيانات من خلال مكتبة الادوكلاسيك وأنا عملت الاكواد الخاصه بها تعليق باللون الاخضر كما حضراتكم سترونها *** RE: كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - emando - 13-04-15 السلام عليكم لماذا لم يدخل أحد ليساعدنى فى بناء المشروع باستخدام مكتبة الادودوتنت النظام المتصل Connected Mode ؟؟؟؟؟؟؟؟؟؟؟ مشروع النظام البنكى RE: كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - emando - 22-04-15 لماذا لم يتم الرد؟ RE: كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - emando - 24-04-15 أين الرد يا أصدقائى أريد حلا لهذا الموضوع؟؟؟ RE: كود الدخول للبرنامج بالادو كلاسيك و مساعده بالادو دوت نت كونيكتيد مود النظام المتصل - نبيل جعران - 06-12-15 (22-04-15, 12:53 AM)emando كتب : لماذا لم يتم الرد؟ انصحك بان نلا ترفع مشاريعك في المره القادمه فان كان هناك مبرمج حقيقي للرد الجيد سيكتفي بما قبل الكود وما بعده لتصحيح ما بينهما او الاكتفا بالشرح.كما ان مشروعك ان لم يتم فهمه فقد تم فهم المطلوب ومن السهل على المبرمجين في هذا المنتدى ايجاد البديل الذي يفي بالغرض |