الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استخدام sql view فى الفيجوال بيسك بالمقارنة مع SP

مغلق
بدأه samahy333 في 17 نوفمبر 2005 · 5 رد · 659 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ارغب فى ان اسال عن كيفية استخدام sql view فى دوت نت حيث قمت بادراج sql

view قمت بانشائه يتكون من اكثر من table وكود الخاص به هو الاتى

(SELECT     dbo.Emp.ID_Emp AS مسلسل, dbo.Emp.Emp_Code AS [كود الموظف], dbo.Salary.Sal_Name AS [نوع المرتب], dbo.Salary.Sal_Value AS [قيمة المرتب], 
                      dbo.Job.job_Title AS [الكادر الوظيفى], dbo.Dep.Dep_Name AS [اسم القسم], dbo.Emp.

Emp_Shift_ID AS [رقم الشف], dbo.Emp.Emp_Hir_Date AS [تاريخ التعيين], 
                      dbo.Emp.Emp_Month_Days AS [عدد ايام العمل], dbo.Emp.Emp_Birth_Date AS [تاريخ 

الميلاد], dbo.Emp.Mar_Status_ID AS [جالة الاجتماعية], 
                      dbo.Emp.Mil_Status AS [المعاملة العسكرية], dbo.Emp.Education AS التعليم, dbo.Emp.

Date_qualif AS [تاريخ التخرج], dbo.Emp.Ins_Emp AS [مساهمة العامل], 
                      dbo.Emp.Ins_Cmp AS [مساهمة الشركة], dbo.Emp.Ins_ID AS [الرقم التأمينى], dbo.Emp.

Ins_Amount AS [قيمة التأمين], dbo.Emp.Ins_Fixed, 
                      dbo.Emp.Pass_ID AS [رقم جواز السفر], dbo.Emp.Issued_Pass AS [تاريخ الاستخراج], dbo.

Emp.Emp_ID AS [رقم البطاقة الشخصية], 
                      dbo.Emp.Issued_ID AS [مكان الاستخراخ], dbo.Emp.Ended_Pass AS [تاريخ الانتهاء ], dbo.

Emp.Image AS الصورة, dbo.Emp.Emp_Type AS [ نوع الموظف], 
                      dbo.Emp.First_Name AS [اسم الاول], dbo.Emp.Last_Name AS [الاسم الثانى], dbo.Emp.

Gender AS النوع, dbo.Emp.Contact_Person AS [الشخص المتصل], 
                      dbo.Emp.Con_Per_Phone AS [تليفون المتصل], dbo.Emp.Relation AS العلاقة, dbo.Emp.

Address1 AS [عنوان 1], dbo.Emp.Address2 AS [عنوان 2], 
                      dbo.Emp.Address3 AS [عنوان 3], dbo.Emp.Phone1 AS [تليفون 1], dbo.Emp.Phone2 AS [

تليفون 2], dbo.Emp.Phone3 AS [تليفون 3], dbo.Emp.Mobile AS موبيل, 
                      dbo.Emp.Email AS [بريد اليكترونى], dbo.Emp.Emp_Dep, dbo.Emp.Emp_Job, dbo.Emp.

Emp_Salary_ID
FROM dbo.Salary RIGHT OUTER JOIN dbo.Emp ON dbo.Salary.ID = dbo.Emp.Emp_Salary_ID FULL OUTER JOIN dbo.Dep ON dbo.Emp.Emp_Dep = dbo.Dep.ID_Dep FULL OUTER JOIN ( dbo .Job ON dbo.Emp.Emp_Job = dbo.Job.Job_No

,وعند القيام بعملية الادراج من server explorer لمعرفة كيفية التعامل ظهرت رسالة خاصة data adapter مرفعة مع

الرسالة وتم كتابة الكود الاتى بشكل اتوماتيك فى windows generated code

تم فقط اضافة insert command وselect command

وتم اضافة parameters لinsert command

اما بالنسبة data adapter فكانت كالاتى

        Me.SqlDataAdapter1.InsertCommand = Me.SqlInsertCommand1
        Me.SqlDataAdapter1.SelectCommand = Me.SqlSelectCommand1
        Me.SqlDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() 

{New System.Data.Common.DataTableMapping("Table", "datagrid_emp", New System.Data.Common.

DataColumnMapping() {New System.Data.Common.DataColumnMapping("مسلسل", "مسلسل"), New 

System.Data.Common.DataColumnMapping("كود الموظف", "كود الموظف"), New System.Data.Common.

DataColumnMapping("نوع المرتب", "نوع المرتب"), New System.Data.Common.DataColumnMapping("قيمة 

المرتب", "قيمة المرتب"), New System.Data.Common.DataColumnMapping("الكادر الوظيفى", "الكادر الوظيفى

"), New System.Data.Common.DataColumnMapping("اسم القسم", "اسم القسم"), New System.Data.

Common.DataColumnMapping("رقم الشف", "رقم الشف"), New System.Data.Common.DataColumnMapping

("تاريخ التعيين", "تاريخ التعيين"), New System.Data.Common.DataColumnMapping("عدد ايام العمل", "عدد ايام 

العمل"), New System.Data.Common.DataColumnMapping("تاريخ الميلاد", "تاريخ الميلاد"), New System.Data

.Common.DataColumnMapping("جالة الاجتماعية", "جالة الاجتماعية"), New System.Data.Common.

DataColumnMapping("المعاملة العسكرية", "المعاملة العسكرية"), New System.Data.Common.

DataColumnMapping("التعليم", "التعليم"), New System.Data.Common.DataColumnMapping("تاريخ التخرج", "

تاريخ التخرج"), New System.Data.Common.DataColumnMapping("مساهمة العامل", "مساهمة العامل"), New 

System.Data.Common.DataColumnMapping("مساهمة الشركة", "مساهمة الشركة"), New System.Data.

Common.DataColumnMapping("الرقم التأمينى", "الرقم التأمينى"), New System.Data.Common.

DataColumnMapping("قيمة التأمين", "قيمة التأمين"), New System.Data.Common.DataColumnMapping("

Ins_Fixed", "Ins_Fixed"), New System.Data.Common.DataColumnMapping("رقم جواز السفر", "رقم جواز 

السفر"), New System.Data.Common.DataColumnMapping("تاريخ الاستخراج", "تاريخ الاستخراج"), New 

System.Data.Common.DataColumnMapping("رقم البطاقة الشخصية", "رقم البطاقة الشخصية"), New System

.Data.Common.DataColumnMapping("مكان الاستخراخ", "مكان الاستخراخ"), New System.Data.Common.

DataColumnMapping("تاريخ الانتهاء ", "تاريخ الانتهاء "), New System.Data.Common.DataColumnMapping("

الصورة", "الصورة"), New System.Data.Common.DataColumnMapping(" نوع الموظف", " نوع الموظف"), New 

System.Data.Common.DataColumnMapping("اسم الاول", "اسم الاول"), New System.Data.Common.

DataColumnMapping("الاسم الثانى", "الاسم الثانى"), New System.Data.Common.DataColumnMapping("

النوع", "النوع"), New System.Data.Common.DataColumnMapping("الشخص المتصل", "الشخص المتصل"), 

New System.Data.Common.DataColumnMapping("تليفون المتصل", "تليفون المتصل"), New System.Data.

Common.DataColumnMapping("العلاقة", "العلاقة"), New System.Data.Common.DataColumnMapping("عنوان 

1", "عنوان 1"), New System.Data.Common.DataColumnMapping("عنوان 2", "عنوان 2"), New System.Data.

Common.DataColumnMapping("عنوان 3", "عنوان 3"), New System.Data.Common.DataColumnMapping("

تليفون 1", "تليفون 1"), New System.Data.Common.DataColumnMapping("تليفون 2", "تليفون 2"), New 

System.Data.Common.DataColumnMapping("تليفون 3", "تليفون 3"), New System.Data.Common.

DataColumnMapping("موبيل", "موبيل"), New System.Data.Common.DataColumnMapping("بريد اليكترونى", "

بريد اليكترونى"), New System.Data.Common.DataColumnMapping("Emp_Dep", "Emp_Dep"), New System.

Data.Common.DataColumnMapping("Emp_Job", "Emp_Job"), New System.Data.Common.

DataColumnMapping("Emp_Salary_ID", "Emp_Salary_ID")})})
)

(((( اولا ان استفسر عن كيفية الاستفادة وطرق التعامل مع sqlview فى فيجوال بسك دوت نت وكيفية حل مشكلة

عدم القدرة على استخدام سواء من update command أو delete command مع sql data view باستخدام

dataadapter وهل هناك طريقة اخرى غير data adapter يمكن استخدامها حتى يتم التعامل مع sql view ثم لماذا يتم

انشاء .DataTableMapping وما هى وهل تعتبر data table يمكن ربطها مباشرا مع data grid datasource

واخيرا بالمقارنة معstore procedure ما هو الافضل فى الاستخدام مع data set ثم الربط مع (datagrid

)

post-62492-1132253987_thumb.jpg

تم تعديل هذه المشاركة بواسطة walcom في 18 نوفمبر 2005 في 10:51

#2

السلام عليكم ورحمة الله وبركاته ارجوا من الاعضاء الرد على موضوع الخاص sql view لعل المانع خيرا وشكرا على مروركم

#3

أخي samahy333

بيئة الدوت نت تتعامل مع الـ sql view كما تتعامل مع الـ tables أما بالنسبة لعدم قدرة الـ dataAdapter على إنشاء الـ Delete والـ update comandes فهو بسبب عدم وجود معرف فريد في الـ view وهذا ينطبق على الجداول ، حاول إنشاء جدول بدون معرف فريد (primary key) ومن ثم إنشئ dataAdapter لهذا الجدول فلن يكون قادراً على إنشاء الكوماندين السابقين.

ولاحظ أيضاً أن الـ view الذي أنشأته هو select view وحسب معرفتي هذا النوع من الاستعلامات غير قادر على تنفيذ عمليات الحذف والتحديث لأنه بطبيعته استعلام لإظهار البيانات وليس لتعديلها وحتى تكون لديك القدرة على تنفيذ هذه العمليات عليك إنشاء استعلامات الـ Delete والـ Update (خبرني إذا كنت غلطان).

أما عن إنشاء الداتا أدابتر عن سحبة من السيرفر إكسبلورر فهذه هي الطريقة المختصرة التي يقوم بها النظان لإنشاء أدوات الاتصال مع قاعدة البيانات وإلا فهناك أدوات أخرى للاتصال مع قاعدة البيانات يمكنك استعراضها من علامة التبويب data في الـ toolebox ويمكن أن تختصر في مجموعتين أساسيتين هما :

- أدوات تقنية الوضع دون اتصال (ترتكز على الأداتين dataadapter و dataset)

- أدوات تقنية وضع الاتصال الدائم (ترتكز على الأداة dataCommand بأنواعها)

إذا كنت لاتعرف كيف تتعامل مع هذه الأدوات فعليك البدء بدراسة ADO.NET فهي العمود الفقري لمشاريع قواعد البيانات في بيئة دوت نت وفي هذا المنتدى الكثير من الروابط إلى كتب ومراجع بهذا الخصوص يمكنك تحميل واحد منها والبدء بدراسة هذه التقنية

بالتوفيق

#4

شكرا يا اخ هارون على الرد ولكنى اريد ان اشرح الاتى"-

اولا استخدام server explorer لمعرفة كيفية تعامل الدوت ننت مع sql view قبل ان اقوم بعمل command ثم dataadapter ثم dataset ولكن الملاحظ هو ان data adapter قامت بانشاء select command وهذا طبيعى لانه select view ثم قامت بانشاء insert command وهو الملاحظ غير عند استخدام store procedure يتم ادراجه بشكل طبيعى وهذا معناه لو فى حالة استخدام store procedures يتم عمل 3 واحد لعملية الاستدعاء select storeprocedure واخر update ,واخر delete ثم الربط مع data adapter ثم عمل data set ثم الربط مع data grid .

فهل لا بد من عمل dataset or data reader لكى تتعامل datagrid مع sql view وفى حالة وجود طريقة اخرى ما هى؟

وفى sql view قام بعمل ( table mapping برجاء الاطلاع على كامل الموضوع ما هى ؟؟) هل يمكن ربط table mapping مع

dataview

#5

أخي الكريم .... هنا يطول الكلام وأرى أن هذه المشاركة لا تتسع لتغطية كل هذه المواضيع لذلك:

راجع الروابط التالية:

/index.php?showtopic=79519

/index.ph...ST&f=62&t=76856

بالتوفيق

#6

اللهم ارحمنا و ليه يا ابنى الكلام الوحش ده :D

مالها ال Stored Procedure بنت حلال و Performance عالى و Scalabilty كمان

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…