ورود

View Full Version : فراخوانی proc



niloofar norouzi
چهارشنبه 03 مهر 1387, 20:44 عصر
سلام
در code زیر من نیاز به استفاده از txtNoPersoneli دارم که در فرم دیگری قرار دارد
حالا باید چه عملیاتی روی این textbox انجام دهم که در اینجا قابل استفاده باشه؟
در ضمن می شه لطف کنید اشکال قسمتی از کد را که خط کشیدم بیان کنید.
با تشکر


SqlConnection objConnection = new
SqlConnection("server=niloofar\\i2;Initial Catalog=vezaratekar;Integrated Security=True");
objConnection.Open();
SqlCommand objCommand = new SqlCommand();
objCommand.Connection = objConnection;
objCommand.CommandText = "Cpost";
objCommand.CommandType = CommandType.StoredProcedure;
objCommand.Parameters.Add("@nopersoneli", SqlDbType.int).Value =txtNoPersoneli.text;

Moslemu
چهارشنبه 03 مهر 1387, 20:54 عصر
سلام.
توی فرمی که txtNoPersoneli قرار داره، خاصیت Modifier ش رو Public کنید و وقتی می خواید از تو یه فرم دیگه ازش استفاده کنید اینطوری استفاده کنید:


yourFrmName.txtNoPersoneli

اشکال اون قمست هم وجود @!

majid325
چهارشنبه 03 مهر 1387, 21:00 عصر
در مورد سوال اولت بگم كه بستگي داره به نحوه عملكرد نرم افزار، مثلا اگه txtNoPersoneli در فرم يك باشه و شما اطلاعات اون رو در فرم 2 بخواي و فرم 2 بعد از فرم 1 باز بشه ميتوني به روش زير فرم 2 رو همراه با يك پارامتر باز كني :

public partial class Form2 : Form
{
String strNoPersoneli = String.Empty;

public Form2(String STRNoPersoneli)
{
InitializeComponent();

this.strNoPersoneli = STRNoPersoneli;
}

در مورد سوال دومت هم بايد بگي چه errorي ميده شايد زماني كه txtNoPersoneli.text مقدارش null هست اين error پيش مياد.

majid325
چهارشنبه 03 مهر 1387, 21:03 عصر
سلام.
توی فرمی که txtNoPersoneli قرار داره، خاصیت Modifier ش رو Public کنید و وقتی می خواید از تو یه فرم دیگه ازش استفاده کنید اینطوری استفاده کنید:


yourFrmName.txtNoPersoneli

اشکال اون قمست هم وجود @!

البته قصد جسارت ندارم ولي روش شما صحيح نيست چون اصول oop رو يه جورايي زير پا ميزاره و ممكن بگيد @ چرا باعث خطا شده؟

RED-C0DE
چهارشنبه 03 مهر 1387, 21:31 عصر
1:
یه راه سادش همینه که گفتن...

توی فرمی که txtNoPersoneli قرار داره، خاصیت Modifier ش رو Public کنید و وقتی می خواید از تو یه فرم دیگه ازش استفاده کنید

>> باید دید ساختار این دو فرمت چجوریه و به چه صورت همدیگه رو صدا می زدن...

شاید بتونی از این راه بری: مقدار داخل txtNoPersonali رو بصورت یک پارامتر به سازنده فرم دیگه پاس بدی و باهاش کار کنی...

2:
نوع پارامتری که تعریف کردی عددی هست و تو می خوای یک نوع رشته ای بهش بدی :


objCommand.Parameters.Add("@nopersoneli", SqlDbType.Int).Value =txtNoPersoneli.text;


بهتره اونو Cast کنی به نوع عددی :

objCommand.Parameters.Add("@nopersoneli",SqlDbType.Int).Value = int.Parse(txtNoPersoneli.text);


و بهتر اینکه همیشه از صحت نوع مقادیر ورودی اطمینان حاصل بشه:

int.TryParse()

majid325
چهارشنبه 03 مهر 1387, 21:56 عصر
1:
یه راه سادش همینه که گفتن...


>> باید دید ساختار این دو فرمت چجوریه و به چه صورت همدیگه رو صدا می زدن...


صرفا جهت كامل تر كردن صحبتهاي دوستمون ميگم ، ساختار هر طوري باشه oop راهش رو به طور صحيح داره ، حالا اگه اين سناريو كه من مثال زدم همون سناريو norouzi نيست ، سناريوش رو بگه كه نسبت به اون راه صحيحش پيشنهاد بدم.

niloofar norouzi
پنج شنبه 04 مهر 1387, 00:10 صبح
سلام

خیلی لطف کردید که جوابمو دادید

کردم هنوزم در اختیارم نیست(در فرم 2)Publiاما وقتی من txtNoPersoneli راc

در ضمن من روشی که در پست 3 فرمودید متوجه نشدم.

txtNoPersoneliمن در فرم اول دارم که می خوام در فرم 2 از مقدارش استفاده کنم(که برابر متغیری است کهproc می گیره)

منتظر راهنمایی شما هستم

با تشکر

majid325
پنج شنبه 04 مهر 1387, 02:26 صبح
كدي كه گزاشته بودم يه اشكال كوچيك داشت ، برطرف كردم.
شما با روشي كه در پست 3 توضيح دادم ميتوني يه پارامتر براي فرمت (فرم 2)از جنس string ايجاد كني ، كه زماني كه فرم 2 رو خواستي(از فرم 1) فراخواني كني اون متغيير رو (همون پارامتر) مقدار دهي كني

Form2 instance = new Form2(this.txtNoPersoneli.Text.Trim()).ShowDialog( );

در آخر هم مقدارthis.txtNoPersoneli.Text.Trim رو در strNoPersoneli كه در فرم 2 تعريف شده داري.

niloofar norouzi
پنج شنبه 04 مهر 1387, 10:38 صبح
objCommand.Parameters.Add("@nopersoneli",SqlDbType.Int).Value = int.Parse(txtNoPersoneli.text);
من این error را در این قسمت دریافت می کنم
Identifier expected, 'int' is a keyword
اما من این کد را که درست کار می کرد به کد بالا تبدیل کردم نمی دونم چرا error می ده

objCommand.Parameters.Add("@nopersoneli", SqlDbType.varchar,20).Value =txtNoPersoneli.text;
با تشکر

niloofar norouzi
پنج شنبه 04 مهر 1387, 11:16 صبح
کسی کمکم نمی کنه؟
خیلی فوریه