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

مليء الداتا جريد فيو بناء علي شرط أو شرطين

بدأه محمد فؤاد تركي في 18 أغسطس 2012 · 3 رد · 800 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السادة الزملاء

السلام عليكم ورحمة الله وبركاتة

عندي مشكلة في مليء DataGridView بناء علي عدة شروط

فقد قمت بتصميم الــ Stored Procedure ويأتي الاجراء بالبيانات التي أريدها تحديدا فعندما لا أحدد أي شرط يقوم الاجراء المخزن بعرض كافة البيانات وعند كتابة شرط معين يعرض بناء علي هذا الشرط واذا قمت بكتابة شرطين أو أكثر

يقوم بعمل التصفية اللازمة

لكن عند ربط الــ Stored Procedure بــ DataGridView لا يقوم بعرض اي بيانات الا اذا قمت بمليء كافة TextBoxes الموجوده علي الفورم وهذا لا أريدة

لكن المطلوب عند القيام بكتابة شرط أو أو شرطين أو أكثر تقوم الداتا جريد فيو بعرض البيانات بناء علي الشروط المكتوبة أو عندنا أضغط علي رز بحث بدون كتابة أي شروط تقوم DataGridView بعرض كافة البيانات

وهذا ما يفعلة الاجراء المخزن ولكن لا أدري لما DataGridView لا تفعل هذا

مرفق الاجراء المخزن

Alter Proc [dbo].[AddDocItemsLkup]

@itemNumber nvarchar (50) = null
,@ItemName nvarchar (50) = null
,@ItemGroup nvarchar (50) = null
,@itemcolor nvarchar (50) = null
,@ItemSize nvarchar (50) = null
,@StoreName nvarchar (50) = null


as
begin

Select 

ItemNumber,ItemName,ItemGroup,StoreName,ItemLocation,itemsize,itemcolor,Unit,UnitPrice
 from items

 where isnull (Items.ItemNumber,ItemNumber) = ISNULL(@itemNumber ,ItemNumber )
and isnull (Items.ItemName,ItemName) = ISNULL(@ItemName ,ItemName )
and isnull (Items.ItemGroup,ItemGroup) = ISNULL(@ItemGroup ,ItemGroup)
and isnull (Items.itemcolor,itemcolor)= ISNULL(@itemcolor,itemcolor)
and isnull (Items.itemsize,itemsize)= ISNULL(@ItemSize,itemsize)
and isnull (Items.StoreName,StoreName)= ISNULL(@StoreName,StoreName)

 end

مرفق الكود

Private Sub Btnsearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnsearch.Click
        Try

            dtitemslkup.Clear()

            Dim cmd As New SqlCommand("AddDocItemsLkup", sqlcon)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.AddWithValue("@itemNumber", TxtCode.Text)
            cmd.Parameters.AddWithValue("@ItemName", TxtName.Text)
            cmd.Parameters.AddWithValue("@ItemGroup", TxtGroup.Text)
            cmd.Parameters.AddWithValue("@itemcolor", TxtColor.Text)
            cmd.Parameters.AddWithValue("@ItemSize", TxtSizes.Text)
            cmd.Parameters.AddWithValue("@StoreName", TxtStore.Text)

            Dim da As New SqlDataAdapter(cmd)
            da.Fill(dtitemslkup)
            ItemsDGV.AllowUserToAddRows = False

        Catch ex As Exception

        End Try
End Eub

أتمني أن أكون قد وفقت في الشرح

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#2

السلام عليكم ...

  1. الــ String قد يكون Null و قد يكون Empty ... و في حالة أخذ النص من TextBox فارغة يكون النص فارغ Empty .. و عند تمريره لقاعدة البيانات لن يتحقق الشرط الذي من الشكل :
    ISNULL(@ItemName ,ItemName )

  2. أحد الحلول هو أنه في حال كان النص فارغا نمرر القيمة DBNull و إلا نمرر قيمة النص الموجودة .. كالتالي :
    cmd.Parameters.AddWithValue("@itemNumber", IIf(String.IsNullOrEmpty(TxtCode.Text), DBNull.Value, TxtCode.Text))
            	cmd.Parameters.AddWithValue("@ItemName", IIf(String.IsNullOrEmpty(TxtName.Text), DBNull.Value, TxtName.Text))
            	cmd.Parameters.AddWithValue("@ItemGroup", IIf(String.IsNullOrEmpty(TxtGroup.Text), DBNull.Value, TxtGroup.Text))
            	cmd.Parameters.AddWithValue("@itemcolor", IIf(String.IsNullOrEmpty(TxtColor.Text), DBNull.Value, TxtColor.Text))
            	cmd.Parameters.AddWithValue("@ItemSize", IIf(String.IsNullOrEmpty(TxtSizes.Text), DBNull.Value, TxtSizes.Text))
            	cmd.Parameters.AddWithValue("@StoreName", IIf(String.IsNullOrEmpty(TxtStore.Text), DBNull.Value, TxtStore.Text))

  3. أو بطريقة أكثر احترافية :
     Private Function GetValueFrom(ByVal TextBox As TextBox) As Object
        	Return IIf(String.IsNullOrEmpty(TextBox.Text), DBNull.Value, TextBox.Text)
    	End Function

    و يكون :

    cmd.Parameters.AddWithValue("@itemNumber", GetValueFrom(TxtCode))

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 18 أغسطس 2012 في 18:18

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

بارك الله فيك يا أخي الفاضل حسام

هذا ما أردته تماماً

وشكراً جزيلا علي الايضاح

و كل عام وأنت بألف صحة وخير

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#4

بارك الله بك أخي محمد ...

و كل عام و أنت و جميع المسلمين بخير ..

تقبل الله منكم الصيام والقيام ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

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

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

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

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

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