PDA

View Full Version : سوال: مشکل در dataset



marge_setare
دوشنبه 14 مرداد 1387, 02:29 صبح
سلام بچه ها این error یعنی چی و من چطوری میتونم رفعش کنم
این کد مربوط به یکی از مراحل ثبت نام که اشیاء login تو اون استفاده کردم
در رویداد created user من sp رو اجرا میکنم که به پارامتر ورودی username چهار تا خروجی برمی گردونه و من میخوام اونارو تو dataset ذخیره کنم
کد رو ضمیمه کردم.


اینم error ش
A field or property with the name 'UserName' was not found on the selected data source.

mostafa_sgh
دوشنبه 14 مرداد 1387, 02:39 صبح
شما مطمئن هستید داخل پروسیجری که تعریف کردید ، پارامتر UserName رو تعریف کردی ؟

ویا مطمئنی این فیلد رو از پروسیجر برگشت میدی ؟

اگه میشه دستورات پروسیجر رو اینجا بزار ...

milade
دوشنبه 14 مرداد 1387, 06:04 صبح
ببخشید اگه این کد اصلیتونه شما نه کانکشن باز کردید نه بستید(sp رو بزار)
بای

mostafa_sgh
دوشنبه 14 مرداد 1387, 17:25 عصر
ببخشید اگه این کد اصلیتونه شما نه کانکشن باز کردید نه بستید(sp رو بزار)


البته وقتی Connection رو به Command معرفی میکنیم ، نیازی به این کار نیست !


در ضمن دوست عزیز

شما نام پارامتر رو اشتباه نوشتید !!!

کدتون رو به صورت زیر اصلاح کنید



Panel2.Visible = true;
System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\ASPNETDB.MDF;Integrated Security=True;User Instance=True");
System.Data.SqlClient.SqlDataAdapter Da;
System.Data.DataSet Ds;
System.Data.SqlClient.SqlCommand Cmd1;
Cmd1 = new System.Data.SqlClient.SqlCommand("aspnet_ShowInfo", cnn);
Cmd1.Parameters.AddWithValue("UserName",CreateUserWizard1.UserName);
Cmd1.CommandType = System.Data.CommandType.StoredProcedure;
Da = new System.Data.SqlClient.SqlDataAdapter(Cmd1);
Ds = new System.Data.DataSet();
Da.Fill(Ds);
//DropDownList departman = (DropDownList)CreateAdmin.CreateUserStep.ContentTe mplateContainer.FindControl("departmanDropDownList");
DetailsView1.DataSource = Ds.Tables[0].DefaultView;
DetailsView1.DataBind();


پروسیجیرتون رو هم به این صورت اصلاح کنید :


ALTER PROCEDURE dbo.aspnet_ShowInfo
@UserName nvarchar(256)
AS
BEGIN
DECLARE @UserID uniqueidentifier
SELECT @UserID = UserID
FROM aspnet_UserInfo_UserID
WHERE (UserName = @UserName)
if (@UserID IS NULL)
RETURN -1
ELSE
SELECT aspnet_UserInfo_UserID.UserID, aspnet_UserInfo_UserID.UserName, aspnet_Membership.Email
FROM aspnet_UserInfo_UserID INNER JOIN
aspnet_Users ON aspnet_UserInfo_UserID.UserName = aspnet_Users.UserName INNER JOIN
aspnet_Membership ON aspnet_Users.UserId = aspnet_Membership.UserId

END

marge_setare
سه شنبه 15 مرداد 1387, 13:31 عصر
شما نام پارامتر رو اشتباه نوشتید !!!

کدتون رو به صورت زیر اصلاح کنید



Cmd1.Parameters.AddWithValue("UserName",CreateUserWizard1.UserName);


پروسیجیرتون رو هم به این صورت اصلاح کنید :



DECLARE @UserID uniqueidentifier

پارامتر UseriD که من تعریف کردم جدا از پارامتر UserID درون جدول MemberShip هست و درون پایگاه خودم از اون استفاده میکنم.به همین خاطر از نوعnavarchar تعریف کردم
اما چرا پارامتر رو به این صورت اضافه کردید ،لطف میکنید توضیح بدید:اشتباه:

mostafa_sgh
سه شنبه 15 مرداد 1387, 13:59 عصر
کارکتر @ فقط برای تعریف متغیر تو Sql اسفاده میشه و جز نام متغیر نیست .( اگه اشتباه میکنم دوستان بگن ! )

در مورد نوع متغیر که من فکر کردم Membership استفاده میکنید.( ببخشید )

البته تعریف و ارسال پارامتر ها به دو شیوه انجام میشه ( هم روش اولی و هم این روش )
ولی این روش مرسوم تره .

در ضمن شما برای نسبت دادن مقدار تو دستور Select باید از این روش استفاده کنی :


Declare @VariableName data_type
Select @VariableName = tableField
From tableName

در کل مشکلتون حل شد ؟

marge_setare
سه شنبه 15 مرداد 1387, 23:48 عصر
بله برطرف شد،.ممنون از لطفتون. ولی برای مقدار دهی یک متغیر هم میشه از دستور select و هم از دستور set استفاده کرد.
با دستور select هم میتوان یه مقدار ثابت یا یه عبارت را درون متغیر ریخت هم میشه درون اون از دستور select دیکه ای استفاده کرد.که همون کاری که شما انجام دادی.پس فکر میکنم مشکل همون اضافه کردن پارامتر به دستور command هست ولی من اون شیوه ی قبلی رو تا الان استفاده میکردم و جواب میداد.