PDA

View Full Version : سوال: ساخت sp سفارشی زمان اجرا توسط کاربر



hercool
دوشنبه 14 مرداد 1392, 15:18 عصر
سلام دوستان
من یه فرم می خوام داشته باشم که چند تا کمبو باکس داره و در هر کمبوباکس مقادیر خاصی قرار داره
مثلا کمبوباکس اول برای اسم جدول ها و کمبوباکس دوم نام فیلد های هر جدول رو لود میکنه
نکته :البته اسم به فارسی هست و مقادیرشون نام اصلی جدول ها یا فیلد ها هست

حالا می خوام کاربر با انتخاب مثلا جدول خرید در کمبوباکس اول کمبوباکس های دیگه ای فعال بشه که نام فیلد های اون جدول رو بیاره و کاربر با انتخاب اونها و نوشتن شرطی در تکست باکس ها یک sp سفارشی بسازه و مقادیر رو لود کنه و بریزه در دیتاتیبل
ایا این امر شدنی هست اگر اره ممنون میشم کد نمونه یا ادرسی بهم بدید چون هر چی گشتم در این مورد اطلاعاتی پیدا نکردم

hercool
دوشنبه 14 مرداد 1392, 15:44 عصر
الان می تونم نام فیلد ها رو با تکست باکس مشخص کنم اما مقدار شرط رو نمی تونم ممنون میشم راهنماییم کنید

private void button1_Click(object sender, EventArgs e)
{string te=textBox1.Text;
string sd = textBox2.Text;
int @w = Convert.ToInt32(textBox3.Text) ;
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("SELECT inname, 'te' FROM Industry where 'sd' > '@w'", con);
DataTable dt = new DataTable();
da.Fill(dt);

massoudghb
دوشنبه 14 مرداد 1392, 15:46 عصر
سلام .. بله شدنی هست .. SP Generator های زیادی داریم .. همین SP Generator رو تو گوگل سرچ کنید .. نتایج خوبی به دست میارین

مشکلی بود خبر کنین ..

massoudghb
دوشنبه 14 مرداد 1392, 15:51 عصر
الان می تونم نام فیلد ها رو با تکست باکس مشخص کنم اما مقدار شرط رو نمی تونم ممنون میشم راهنماییم کنید

private void button1_Click(object sender, EventArgs e)
{string te=textBox1.Text;
string sd = textBox2.Text;
int @w = Convert.ToInt32(textBox3.Text) ;
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("SELECT inname, 'te' FROM Industry where 'sd' > '@w'", con);
DataTable dt = new DataTable();
da.Fill(dt);




با فرض اینکه شرط شما در txtCondition نوشته شده باشد می توانید به صورت زیر عمل کنید :


private void button1_Click(object sender, EventArgs e)

{string te=textBox1.Text;

string sd = textBox2.Text;

int @w = Convert.ToInt32(textBox3.Text) ;

SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");

SqlDataAdapter da = new SqlDataAdapter("SELECT inname, 'te' FROM Industry where "+txtCondition.text, con);

DataTable dt = new DataTable();

da.Fill(dt);

البته جسارتن این سبک کدنویسی شما غیر اصولی است ، پیشنهاد میکنم یک نمونه پیدا کرده و ویرایش کنید ..

hercool
دوشنبه 14 مرداد 1392, 16:01 عصر
ممنون بابت راهنماییت
و البته پیشنهادت
مشکل اینجاست که نمونه ای پیدا نکردم برای این منظورم بعد اینکه تاپیک رو زدم بازم رفتم سراغش و یه قسمت نتیجه گرفتم فعلا دنبال راه حل هست تا بعدا تمیزترش کنم البته اگه شما رفرنسی داری ممنون میشم در اختیار قرار بدی

massoudghb
دوشنبه 14 مرداد 1392, 16:52 عصر
نمونه ی خیلی خوبش اینجا (http://dynasql.codeplex.com/)ساخته شده که خروجیش یه dll هست که اضافه میکنی به پروژه ات و شبیه کد زیر باهاش رفتار میکنی ..

DBDatabase db = DBDatabase.Create("Northwind");

DBParam param1 = DBParam.ParamWithValue(1);

DBQuery sel = DBQuery.SelectFields("CustomerID", "CustomerName")
.From("CUSTOMERS")
.WhereFieldEquals("CustomerID", param1);

//perform all the database execution here.
string name = null;

db.ExecuteRead(sel, reader =>
{
if (reader.Read())
name = reader.GetString(1);
});