PDA

View Full Version : کد جستجو



nasiiiiiii
سه شنبه 08 فروردین 1391, 19:42 عصر
سلام دوستان سال نو مبارک
بچه ها من دارم یه برنامه برای بنگاه می نویسم که امکانات زیرو برش طراحی کردم
ثبت ملک جدید با اطلاعات کامل
ویرایش اطلاعات ثبت شده
حذف املاک فروخته شده
حالا می خوام کدی بنویسم که به کاربر امکان بده تا از املاکی که قبلا ثبت کرده بر اساس قیمت و یا متراژ جستجو کنه اما نمی دونم کد انتخاب همه موارد از یه تیبل که قیمتاشون بین مثلا 5 تا 10 باشرو چه طور باید بنویسم
کمک می خوام
مرسی

84771

mansour01
سه شنبه 08 فروردین 1391, 20:19 عصر
ننوشتید چه اروری دریافت می کنید ؟
چیزی که من میبینم در کوئری شما بعد از BETWEEN هیچگونه AND ای نوشته نشده . در حقیقت اینجور فرمان ارسال میشه :
SELECT * FROM TABLE WHERE CLUMON BETWEEN 'tEXT1tEXT2'
که هیچ AND ای وسط دو تکست نیست این موضوع نیست در کل فکر می کنم کل خط مشکل داره ، این خط رو مجددا تصحیح کنید و به خطاهای دات نت هم توجه کنید . شاید هم من اشتباه می بینم .

Hybrid
سه شنبه 08 فروردین 1391, 20:29 عصر
سلام ، کد جستجوتون کامل امل اشتباهه عزیز ، اول اینکه طبق گفته دوستمون AND رو داخل رشته ننوشتین ! پس انتظار نداشته باشین نتایج رو بر گردونه ، دوما به فرض این خط درست باشه ، شما نتیجه ی جستجو رو کجا نمایش میدین اصلا جستجویی رو انجام نمیدین !!!! این تابع رو به دلخواه تغییر بده و ازش استفاده کن :


Function Search(ByVal FieldName As String, ByVal TableName As String, ByVal SearchFor As String) As DataTable
Dim oledbDataAdapter1 As New OleDbDataAdapter
Dim oledbconnection1 As New OleDbConnection
oledbconnection1.ConnectionString = "کانکشن استرینگ شما"
With oledbDataAdapter1
.SelectCommand = New OleDbCommand
.SelectCommand.Connection = oledbconnection1
.SelectCommand.CommandType = CommandType.Text
.SelectCommand.CommandText = "Select * from " & TableName & " Where " & FieldName & " like '%" & SearchFor & "%'"
If .SelectCommand.Connection.State <> ConnectionState.Open Then
.SelectCommand.Connection.Open()
End If
.SelectCommand.ExecuteNonQuery()
Dim dt As New DataTable
oledbDataAdapter1.Fill(dt)
Return dt
End With

End Function



این تابع 3 تا پارامتر میگیره ، یکی نام ستون مورد نظر که قصد دارین جستجو طبق اون انجام بشه ، یکی هم تام جدولی که جستجو در اون انجام میشه و دیگری متنی مورد جستجو و میتونین طبق خط زیر ازش استفاده کنین ،


DataGridView1.DataSource = obj.Search("person_ShAks", Trim(txtSearch.Text))

سوالی داشتین بپرسین.

nasiiiiiii
چهارشنبه 09 فروردین 1391, 21:29 عصر
بچه ها کمکم کنید با راهنمایی دوستان به نتیجه نرسیدم:گریه::گریه::گریه:

Hybrid
چهارشنبه 09 فروردین 1391, 21:47 عصر
بچه ها کمکم کنید با راهنمایی دوستان به نتیجه نرسیدم:گریه::گریه::گریه:

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

nasiiiiiii
چهارشنبه 09 فروردین 1391, 22:51 عصر
دوست عزیز من این خط کدارو متوجه نشدم اگه می شه بیشتر توضیح بدین
بعد اگه می شه ایراد خط کد خودمم بگین که چه طور از between باید استفاده کنم

viper2009
چهارشنبه 09 فروردین 1391, 23:03 عصر
من پیشنهاد می کنم این اطلاعات را داخل گرید جانوس (http://www.janusys.com/controls/) بریز و سطر فیلتر هر ستون را فعال کن و بگذار فیلتر را بر اساس محتوا (Content) قرار بده
و در غیر اینصورت اگر فیلد به فیلد مثل نمونه خودت باید از دستورات SQL و گزینه Like برای هر فیلد استفاده کن

Hybrid
چهارشنبه 09 فروردین 1391, 23:06 عصر
دوست عزیز من این خط کدارو متوجه نشدم اگه می شه بیشتر توضیح بدین
بعد اگه می شه ایراد خط کد خودمم بگین که چه طور از between باید استفاده کنم

ببین دوست عزیز ، اون قطعه کدی که واستون نوشتم ، یک تابع هست که جستجو رو واستون انجام میده و نتیجه رو داخل یک datatable قرار میده و اونو بر میگردونه همین ، الان هر جایی از کد رو که متوجه نشدین بگین تا توضیحش بدم.

دستورتون رو به شکل زیر تغییر باید بدین ولی فکر نمیکنم کار کنه چون شما نتایج رو داخل هیچی قرار ندادین !


"Select * from tblApartemanForosh where gheimatKol between " & txtGheimatPae.Text & " And " & txtGheimatNahai.Text

*** توصیه میکنم از تابعی که واستون نوشتم استفاده کنین .

موفق باشید./

mansour01
چهارشنبه 09 فروردین 1391, 23:21 عصر
دوست عزیز من این خط کدارو متوجه نشدم اگه می شه بیشتر توضیح بدین
بعد اگه می شه ایراد خط کد خودمم بگین که چه طور از between باید استفاده کنم
دستور BETWEEN در ارسال کوئری رو کمی توضیح میدم .
ما یک جدول با نام "مشتری" داریم ، و دو ستون با اسم "نام" و "پرداختی" داریم . حالا میخوایم ردیف هایی که ستون "پرداختی" اونها بین 25 تا 30 هست رو نمایش بدیم .
SELECT نام,پرداختی FROM مشتری WHERE پرداختی BETWEEN 25 AND 40
در اینجا تمام ردیف هایی که در ستون پرداختی مبلغ 25 تا 40 رو دارند بازگردانده میشن و مابقی نادیده گرفته میشن .
ضمن اینکه تا اونجا که من یادم میاد علاوه بر کامل نبودن دستور شما به جهت قرار ندادن & 'AND' & ، خطای بسته نشده بودن ریدر رو میداد . متاسفانه چون تمام سورس قابل مشاهده نیست نمیشه نظر داد . باز من فکر می کنم شما این کوئری رو اشتباه استفاده می کنید .
موفق باشید

nasiiiiiii
شنبه 12 فروردین 1391, 17:27 عصر
سلام ، کد جستجوتون کامل امل اشتباهه عزیز ، اول اینکه طبق گفته دوستمون AND رو داخل رشته ننوشتین ! پس انتظار نداشته باشین نتایج رو بر گردونه ، دوما به فرض این خط درست باشه ، شما نتیجه ی جستجو رو کجا نمایش میدین اصلا جستجویی رو انجام نمیدین !!!! این تابع رو به دلخواه تغییر بده و ازش استفاده کن :


Function Search(ByVal FieldName As String, ByVal TableName As String, ByVal SearchFor As String) As DataTable
Dim oledbDataAdapter1 As New OleDbDataAdapter
Dim oledbconnection1 As New OleDbConnection
oledbconnection1.ConnectionString = "کانکشن استرینگ شما"
With oledbDataAdapter1
.SelectCommand = New OleDbCommand
.SelectCommand.Connection = oledbconnection1
.SelectCommand.CommandType = CommandType.Text
.SelectCommand.CommandText = "Select * from " & TableName & " Where " & FieldName & " like '%" & SearchFor & "%'"
If .SelectCommand.Connection.State <> ConnectionState.Open Then
.SelectCommand.Connection.Open()
End If
.SelectCommand.ExecuteNonQuery()
Dim dt As New DataTable
oledbDataAdapter1.Fill(dt)
Return dt
End With

End Function



این تابع 3 تا پارامتر میگیره ، یکی نام ستون مورد نظر که قصد دارین جستجو طبق اون انجام بشه ، یکی هم تام جدولی که جستجو در اون انجام میشه و دیگری متنی مورد جستجو و میتونین طبق خط زیر ازش استفاده کنین ،


DataGridView1.DataSource = obj.Search("person_ShAks", Trim(txtSearch.Text))

سوالی داشتین بپرسین.

دوست عزیز من می خوام براساس 2 تا ستون جستجو کنم و سوال دیگه اینکه من قسمتای رنگی رو متوجه نشدم

Hybrid
شنبه 12 فروردین 1391, 17:38 عصر
دوست عزیز من می خوام براساس 2 تا ستون جستجو کنم و سوال دیگه اینکه من قسمتای رنگی رو متوجه نشدم

خوب میتونین آرایه ای از ستون هارو به تابع بفرستین ،

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

الان در اون کدی که رنگی شده : prsl_shkas نام فیلده مورد نظر ، txtsearch.text متن جستجو هست.

nasiiiiiii
شنبه 12 فروردین 1391, 17:59 عصر
:افسرده::افسرده:ارور؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟84996

Hybrid
شنبه 12 فروردین 1391, 18:49 عصر
فضای نامی System.data.oledb رو در بالای کلاس فرم اضافه کن ،


imports system.data.oledb


در ضمن چرا تابع رو داخل رویداد نوشتین؟؟؟ تابع رو خارج از رویداد های بنویس

nasiiiiiii
شنبه 12 فروردین 1391, 21:49 عصر
دوست می شه درباره اون کد توضیح بدین آخه من وقبی کدو نفهمم چه طور استفاده کنم:خجالت:

Hybrid
شنبه 12 فروردین 1391, 22:00 عصر
http://img4up.com/up2/84363307570220101025.jpg

nasiiiiiii
شنبه 12 فروردین 1391, 22:32 عصر
دوست:خجالت: خوب کجا شرطو اعمال کنم که می خوام قیمت و متراژبین یه حدودی باشه:خجالت:

Hybrid
شنبه 12 فروردین 1391, 22:40 عصر
دوست:خجالت: خوب کجا شرطو اعمال کنم که می خوام قیمت و متراژبین یه حدودی باشه:خجالت:

خوب نحوه ی استفاده از تابع رو خوب واست گفتم دیگه ، اول اینکه اون فیلد که گفتین داخل چه جدولی هست؟؟ اسم اون جدول رو به جای table1 که در عکس میبینین جایگزین کنین مثلا به فرض اسمه فیلدتون Gheimat هست و داخل جدول ListGheymatha هست باید کد موجود در رویداد کلیک عکس بالا رو به صورت زیر تغییر بدین :


DataGridView1.DataSource = Search("Gheimat ", "ListGheymatha ", TextBox1.Text)

Textbox1 همون تکست باکسی هست که شما قیمت رو داخلش وارد میکنید

nasiiiiiii
شنبه 12 فروردین 1391, 22:48 عصر
آخه من 2 تا تکس باکس دارم چون می خوام بگم همه مواردی رو جستجو کنه که مثلا قیمتشون بین 100 تا 200 است و بعد نمایش بده درباه نحوه نمایشم توضیح می خوام:خجالت::خجالت::خجالت:

Hybrid
شنبه 12 فروردین 1391, 23:41 عصر
خو اینو زودتر بگو دوست من : )

در اون صورت باید دستور sql رو عوض کنید به شکل زیر :

Select * from table1 where gheimat between 10 and 100

کد بالا رکورد هایی رو بر میگردونه که مقدار فیلد Gheimat اونا بینه 10 و 100 باشه ،

دارم واستون یک نمونه برنامه مینویسم .

nasiiiiiii
شنبه 12 فروردین 1391, 23:49 عصر
دوست درباره نحوه نمایش تو یه دیتاگرید ویو بعد ازپیدا شدن موارد جستجو هم کمک می خوام
مرسی

Hybrid
شنبه 12 فروردین 1391, 23:55 عصر
این نمونه برنامه ، به تغییرات تابع خوب دقت کن ، یکی از پارامتر ها SearchFor دیگه به دردمون نمیخورد حذفش کردم و دستور sql رو هم تغییر دادم ( به نحوه ی استفاده از تابع هم دقت کن) :

Hybrid
یک شنبه 13 فروردین 1391, 00:14 صبح
خوب همون مثال ، نتایج رو داخل دیتا گرید ویو نمایش میده ،

شما 2 تا قیمت ، یکی داخل تکست باکس اول و دیگری داخل تسکت باکس دوم وارد کنید و روی دکمه جستجو کلیک کنید تا نتایج رو داخل دیتا گرید ویو نمایش بده