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

أسترجاع أكثر من أستعلام من StoredProcedure

بدأه mam555 في 29 مارس 2012 · 2 رد · 493 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لقد أنشأت StoredProcedure

ووضعت به عدد من الاستعلامات

select name_on as 't1' , sum(f_k)as 't2' ,box_1 as 't3' from box_b2 GROUP BY name_on ,box_1 Order by name_on

select name_on as 't4' , sum(f_k)as 't5' ,box_11 as 't6' from box_b2 GROUP BY name_on ,box_11 Order by name_on

أريد طلب هذا StoredProcedure من خلال vb.net 2005

هذا الكود يقوم بأرجاع الاستعلام الاول فقط

Dim b As SqlDataReader

Dim con As New SqlConnection

Dim t As String = ""

con.ConnectionString = st

con.Open()

Dim cmd2 As New SqlCommand("StoredProcedure", con)

cmd2.CommandType = CommandType.StoredProcedure

b = cmd2.ExecuteReader

Do While b.Read

MsgBox(b.GetValue(0).ToString & " " & b.GetValue(1).ToString & " " & b.GetValue(2).ToString)

Loop

con.Close()

ماهي الطريقة لاسترجاع كل الاستعلامات ؟

#2

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

  1. حسب معلوماتي , لا يمكن إلا إعادة نتيجة واحدة بالاستعلام ...
  2. باانسبة للكود الخاص بك , طالما أن الاستعلامان يعيدان نفس البيانات , يمكن دمج النتائج , مع وضع 1 للنتيجة الأولى و 2 للثانية :
    	
    (select '1',  name_on as 't1' , sum(f_k)as 't2' ,box_1 as 't3' from box_b2 GROUP BY name_on ,box_1 )
    
    UNION (select '2' , name_on as 't4' , sum(f_k)as 't5' ,box_1 as 't6' from box_b2 GROUP BY name_on ,box_1 )

    و الكود :

     Do While b.Read
            	MsgBox(b.GetValue(0).ToString & " " & b.GetValue(1).ToString & " " & b.GetValue(2).ToString & " " & b.GetValue(3).ToString)
        	Loop

  3. هناك طريقة أخرى , تتمثل في استدعاء الــإجاراء مرتين , و في كل مرة نعيد نتيجة
    ALTER PROCEDURE dbo.StoredProcedure1
    
    	(
    	@QueryNumber int
    
    	)
    
    AS
    	/* SET NOCOUNT ON */
    	IF @QueryNumber = 1 
    	BEGIN
    		select  name_on as 't1' , sum(f_k)as 't2' ,box_1 as 't3' from box_b2 GROUP BY name_on ,box_1 
    	END 
    	ELSE
    	BEGIN
    	  select  name_on as 't4' , sum(f_k)as 't5' ,box_1 as 't6' from box_b2 GROUP BY name_on ,box_1 
    	END
    RETURN

    :و الكود :

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        	Dim b As SqlDataReader
        	Dim con As New SqlConnection
        	Dim t As String = ""
        	Dim st As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
        	con.ConnectionString = st
        	con.Open()
        	Dim cmd2 As New SqlCommand("StoredProcedure1", con)
        	cmd2.CommandType = CommandType.StoredProcedure
        	cmd2.Parameters.AddWithValue("@QueryNumber", 1)
        	b = cmd2.ExecuteReader
        	Do While b.Read
            	MsgBox("One " & b.GetValue(0).ToString & " " & b.GetValue(1).ToString & " " & b.GetValue(2).ToString)
        	Loop
        	b.Close()
        	cmd2.Parameters("@QueryNumber").Value = 2
        	b = cmd2.ExecuteReader
        	Do While b.Read
            	MsgBox("Two " & b.GetValue(0).ToString & " " & b.GetValue(1).ToString & " " & b.GetValue(2).ToString)
        	Loop
        	con.Close()
    
    	End Sub

1

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

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

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

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

#3

شكرأ

أولا أنا لا أريد أسترجاع نفس البيانات ولكن هذا مثال . هناك عدد من الاستعلامات مختلفة أريد أسترجاعها .

ثانيا : أستطيع عرض أكثر من أستعلام

            Dim dataset1 As New DataSet
            Dim new1 As New SqlDataAdapter
            Dim con As New SqlConnection
            con.ConnectionString = st
            Dim cmd2 As New SqlCommand("Storedsavboox_6", con)
            cmd2.CommandType = CommandType.StoredProcedure
            new1.SelectCommand = cmd2
            con.Open()
            Try
                new1.Fill(dataset1)
                con.Close()
            Catch ex As Exception
                con.Close()
 End Try

 DataGridView1.DataSource = dataset1.Tables(0)
DataGridView2.DataSource = dataset1.Tables(1)

السر في اختيار رقم الجدول في dataset

ولكن أنا لا أريد أسترجاها بهذه الطريقة أريد أسترجاعها بطريقة

DataReader

تم تعديل هذه المشاركة بواسطة mam555 في 30 مارس 2012 في 17:46

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

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

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

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

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