تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
إنشاء مشروع باستخدام sql server و linq وتقارير crystal report
#21
إقتباس :الف شكر لك اخي الحبيب
اهلا بك

إقتباس :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- في هذا الكود لاحظت ان تسلسل البارامترات ليس كتسلسل البارامترات المعطى من اللغة _

MessageBox.Show(ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }

حيث ان يجب ان يكون أول بارامتر هو البارامتر الأونر او المالك "لم افهم اصلاً ماذا يعني أونر والثاني هي الجملة النصية هل الـ ex.message هي الجملة النصية الا يجب ان يكون بعد القوس مباشرة علامة ,
هذا الإجراء معاد تعريفة 21 مرة، إعادة التعريف 7 تطلب هذه الوسيطات فقط....

إقتباس :8- هذا الكود اكثر شيء جنني وعملت عليه جلسة تاأمل كاملة ههههه وماكنت افهم قصته

var users = from d in db.Users
where d.Admin
select d;

ليش استخدمنا كلمة var هل هذا يعني Variant ام ماذا وليه ماعطانا الكومبايلر خطأ لاننا مااستخدمنا السيمي كولن او الــفاصلة المنقوطة في نهاية كل سطر ;
هذا الكود هو جملة التحديد في linq، تعادل:
كود :
[align=left]select * from users where admin=true
[/align]
في لغة sql.
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]
:VB
كود :
[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.Users.InsertOnSubmit(admin);
db.SubmitChanges();

نحن استخدمنا هنا الأوبجكت db الذي انشئناه من الصف او الكلاس DB اليس كذلك اخي الحبيب ولكن لمااااذا لم نستخدم الأوبجكت عندما انشئنا مديراً جديداً
نحن استخدمنا هنا الأوبجكت 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 بدأت بإستخدام العناصر الموجودة في الفورم الرئيسي من فورم آخر
كمثال :
mf.newuser.Enabled = user.SingleOrDefault().Admin;
هنا استخدمنا القائمة newuser مع العلم ان القائمة المودفاير الخاص بها هو Private ولقد ظهر لي خطأ عندما عملت كومبايل للبرنامج فأضطررت لتغيير الخاصية Modifier إلى Public حتى اختفت كل الأخطاء وقس على ذلك كل أوبجكت انشأناه من فورم ما هل مافعلته انا صحيح ام ان هناك خطأ ما ؟؟
في بسيك تكون الفئات وتوابعها معرفة كـ friend shared تعادل static internal في سي شارب، أما سي شارب كل تكون internal للفئات و private لتوابعها، لذلك دائما ما نحتاج تعريف متغير جديد من فئة، ولكي نصل لتوابعها يجب أن نغيرها من private لـ internal. مثلا عند استدعاء نموذج اضافة مستخدم جديد:
:#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 للقاعدة وعمل إستيراد وتصدير لها
سوف نأتي لها في آخر المشروع إن شاء الله.
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
إنشاء مشروع باستخدام sql server و linq وتقارير crystal report - بواسطة DreamsDotNet - 13-03-13, 05:13 PM


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم