PDA

View Full Version : سوال: سوال در مورد ثبت و جستجوی نما و کفپوش برای یک سایت آژانس املاک



bftarane
دوشنبه 11 فروردین 1393, 20:26 عصر
سلام.
لطفاً این عکس رو ببینید
117485
در بخش ثبت ملک باید دو قسمت هم قرار بدم که کاربر بتونه مشخصات کف پوش و مشخصات نما رو وارد کنه. مشتری خودش آپشن های بالا رو خواسته
من تعدادی سایتهای آژانس املاک رو نگاه کردم هیچ کدوم اون گزینه روشن و تیره رو نداشتند.
حالا من موندم این قسمتها به چه شکل باید باشن و چه فیلدهایی در جدول باید در نظر بگیرم؟ آیا باید به کاربر اجازه بدم بتونه همزمان مثلاً هم سرامیک و هم موکت و موزائیک رو انتخاب کنه یا فقط امکان انتخاب یکی رو بدم؟
یکی از همکارام شکل زیر رو پیشنهاد کرد،
117496
یعنی کاربر بتونه هر چند تا خواست (آجر، آجر سه سانت،...) انتخاب کنه و به ازای هر انتخاب هم بتونه روشن و تیره رو انتخاب کنه.
و می گه مثلاً فیلدهام رو این جوری بنویسم با نوع True False
و اگه چند تا انتخاب شده بودن نشون می ده ترکیبی هست.
ajor-roshan (آجر-روشن)
ajor-tire(آجر-تیره)
.
.
.

البته این در درج مشکل نداره ولی هر چی فکر می کنم می بینم در جستجوی پیشرفته کار خیلی خیلی سخت میشه، چون مشتری در جستجوی پیشرفته هم یه چیزی مشابه همون دو تا فرم بالا رو خواسته

نظر خودم اینه که فقط اجازه بدم یکی از گزینه ها رو انتخاب کنه و اینکه حالا این گزینه روشن هست یا تیره (یعنی فقط یه فیلد با نوع number که مثلاً 1 نمایانگر آجر، 2 ...) و یک فیلد هم برای روشن یا تیره بودن.
ولی این طوری موندم در مورد گزینه ترکیبی چه کار باید بکنم؟

و اینکه مشتری گزینه ترکیبی رو فقط در مورد نما گذاشته در مورد کف پوش هم هچین چیزی صادقه؟
شما بودید در این مورد چطور عمل می کردید؟
خیلی در این مورد به راهنمایی فوری نیاز دارم. ممنون می شم کمک کنید.

General-Xenon
دوشنبه 11 فروردین 1393, 22:54 عصر
سلام و سال نو مبارک.
داشتن جزئیات دقیق یک کالا یا حالا هرچی، سایت رو پربار تر خواهد کرد چرا که کاربر خواهان اطلاعات بیشتر هست.
تا اینجایی که من متوجه شدم.....

شما برای اینکه اطلاعات ترکیبی داشته باشی، یعنی مثلا یک خانه دارای چه خصوصیاتی هست(ممکنه 1 خونه 4 تا یا 100 تا گزینه داشته باشه)، باید یک جدول (Minimum جدول) با این فیلدها درست کنی ID
HomeID
OptionName
OptionValue
....
که هر خونه(homeID) دارای یک سری Option هست و در نهایت تفکیک این Option ها در جستجوی پیشرفته هم آسان خواهد بود......
برای اینکه OptionName رو بر چه اساس پر کنی به این طریق اقدام کن.
اطلاعات OptionName ها رو که از قبل دااری(یعنی همون نما چی باشه...سیمان، سنگ، آجر و ....)
مثلا برای خانه شماره 7 نمای خانه از دو بخش تشکیل شده....
HomeID OptName OptValue
------------------------------
7 Nama Ajor
7 Nama Sang
7 Kafposh Seramik
7 Kafpoosh Parket


به همین ترتیب گزینه های متفاوت برای یک کالا یا .....

برای جستجو هم ساده ترین کار این هست که شما لیست گزینه ها رو در اختیار کاربر قرار بدین، مثل سبد خرید، به یک سبد، گزینه ها رو اضافه کنه تا جستجو در این جدول با یک یا چند مقدار انجام بشه

موفق باشید

bftarane
سه شنبه 12 فروردین 1393, 02:43 صبح
ممنون.
با توجه به توضیحات شما من سریع دو تا جدول درست کردم به شکل زیر
117497
و فرض کردم کاربر به شکل زیر فرم سرچ رو پر کرده (البته قسمت‌های دیگه هم وجود داره مثل کابینت، فلت بودن یا نبودن، نوع سند و ...) که اونا رو اینجا نزاشتم چون بحث سر نما و کف پوش هست فعلاً
117498
خوب جالا در رویداد کلیک دکمه سرچ این کدها رو نوشتم (البته کدها خیلی مشکل داره از نظر سینتکس فقط سریع نوشتم که مفهوم رو برسونم ببینید درست متوجه صحبت‌های شما شدم یا نه)

protected void btn_search_Click(object sender, EventArgs e)
{
string sql = "";
if (CheckBox1.Checked)
{
sql += "select * from tbl_option where Nama=@Nama1 and NamaDarkLight=@NamaDarkLight1";
@Nama1 = "آجر";
@NamaDarkLight1 = RadioButtonList1.SelectedValue;
}
if (CheckBox2.Checked)
{
sql += " and Nama=@Nama2 and NamaDarkLight=@NamaDarkLight2";
@Nama1 = "سنگ";
@NamaDarkLight2 = RadioButtonList2.SelectedValue;
}
.
.
.

if (همه)
{
sql = "select * from tbl_option where NamaDarkLight=@NamaDarkLight";
@NamaDarkLight = RadioButtonList11.SelectedValue;
}
}

می خواستم بدونم آیا منظورتون همچین چیزی بود؟

alireza_s_84
سه شنبه 12 فروردین 1393, 05:17 صبح
جداول شما باید دقیقا اینطوری باشه:

117500

برای Select کردن هم فکر نمیکنم مشکلی باشه!!!


SELECT Homes.HomeId,
Homes.Address,
Homes.OwnerName,
Homes.FlooringId,
Flooring.Title AS FlooringTitle,
MaterialsType_1.Title AS FlooringTypeName,
Homes.SuperficiesId,
Superficies.Title AS SuperficiesTitle,
MaterialsType.Title AS SuperficiesTypeName
FROM Flooring INNER JOIN
Homes ON Flooring.FlooringId = Homes.FlooringId INNER JOIN
Superficies ON Homes.SuperficiesId = Superficies.SuperficiesId INNER JOIN
MaterialsType ON Superficies.MaterialsTypeId = MaterialsType.MaterialsTypeId INNER JOIN
MaterialsType AS MaterialsType_1 ON Flooring.MaterialsTypeId = MaterialsType_1.MaterialsTypeId


WHERE (MaterialsType.MaterialsTypeId = 1) AND (MaterialsType_1.MaterialsTypeId = 2) OR
(MaterialsType.MaterialsTypeId = 2) AND (MaterialsType_1.MaterialsTypeId = 0)


جدول نمونه پر شده برای سپرده ها:

117501
117503

نتیجه پرس و جو:

117502

توی کوئری از OR استفاده کردم برای مثال MaterialsTypeId = 1 OR MaterialsTypeId=2 (در این حالت ترکیبی جستجو میکنه) و یا بصورت MaterialsTypeId = 1 OR MaterialsTypeId=0 فقط روشن جستجو میشه

alireza_s_84
سه شنبه 12 فروردین 1393, 06:07 صبح
ممنون.
با توجه به توضیحات شما من سریع دو تا جدول درست کردم به شکل زیر
117497
و فرض کردم کاربر به شکل زیر فرم سرچ رو پر کرده (البته قسمت‌های دیگه هم وجود داره مثل کابینت، فلت بودن یا نبودن، نوع سند و ...) که اونا رو اینجا نزاشتم چون بحث سر نما و کف پوش هست فعلاً
117498
خوب جالا در رویداد کلیک دکمه سرچ این کدها رو نوشتم (البته کدها خیلی مشکل داره از نظر سینتکس فقط سریع نوشتم که مفهوم رو برسونم ببینید درست متوجه صحبت‌های شما شدم یا نه)

protected void btn_search_Click(object sender, EventArgs e)
{
string sql = "";
if (CheckBox1.Checked)
{
sql += "select * from tbl_option where Nama=@Nama1 and NamaDarkLight=@NamaDarkLight1";
@Nama1 = "آجر";
@NamaDarkLight1 = RadioButtonList1.SelectedValue;
}
if (CheckBox2.Checked)
{
sql += " and Nama=@Nama2 and NamaDarkLight=@NamaDarkLight2";
@Nama1 = "سنگ";
@NamaDarkLight2 = RadioButtonList2.SelectedValue;
}
.
.
.

if (همه)
{
sql = "select * from tbl_option where NamaDarkLight=@NamaDarkLight";
@NamaDarkLight = RadioButtonList11.SelectedValue;
}
}

می خواستم بدونم آیا منظورتون همچین چیزی بود؟
اگر قرار باشه به ازای هر مورد if بذارید و چک کنید بعدها برای توسعه دچار مشکل میشین ، بهتره به هر چک باکس اندیسی برابر با آیدی نوع مصالح بدین و کوئری رو در یک خط بنویسید.

bftarane
سه شنبه 12 فروردین 1393, 12:00 عصر
این شرط فقط برای روشن و تیره نوشته شده

WHERE (MaterialsType.MaterialsTypeId = 1) AND (MaterialsType_1.MaterialsTypeId = 2) OR
(MaterialsType.MaterialsTypeId = 2) AND (MaterialsType_1.MaterialsTypeId = 0)


ولی ما کلی نوع مصالح و کف پوش داریم که کاربر ممکنه انتخاب نکرده باشه، یا یکی یا تعدادی انتخاب کرده باشه.
پس چطور باید چک کنیم کدوم ها انتخاب شدن یا نشدن توسط کاربر که بیاییم بر اساس اون انتخاب ها سلکت رو انجام بدیم؟


اگر قرار باشه به ازای هر مورد if بذارید و چک کنید بعدها برای توسعه دچار مشکل میشین ، بهتره به هر چک باکس اندیسی برابر با آیدی نوع مصالح بدین و کوئری رو در یک خط بنویسید.

فکر کنم منظورتون اینه که از چک باکس لیست استفاده کنم. خوب فرض کنید من همچین چک باکس لیستی ایجاد کردم

<asp:CheckBoxList ID="CheckBoxList1" runat="server">
<asp:ListItem Value="1">آجر</asp:ListItem>
<asp:ListItem Value="1">سنگ</asp:ListItem>
<asp:ListItem Value="3">سیمان</asp:ListItem>
<asp:ListItem Value="4">شیشه</asp:ListItem>
</asp:CheckBoxList>

و کوئری رو در یک خط بنویسید
فرض کنید کاربر از چک باکس لیست بالا سنگ و سیمان رو انتخاب کرده (یعنی 1 و 3) و به ازای سنگ تیره رو انتخاب کرده و به ازای سیمان هر دو. الآن اون یک خط کوئری به چه شکل میشه؟
ممنون.

من سه تا پروژه دستمه الآن که همشون جستجوی پیشرفته دارن، یکیش مال خودمه دو تاش هم مال همکارام هستن که متأسفانه از شرکت رفتن و کارشون به صورت ناقص به من سپرده شد این آژانس املاک هم جزو اون ناقص هاست.
به خاطر همین من چند روزه دارم روی جستجوی پیشرفته کار می کنم منظورم اینه که صفر کیلومتر نیستم در این زمینه. در لینک زیر روش جوابی که به رنگ سبز در آوردم رو خیلی می پسندم (در پست اول لینک زیر می تونید فرم سرچ رو ببینید) منتها اونجا قضیه اش با اینجا فرق داره. اونجا از دراپ دان ها یا رادیو باتن لیست ها فقط کاربر حق انتخاب یک گزینه رو داره ولی اینجا که می تونه بیشتر از یکی رو انتخاب کنه من رو دچار مشکل کرده.
http://forums.asp.net/t/1977863.aspx?Advance+Search+multiple+table

و یه مسئله دیگه منظور از ترکیبی طبق جستجویی که من انجام دادم این بود که بعضی از نماها ترکیبی هستند لطفاً این لینک رو در این زمینه بخونید
http://arefigroup.ir/index.php/fa/2013-09-09-14-31-33

alireza_s_84
سه شنبه 12 فروردین 1393, 13:29 عصر
این شرط فقط برای روشن و تیره نوشته شده

WHERE (MaterialsType.MaterialsTypeId = 1) AND (MaterialsType_1.MaterialsTypeId = 2) OR
(MaterialsType.MaterialsTypeId = 2) AND (MaterialsType_1.MaterialsTypeId = 0)


ولی ما کلی نوع مصالح و کف پوش داریم که کاربر ممکنه انتخاب نکرده باشه، یا یکی یا تعدادی انتخاب کرده باشه.
پس چطور باید چک کنیم کدوم ها انتخاب شدن یا نشدن توسط کاربر که بیاییم بر اساس اون انتخاب ها سلکت رو انجام بدیم؟



فکر کنم منظورتون اینه که از چک باکس لیست استفاده کنم. خوب فرض کنید من همچین چک باکس لیستی ایجاد کردم

<asp:CheckBoxList ID="CheckBoxList1" runat="server">
<asp:ListItem Value="1">آجر</asp:ListItem>
<asp:ListItem Value="1">سنگ</asp:ListItem>
<asp:ListItem Value="3">سیمان</asp:ListItem>
<asp:ListItem Value="4">شیشه</asp:ListItem>
</asp:CheckBoxList>

فرض کنید کاربر از چک باکس لیست بالا سنگ و سیمان رو انتخاب کرده (یعنی 1 و 3) و به ازای سنگ تیره رو انتخاب کرده و به ازای سیمان هر دو. الآن اون یک خط کوئری به چه شکل میشه؟
ممنون.

من سه تا پروژه دستمه الآن که همشون جستجوی پیشرفته دارن، یکیش مال خودمه دو تاش هم مال همکارام هستن که متأسفانه از شرکت رفتن و کارشون به صورت ناقص به من سپرده شد این آژانس املاک هم جزو اون ناقص هاست.
به خاطر همین من چند روزه دارم روی جستجوی پیشرفته کار می کنم منظورم اینه که صفر کیلومتر نیستم در این زمینه. در لینک زیر روش جوابی که به رنگ سبز در آوردم رو خیلی می پسندم (در پست اول لینک زیر می تونید فرم سرچ رو ببینید) منتها اونجا قضیه اش با اینجا فرق داره. اونجا از دراپ دان ها یا رادیو باتن لیست ها فقط کاربر حق انتخاب یک گزینه رو داره ولی اینجا که می تونه بیشتر از یکی رو انتخاب کنه من رو دچار مشکل کرده.
http://forums.asp.net/t/1977863.aspx?Advance+Search+multiple+table

و یه مسئله دیگه منظور از ترکیبی طبق جستجویی که من انجام دادم این بود که بعضی از نماها ترکیبی هستند لطفاً این لینک رو در این زمینه بخونید
http://arefigroup.ir/index.php/fa/2013-09-09-14-31-33

ایرادی نداره با اون کوئری که من نوشتم شما میتونید روی هر ستونی از جدول شرط بذارین و نتایج رو واکشی کنید ، برای داشتن یک کوئری با پارامترهای مختلف و اختیاری بخصوص در جستجوی های پیشرفته باید از Stored Procedureها (در اکسس از توابع) استفاده کنید. برای نمونه میتونید لینک زیر کمک بگیرید:

sql search query for multiple optional parameters (http://stackoverflow.com/questions/333965/sql-search-query-for-multiple-optional-parameters)برای جتسجو هم به جای چک کردن اینکه چک باکس فعال هست یا نه از شرط استفاده نکنید بلکه اندیس چک باکس رو به کوئری پاس بدین و توی کوئری چک کنید اگر مقدار نال بود اون رو برابر 0 قرار بدین. سناریوی بسیار واضحی هست.
شما به آینده فکر بکن مصالح جدیدی به جدول شما اضافه میشه (برای مثال 10 قلم) بعد شما باید برگردی به همین کدی که نوشتی 10 تا شرط اضافه کنی.اینکار توسعه و نگهداری نرم افزار رو خیلی سخت میکنه (شما در دسترس نبودی چه باید کرد؟؟؟)

alireza_s_84
سه شنبه 12 فروردین 1393, 13:35 عصر
I know I shouldn't have to check for each as a string or empty and create a separate stored procedure for each combination.

من میدونم که نباید به ازای هرکدوم از اونها پر یا خالی بودن رشته جستجو رو چک کنم و یا به ازای هرکدوم اونها یک رویه ذخیره شده بنویسم.

bftarane
سه شنبه 12 فروردین 1393, 14:11 عصر
ممنون Alireza_s_84

شما به آینده فکر بکن مصالح جدیدی به جدول شما اضافه میشه (برای مثال 10 قلم) بعد شما باید برگردی به همین کدی که نوشتی 10 تا شرط اضافه کنی.اینکار توسعه و نگهداری نرم افزار رو خیلی سخت میکنه (شما در دسترس نبودی چه باید کرد؟؟؟)
شما کاملاً درست می فرمایید. باید این نکته هم مد نظر قرار بگیره.

اجازه بدید من یه سمپل کوچک درست کنم فکر کنم تا 1.5 ساعت دیگه بتونم اینجا قرار بدم بعد لطفاً روی اون لطفاً بیشتر من رو راهنمایی کنید و ایرادات من رو بگید.

bftarane
سه شنبه 12 فروردین 1393, 16:00 عصر
یه سمپل درست کردم.
من متوجه نشدم چطور باید به چک باکس Index بدم ولی از چک باکس لیست استفاده کردم و بهش Value دادم. اندیس هم که خودشون دارن.
ولی نمی دونم چطور بدون استفاده از IF چک کنم که اگر فرضاً آجر انتخاب نشده بود اصلاً دیگه در سرچ لحاظ نشه.
یعنی الآن موندم جای اون علامت سوال ها چی قرار بدم.

protected void btn_search_Click(object sender, EventArgs e)
{


string sql = "SELECT tbl_home.HomeID, tbl_home.Address, tbl_option.ID, tbl_option.HomeID AS Expr1, tbl_option.NamaID, tbl_option.NamaDarkLight FROM (tbl_home INNER JOIN tbl_option ON tbl_home.HomeID = tbl_option.HomeID) where ((tbl_option.NamaID=@NamaID1) and (tbl_option.NamaDarkLight=@NamaDarkLight1 or @NamaDarkLight1=-1)) or ((tbl_option.NamaID=@NamaID2 ) and (tbl_option.NamaDarkLight=@NamaDarkLight2 or @NamaDarkLight2=-1)) or ((tbl_option.NamaID=@NamaID3) and (tbl_option.NamaDarkLight=@NamaDarkLight3 or @NamaDarkLight3=-1)) or ((tbl_option.NamaID=@NamaID4) and (tbl_option.NamaDarkLight=@NamaDarkLight4 or @NamaDarkLight4=-1))";

OleDbConnection con = new OleDbConnection(c.PRV1());
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = sql;
con.Open();



cmd.Parameters.AddWithValue("@NamaID1", ???????????);
cmd.Parameters.AddWithValue("@NamaID2", ???????????);
cmd.Parameters.AddWithValue("@NamaID3", ???????????);
cmd.Parameters.AddWithValue("@NamaID4", ???????????);

cmd.Parameters.AddWithValue("@NamaDarkLight1", RadioButtonList1.SelectedValue);
cmd.Parameters.AddWithValue("@NamaDarkLight2", RadioButtonList2.SelectedValue);
cmd.Parameters.AddWithValue("@NamaDarkLight3", RadioButtonList3.SelectedValue);
cmd.Parameters.AddWithValue("@NamaDarkLight4", RadioButtonList4.SelectedValue);

OleDbDataReader dr = cmd.ExecuteReader();
grd.DataSource = dr;
grd.DataBind();
dr.Close();
con.Close();
}
ممنون.

bftarane
سه شنبه 12 فروردین 1393, 20:10 عصر
خوب با استفاده از دستوراتی مشابه زیر تونستم وقتی که فقط چک باکس لیست در کار باشه سرچ رو انجام بدم ولی وقتی پای روشن و تیره به میون می یاد اصلاً دیگه نمی دونم چطور کوئری رو باید داینامیک کنم.

string sql = "";

sql = "SELECT ID from tbl_option where ";

for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected)
{

sql += " NamaID= " + CheckBoxList1.Items[i].Value + " or " ;

}
else
{
sql += " 1=2 or";
}

}
sql += " 1= 2 ";

alireza_s_84
سه شنبه 12 فروردین 1393, 20:39 عصر
خوب با استفاده از دستوراتی مشابه زیر تونستم وقتی که فقط چک باکس لیست در کار باشه سرچ رو انجام بدم ولی وقتی پای روشن و تیره به میون می یاد اصلاً دیگه نمی دونم چطور کوئری رو باید داینامیک کنم.

string sql = "";

sql = "SELECT ID from tbl_option where ";

for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected)
{

sql += " NamaID= " + CheckBoxList1.Items[i].Value + " or " ;

}
else
{
sql += " 1=2 or";
}

}
sql += " 1= 2 ";

جداول رو نرمالسازی کنید توی پست های بالاتر توضیح دادم و گرنه به مشکل برمیخورین
اینم کدی که براتون کوئری میسازه با توجه به نمونه ای که گذاشته بودین:

string conditional = "";


for (var i = 0; i < CheckBoxList1.Items.Count; i++)
{
ListItem item = CheckBoxList1.Items[i];
if (item.Selected)
{
RadioButtonList rlist = CheckBoxList1.Parent.FindControl(string.Format("RadioButtonList{0}", i + 1)) as RadioButtonList;

var DarkLight = rlist.SelectedValue;


if (i != CheckBoxList1.Items.Count - 1)
{
conditional += string.Format("(tbl_option.NamaID = {0} AND tbl_option.NamaDarkLight = {1} ) OR ", item.Value, DarkLight);
}
else
{
conditional += string.Format("(tbl_option.NamaID = {0} AND tbl_option.NamaDarkLight = {1} )", item.Value, DarkLight);
}
}
}




if (string.IsNullOrEmpty(conditional))
conditional = "tbl_option.NamaID > 0";


string query = string.Format("select * from tbl_home INNER JOIN tbl_option ON tbl_home.HomeID = tbl_option.HomeID where( {0} )", conditional);

bftarane
سه شنبه 12 فروردین 1393, 22:47 عصر
خیلی ممنون. عالی بود واقعاً.
فقط 2 تا مشکل وجود داشت
در این قسمت باید تعداد انتخاب شده ها منهای یک قرار بگیره
if (i != CheckBoxList1.Items.Count - 1)
که این مشکل حل شد


* فقط الآن یه مشکلی در مورد انتخاب هردو وجود داره

در حالت های معمولی من به این شکل می نوشتم

where tbl_option.NamaDarkLight=@NamaDarkLight or @NamaDarkLight=-1
که این باعث میشد هم روشن ها هم تیره ها نمایش داده بشن
با توجه به اینکه
-1
در دیتابیس وجود نداره فقط 1 و 2 برای روشن و تیره وجود داره

و یه سوال دیگه هم از همه دارم اینکه اگه نمونه ای از این طور جستجوهای پیشرفته سراغ دارید لینکش رو قرار بدید، من که هر چی گشتم نتونستم همچین حالتی پیدا کنم همه جستجوها حالت ساده تری داشتن.

alireza_s_84
سه شنبه 12 فروردین 1393, 23:39 عصر
خیلی ممنون. عالی بود واقعاً.
فقط 2 تا مشکل وجود داشت
در این قسمت باید تعداد انتخاب شده ها منهای یک قرار بگیره
if (i != CheckBoxList1.Items.Count - 1)
که این مشکل حل شد


* فقط الآن یه مشکلی در مورد انتخاب هردو وجود داره

در حالت های معمولی من به این شکل می نوشتم

where tbl_option.NamaDarkLight=@NamaDarkLight or @NamaDarkLight=-1
که این باعث میشد هم روشن ها هم تیره ها نمایش داده بشن
با توجه به اینکه
-1
در دیتابیس وجود نداره فقط 1 و 2 برای روشن و تیره وجود داره

و یه سوال دیگه هم از همه دارم اینکه اگه نمونه ای از این طور جستجوهای پیشرفته سراغ دارید لینکش رو قرار بدید، من که هر چی گشتم نتونستم همچین حالتی پیدا کنم همه جستجوها حالت ساده تری داشتن.
چک بکنید اگه 1- بود کوئری رو تغییر بدین به 0 < tbl_option.NamaDarkLight

string conditional = "";

for (var i = 0; i < CheckBoxList1.Items.Count; i++)
{
ListItem item = CheckBoxList1.Items[i];
if (item.Selected)
{
RadioButtonList rlist = CheckBoxList1.Parent.FindControl(string.Format("RadioButtonList{0}", i + 1)) as RadioButtonList;


var DarkLight = (rlist.SelectedValue.Equals("-1") ? "tbl_option.NamaDarkLight > 0 " : string.Format("tbl_option.NamaDarkLight > {0} ", rlist.SelectedValue));


if (i != CheckBoxList1.Items.Count - 1)
{
conditional += string.Format("(tbl_option.NamaID = {0} AND {1} ) OR ", item.Value, DarkLight);
}
else
{
conditional += string.Format("(tbl_option.NamaID = {0} AND {1} )", item.Value, DarkLight);
}
}
}


if (string.IsNullOrEmpty(conditional))
conditional = "tbl_option.NamaID > 0";



string query = string.Format("select * from tbl_home INNER JOIN tbl_option ON tbl_home.HomeID = tbl_option.HomeID where( {0} )", conditional);

bftarane
جمعه 15 فروردین 1393, 15:22 عصر
جداول رو نرمالسازی کنید توی پست های بالاتر توضیح دادم و گرنه به مشکل برمیخورین
یه سوال برام پیش اومد. در جداول شما اینطور که من متوجه شدم هر خانه فقط می تونه یک FlooringID داشته باشه
ولی من اون نمونه ای که درست کرده بودم فرض رو بر این گرفته بودم که کاربر موقع ثبت ملک بتونه هر تعداد مصالح که خواست برای نمای خانه اش ثبت کنه
مثلاً خانه شماره یک دارای FlooringID های 1و5و7 و ... باشه.
من هر چی فکر می کنم متوجه نمی شم برای این کار جداول جز به شکلی که در اون سمپل ایجاد کردم جور دیگه ای بتونه طراحی بشه.
لطفاً در این زمینه راهنمایی کنید.
یعنی به نظرم مجوریم یه جدول اصلی برای ملک داشته باشیم که این جدول یک HomeID داره، حالا باید یک جدول دیگه داشته باشیم که در اون HomeID به همراه نوع مصالح حالا به تعدادی که کاربر میخواد تکرار بشه.

alireza_s_84
جمعه 15 فروردین 1393, 16:42 عصر
یه سوال برام پیش اومد. در جداول شما اینطور که من متوجه شدم هر خانه فقط می تونه یک FlooringID داشته باشه
ولی من اون نمونه ای که درست کرده بودم فرض رو بر این گرفته بودم که کاربر موقع ثبت ملک بتونه هر تعداد مصالح که خواست برای نمای خانه اش ثبت کنه
مثلاً خانه شماره یک دارای FlooringID های 1و5و7 و ... باشه.
من هر چی فکر می کنم متوجه نمی شم برای این کار جداول جز به شکلی که در اون سمپل ایجاد کردم جور دیگه ای بتونه طراحی بشه.
لطفاً در این زمینه راهنمایی کنید.
یعنی به نظرم مجوریم یه جدول اصلی برای ملک داشته باشیم که این جدول یک HomeID داره، حالا باید یک جدول دیگه داشته باشیم که در اون HomeID به همراه نوع مصالح حالا به تعدادی که کاربر میخواد تکرار بشه.
نیاز به یک جدول واسط دارین برای تخصیص چند نوع نما به یک ساختمان به شکل زیر:

117602