PDA

View Full Version : قرار دادن خروجی یک Stored Procedure در یک DataSet



probit
پنج شنبه 15 تیر 1385, 11:31 صبح
سلام
توی asp.net2 چه شکلی میشه خروجی یک stored procedure که پارامتر خروجی دارد را توی یک dataset ریخت

ghafoori
پنج شنبه 15 تیر 1385, 12:04 عصر
دوست عزیز پارامتر خروجی یک عدد یا تعدادی رکورد است یا یک جدوله لطفا بیشتر توضیح دهید

msakbari
پنج شنبه 15 تیر 1385, 13:16 عصر
می تونید مثل حالت عادی عمل کنید و با



SqlDataAdapter.Fill(Dataset);


این کار رو انجام بدید

probit
پنج شنبه 15 تیر 1385, 14:35 عصر
می تونید مثل حالت عادی عمل کنید و با



SqlDataAdapter.Fill(Dataset);


این کار رو انجام بدید

این کار رو کردم ولی چیزی توی dataset ریخته نشد ( شاید هم من بلد نیستم چطوری از dataset بخونم)
می شه شما بیشتر توضیح بدید

white fox
پنج شنبه 15 تیر 1385, 22:36 عصر
ببینید شما وقتی صحبت از DataSet میکنید منظور DataTable ]ائی هست که داخل اون DataSet قرار داره خود دیتاست نیست که توش داده قرار میگیره.
خوب حالا وقتی شما سوالتون رو اینگونه مطرح میکنید من فرض میگرم یه دسته رکورد به عنوان خروجی میخواهید برگردونید.یعنی پارامتر خروجیتون نوعش مثلا TableVariable هستش.
خوب شما یک DataTable بساز .پارامتر خروجیتو برابر اون قرار بده.
بعد DataTable رو به DataSet اضافه کن.
موفق باشید.

probit
جمعه 16 تیر 1385, 07:35 صبح
ببینید شما وقتی صحبت از DataSet میکنید منظور DataTable ]ائی هست که داخل اون DataSet قرار داره خود دیتاست نیست که توش داده قرار میگیره.
خوب حالا وقتی شما سوالتون رو اینگونه مطرح میکنید من فرض میگرم یه دسته رکورد به عنوان خروجی میخواهید برگردونید.یعنی پارامتر خروجیتون نوعش مثلا TableVariable هستش.
خوب شما یک DataTable بساز .پارامتر خروجیتو برابر اون قرار بده.
بعد DataTable رو به DataSet اضافه کن.
موفق باشید.
میشه در مورد Tablevariable توضیح بدید
نمونه کد رو میگذارم ببینید کجای کار اشتباه


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim conn As SqlConnection = New SqlConnection()
Dim cmd As SqlCommand
Dim parm As SqlParameter
Dim stconn As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\ASPNETDB.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True"
Dim DS As DataSet = New DataSet("DS")
conn.ConnectionString = stconn
cmd = New SqlCommand("Search_Soft_Bytxt", conn)
cmd.CommandType = CommandType.StoredProcedure

parm = cmd.Parameters.Add("FileNamein", SqlDbType.Text)
parm.Value = "%" & Me.txt.Text.Trim & "%"

Dim parmFileID, parmFileName, parmTypeID, parmDes, parmFileAdd, parmPicAdd As SqlParameter
parmFileID = cmd.Parameters.Add("FileID", SqlDbType.Int)
parmFileID.Direction = ParameterDirection.Output
parmFileName = cmd.Parameters.Add("FileName", SqlDbType.NVarChar)
parmFileName.Size = 50
parmFileName.Direction = ParameterDirection.Output
parmTypeID = cmd.Parameters.Add("TypeID", SqlDbType.SmallInt)
parmTypeID.Direction = ParameterDirection.Output
parmDes = cmd.Parameters.Add("Des", SqlDbType.NVarChar)
parmDes.Size = 50
parmDes.Direction = ParameterDirection.Output
parmFileAdd = cmd.Parameters.Add("FileAdd", SqlDbType.NVarChar)
parmFileAdd.Size = 50
parmFileAdd.Direction = ParameterDirection.Output
parmPicAdd = cmd.Parameters.Add("PicAdd", SqlDbType.NVarChar)
parmPicAdd.Size = 50
parmPicAdd.Direction = ParameterDirection.Output

Dim DT As DataTable
Dim dcfileid, dcfilename, dctypeid, dcdes, dcfileadd, dcpicadd As DataColumn
DS.Tables.Add("ff")

dcfileid = New DataColumn("FileID")
dcfileName = New DataColumn("FileName")
dctypeid = New DataColumn("TypeID")
dcdes = New DataColumn("Des")
dcfileadd = New DataColumn("FileAdd")
dcpicadd = New DataColumn("PicAdd")
DS.Tables("ff").Columns.Add(dcfileid)
DS.Tables("ff").Columns.Add(dcfilename)
DS.Tables("ff").Columns.Add(dctypeid)
DS.Tables("ff").Columns.Add(dcdes)
DS.Tables("ff").Columns.Add(dcfileadd)
DS.Tables("ff").Columns.Add(dcpicadd)

conn.Open()
Dim DA As SqlDataAdapter = New SqlDataAdapter(cmd)
DA.Fill(DS,"ff")

Response.Write(DS.Tables("ff").Rows.Count) 'Display 0
Me.GridView1.DataSource = DS
Me.GridView1.Visible = True

Me.GridView1.DataBind()
conn.Close()
conn.Dispose()
End Sub

white fox
جمعه 16 تیر 1385, 15:37 عصر
TableVariable یک نوع داده در SQL هست که مثل یک Table میمونه که در حافظه قرار داره.

من اینطوری که میبینم شما پارامتر های خروجیتون از نوع int یا smalint و از این دسته هستن و یک دسته رکورد نیستن.
شما برای استفاده از اون خروجی الزامی ندارید که از یک DataSet استفاده کنید...
اما اگر اصرار دارید اونطوری نمیشه..
یک DataTable درست کنید با ستونهایی که میخواهید.. و یک ROW با مقادیر این خروجیهات درست کن.
و با DataTable همه کاری میتونی بکنی.
میدونید کار شما Performance بالایی نداره . مثلا خود DataTable رو هم میتونید به Gridview خودتون بایند کنید لازم نیست یک Object دیگه یعنی DataSet هم درست کنید..
البته شاید روی سیستم خودتون عالی اجرا بشه اما روی وب با تعداد بازدید کننده بالا چی؟

probit
جمعه 16 تیر 1385, 17:50 عصر
TableVariable یک نوع داده در SQL هست که مثل یک Table میمونه که در حافظه قرار داره.


اگه امکان داره یه مثال از TableVariable بنویسید (هم در asp.net و هم storedprocedure ) چون این مدل را قبلآ ندیدم