13-03-13, 05:13 PM
إقتباس :الف شكر لك اخي الحبيباهلا بك
إقتباس :1- ما معنى الخاصية Auto-Syncهذه الخاصية لمزامنة الحقل في محتوى البيانات مع الحقل في قاعدة البيانات.
إقتباس :2- هل الــخاصية PersonID لها نفس خواص الــ ID في الزيادة التلقائية والــ Primary key و إلخحقل العلاقة يجب ان يكون من نفس النوع فقط، ولا يشترط ان يكون معرف اساسي، اما أن يكون ترقيم تلقائي فهذا خطأ، عادة ما يتم ربط العمود الذي يحمل خصائص مفتاح اساسي وترقيم تلقائي من الجدول الاساسي، مع عمود اخر يكون من نفس النوع في الجدول الفرعي، القيمة في حقل العلاقة من الجدول الفرعي تكون نفس القيمة التي بحقل الجدول الاساسي، لو افترضنا أننا أدخلنا صف في الجدول الاساسي وكان رقمه 5، عندما نضيف صف في الجدول الفرعي يكون تابع لهذا الشخص الذي رقم 5، نأخذ قيمة حقل المفتاح الأساسي ونضعها في حقل العلاقة بالجدول الفرعي، وعندما نستعلم عن البيانات، كأن نأتي ببيانات هذا الشخص 5 من الجدول الاساسي، نذهب للجدول الفرعي ونقوم بجلب البيانات من كل الصفوف التي تحمل في حقل العلاقة رقم 5.
إقتباس :3- ليه عملت كونكشن مرتين ؟؟ هههه هي مافهمتهاعندما عملنا الاتصال الأول كان للاتصال بالسيرفر فقط، قبل أن ننشئ قاعدة البيانات، ثم بعد ذلك أنشأنا قاعدة البيانات من الكود، وعدنا لمحتوى البيانات من جديد لنربطه بقاعدة البيانات.
هذه العملية نقوم بها مرة واحدة فقط عند إنشاء البرنامج، وعند توزيعه سيكون جاهز، ولن يحتاج للربط مع قاعدة البيانات....
إقتباس :4- مامعنى التسمية .\sqlexpress وخصوصا الباك سلاش والنقطة وهل يمكنني ان اسميه كما اريدالنقطة تعني الجهاز الحالي، يمكننا كتابة اسم الجهاز بدلا عنها ولكن سيكون خطأ عند تشغيل البرنامج على اجهزة أخرى، يمكن كتابة اسم سيرفر أيضا بدلا عنها في حال كان الجهاز الحالي مرتبط بسيرفر على شبكة، أو حتى من خلال الانترنت، sqlexpress هي نسخة مجانية من قواعد البيانات sql server، يمكنك استبدالها بنسخ اخرى إن أردت....
إقتباس :5- عندما كتبنا الكود التالي private DB.PhoneBookDB db = new DB.PhoneBookDB(); فنحن انشئنا الأوبجكت db من الكلاس DB اليس ذلك صحيح ؟؟ وهل تسمى هذه العملية كبسلة Encapsulation أم Abstract تجريدسوف يأتي الجواب مع السؤال 11 إن شاء الله.
إقتباس :6- لماذا عرفنا الكود السابق على انه Private وبكلاس الفورم لود هل يصح ان نضعه في التصريحات العامة ام ماذا ؟وضعنا هذا المتغير في قسم التصريحات العامة وليس في حدث التحميل للنموذج، لأننا استخدمناه في أكثر من مكان من الكود، اللهم في نموذج اضافة مستخدم جديد، وضعنا المتغير داخل حدث ضغط رز الاضافة، لأننا لم نكتب غيره ولا نحتاج أن يكون عام....
إقتباس :7- في هذا الكود لاحظت ان تسلسل البارامترات ليس كتسلسل البارامترات المعطى من اللغة _هذا الإجراء معاد تعريفة 21 مرة، إعادة التعريف 7 تطلب هذه الوسيطات فقط....
MessageBox.Show(ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
حيث ان يجب ان يكون أول بارامتر هو البارامتر الأونر او المالك "لم افهم اصلاً ماذا يعني أونر والثاني هي الجملة النصية هل الـ ex.message هي الجملة النصية الا يجب ان يكون بعد القوس مباشرة علامة ,
إقتباس :8- هذا الكود اكثر شيء جنني وعملت عليه جلسة تاأمل كاملة ههههه وماكنت افهم قصتههذا الكود هو جملة التحديد في linq، تعادل:
var users = from d in db.Users
where d.Admin
select d;
ليش استخدمنا كلمة var هل هذا يعني Variant ام ماذا وليه ماعطانا الكومبايلر خطأ لاننا مااستخدمنا السيمي كولن او الــفاصلة المنقوطة في نهاية كل سطر ;
كود :
[align=left]select * from users where admin=true
[/align]var هي اضافة لم تكن مع الاصدارات السابقة من الفجوال (variable)، تستخدم لتعريف متغيرات مجهولة النوع، يقوم المترجم باستنتاج النوع من خلال القيمة التي يحملها المتغير.
هذه الخاصية تعطي ميزة ومرونة كبيرة في الكود، انظر لهذا الكود مثلا:
:#C
كود :
[align=left]class Person
{
string Name { get { return "Adb Allah"; } }
int Age { get { return 40; } }
}[/align]:VB
كود :
[align=left]Class Person
ReadOnly Property Name() As String
Get
Return "Abd Allah"
End Get
End Property
ReadOnly Property Age() As Integer
Get
Return 40
End Get
End Property
End Class[/align]:#C
كود :
[align=left]var Person = new { Name = "Abd Allah", Age = 40 };
[/align]كود :
[align=left]Dim Person = New With {Key .Name = "Abd Allah", Key .Age = 40}
[/align]إقتباس : 9- في الكود السابق مالف افهمه ايضاً ان هل نحن هنا جلبنا المدراء ام انشئنا مدير اي الكود السابق هل يستخدم لجلب البيانات ام إنشاء البياناتالكود السابق كما قلنا هو لتحديد البيانات او لجلبها، استخدمناه لنعرف اذا ما كان هنالك مدير للبرنامج أم لا، وعند تشغيل البرنامج لأول مره، لن يكون هناك أي بيانات، لذلك علينا تسجيل مدير للبرنامج من خلال الكود الاخير في سؤالك.
10- آه يبدوا ان هذا هو الكود المسؤول عن إنشاء مدير
DB.Users admin = new DB.Users();
admin.Username = "Admin";
admin.Password = "Admin";
admin.Admin = true;
admin.Active = true;
هل هذا صحيح اخي الحبيب
إقتباس :11- وهذان السطران تسببا لي بإرتباك شديد جداًنحن استخدمنا هنا الأوبجكت db الذي انشئناه من الصف او الكلاس DB اليس كذلك اخي الحبيب ولكن لمااااذا لم نستخدم الأوبجكت عندما انشئنا مديراً جديداً
db.Users.InsertOnSubmit(admin);
db.SubmitChanges();
نحن استخدمنا هنا الأوبجكت db الذي انشئناه من الصف او الكلاس DB اليس كذلك اخي الحبيب ولكن لمااااذا لم نستخدم الأوبجكت عندما انشئنا مديراً جديداً
محتوى البيانات يحتوي على اثنين namespace، الأول فيه فئة من جداول قاعدة البيانات، والآخر فيه فئات من اسماء الجداول وداخل كل فئة خصائص من الاعمدة التي في الجداول، اذهب لمحتوى البيانات، هنالك خاصيتين قما بكتابة DB بكل منهن، الأولى Context Namespace، والأخرى Entity Namespace، قم بتغيير الأولى لـ: CDB، واذهب للكود في النموذج، اعمل متغير من الـ DB وانظر علما يحتوي، سوف تظهر فئة من كل جدول عملناه، اعمل متغير اخر من الـ CDB وانظر علما تحتوي، يوجد بها فئة من قاعدة البيانات.
لنبسط الامر أكثر، انظر:
:#C
كود :
[align=left]namespace CDB
{
class Users { }
class Persons { }
class PhoneNumbers { }
}
namespace DB
{
class Database
{
public System.Data.Linq.Table<CDB.Users> Users { }
public System.Data.Linq.Table<CDB.Persons> Persons { }
public System.Data.Linq.Table<CDB.PhoneNumbers> PhoneNumbers { }
}
}[/align]:VB
كود :
[align=left]Namespace CDB
Class Users
End Class
Class Persons
End Class
Class PhoneNumbers
End Class
End Namespace
Namespace DB
Class Database
Public Users As System.Data.Linq.Table(Of CDB.Users)
Public Persons As System.Data.Linq.Table(Of CDB.Persons)
Public PhoneNumbers As System.Data.Linq.Table(Of CDB.PhoneNumbers)
End Class
End Namespace[/align]اعتقد أن الفكرة قد اتضحت....
إقتباس :12- عندما قمت اخي الحبيب بإنشاء الأوبجكت mf من الفورم الرئيسي MainForm بدأت بإستخدام العناصر الموجودة في الفورم الرئيسي من فورم آخرفي بسيك تكون الفئات وتوابعها معرفة كـ friend shared تعادل static internal في سي شارب، أما سي شارب كل تكون internal للفئات و private لتوابعها، لذلك دائما ما نحتاج تعريف متغير جديد من فئة، ولكي نصل لتوابعها يجب أن نغيرها من private لـ internal. مثلا عند استدعاء نموذج اضافة مستخدم جديد:
كمثال :
mf.newuser.Enabled = user.SingleOrDefault().Admin;
هنا استخدمنا القائمة newuser مع العلم ان القائمة المودفاير الخاص بها هو Private ولقد ظهر لي خطأ عندما عملت كومبايل للبرنامج فأضطررت لتغيير الخاصية Modifier إلى Public حتى اختفت كل الأخطاء وقس على ذلك كل أوبجكت انشأناه من فورم ما هل مافعلته انا صحيح ام ان هناك خطأ ما ؟؟
:#C
كود :
[align=left]AddNewUser anu = new AddNewUser();
anu.ShowDialog();[/align]:VB
كود :
[align=left]AddNewUser.ShowDialog()
[/align]إقتباس :13- لم افهم هذه الجزئية اخي الحبيبهذه خاصية عملناها لنضع فيها اسم المستخدم الحالي (الذي قام بتسجيل الدخول)، سوف يأتي استخدامها في نموذج تعديل البيانات، سوف ترا ذلك إن شاء الله.
PHP كود :
private string un = String.Empty;
internal string Username
{
get { return un; }
set { un = value; }
}
إقتباس :14- عندما كتبت انت هذا الكودلا أدري.
PHP كود :
unbox.Text.Trim();
هل يصح كتابته بالشكل التالي
PHP كود :
string.trim(unbox.text);
إقتباس :15- هل هناك طريقة لعمل BackUP للقاعدة وعمل إستيراد وتصدير لهاسوف نأتي لها في آخر المشروع إن شاء الله.




