PDA

View Full Version : جستجوی یک رکورد خاص در بانک اطلاعاتی SQL



123s0ran
چهارشنبه 16 اسفند 1391, 23:14 عصر
Sسلام دوستان و اساتید زحمت کش سایت برنامه نویس
و با عرض تشکر و قدردانی از مطالب مفید انجمن....
دوستان من می خواهم داخل بانک اطلاعاتیم یک رکورد خاصی جستجو کنم که داری چند مشخصه فیلد خاص باشه.
من خودم قبلا برای جستجوی تکی مثلا جستجوی فیلد های که کد انها 12 هستش از کوری زیر استفاده میکردم


sqlcmd = "Select * from table1 where id =" & txtSearch.Text
اما مثلا من میخوام دنبال یک رکورد باشم که داخل فیلده اسم (علی) باشه داخل فیلده سال تولد (1372) و داخل فیلده جنسیت (مرد) وجود داشته باشه اما متاسفانه کد یا کوری این نوع جستجو بلد نیستم اگه کسی از دوستان بلد هستش لطفا راهنمای کنید ممنون میشم.
:لبخندساده:

hosein320
چهارشنبه 16 اسفند 1391, 23:39 عصر
سلام
برای مثال

sqlcmd = "Select * from table1 where id =" & txtSearch.Text & " and name=" & "'" &txtname.text & "'"

123s0ran
پنج شنبه 17 اسفند 1391, 00:30 صبح
سلام. مرسی از راهنمایتون اما جواب نداد :ناراحت:

hosein320
پنج شنبه 17 اسفند 1391, 02:05 صبح
پست 2 به روز شد!

aknj56
پنج شنبه 17 اسفند 1391, 08:12 صبح
سلام دوست عزیز
باید شما پارامتر تعریف کنی
این هم نمونه کد:

da = New OleDbDataAdapter("select nam,famil from table1 where nam like @p1 and famil like @p2 ", cnn)
da.SelectCommand.Parameters.Add("p1", OleDbType.VarChar)
da.SelectCommand.Parameters.Add("p2", OleDbType.VarChar)
da.SelectCommand.Parameters("p1").Value = TextBox1.Text
da.SelectCommand.Parameters("p2").Value = TextBox2.Text
ds.Clear()
da.Fill(ds)
DataGridView1.DataSource = ds
DataGridView1.DataMember = ds.Tables(0).ToString

123s0ran
پنج شنبه 17 اسفند 1391, 17:53 عصر
سلام دوست عزیز . ببخشید من تازه کار هستم و از فرمایشاتی که در پست بالا فرمودید زیاد سر در نیاوردم

ببینید من دقیقا برای جستجو های قبلیم از این کد ها استفاده می کردم.
برای تعریف کانکشن:

Private cnnString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=L:\terminal\t erminal\terminal.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
Private cnn As New SqlConnection(cnnString)
Private cmd As SqlCommand
Private ad As SqlDataAdapter
Private dt As DataTable
Private ds As DataSet
Dim bs As New BindingSource

برای جستجو:


Private Sub txtSearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSearch.TextChanged
Try
If txtSearch.Text = String.Empty Then ReloadRecord() : Exit Sub
Dim sqlcmd As String = ""
Select Case ComboBox1.SelectedIndex
Case Is = 0 ' جستجو بر اساس کد
sqlcmd = "Select * from table1 where id =" & txtSearch.Text

Case Is = 1 ' جستجو بر اساس نام خانوادگی
sqlcmd = "Select * from table1 where lname like N'%" & txtSearch.Text & "%'"
Case Is = 2 'جستجو بر اساس ساعت
sqlcmd = "Select * from table1 where sat like N'%" & txtSearch.Text & "%'"
End Select
ad = New SqlDataAdapter(sqlcmd, cnnString)
dt = New DataTable
ad.Fill(dt)
dgv.DataSource = dt
Catch ex As Exception
MsgBox(Err.Description _
, MsgBoxStyle.Critical, "خطا هنگام جستجو")
End Try

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

123s0ran
جمعه 18 اسفند 1391, 01:45 صبح
plz help me :ناراحت:

swallow.pa
جمعه 18 اسفند 1391, 08:47 صبح
فيلدهاي جدولت رو بنويس تا بر اساس اون انواع جستجو رو بنويسم

123s0ran
جمعه 18 اسفند 1391, 10:09 صبح
سلام . فیلد های که میخواهم جستجو بشن اینا هستن :
sandali
maqsad
sahat
:لبخندساده:

123s0ran
جمعه 18 اسفند 1391, 13:41 عصر
:ناراحت: انگار سوال ما خیلی سخته یا بد شانسیم :ناراحت:

behrozi.ir
جمعه 18 اسفند 1391, 13:59 عصر
سلام
اگر میخوای با EF ، Linq و یا Dateset برات بنویسم

از دیتا بیس خودت یک اسکریپت ، تو اینجا ضمیمه کن
برات بنویسم


بهروزی

123s0ran
جمعه 18 اسفند 1391, 14:07 عصر
101108
سلام . بفرماید ...:لبخندساده:

behrozi.ir
جمعه 18 اسفند 1391, 14:55 عصر
101108
سلام . بفرماید ...:لبخندساده:

دوست من
منظور از اسکریپت ، اسکریپت بک آپ دیتا بود. (برای ایجاد اسکریپت این مسیر رو تو SQL SERVER دنبال کنید روی اسم دیتا بیس کلیک راست کنید task و Generate script را انتخاب کنید و سپس مراحل را ادامه دهید).

یا اگر قادر به ایجاد آن نیستید، یک آپ معمولی (فایل mdf) رو ارسال کنید. (اگر اجازه کپی کردن آن وجود نداشت باید دیتا را Detech کنید)

123s0ran
جمعه 18 اسفند 1391, 15:16 عصر
او ببخشید من تازه کار هستم و زیاد از اصطلاحات زیاد سر در نمیارم . و همونطوری که شما گفتید فایل mdf ضمیمه کردم و برایDetech کردن از همون داخل ویژوال استدیو روی بانک کلیک راست کردم و گزینه Detech انتخاب کردم که خدا کنه مشکلی نداشته باشه ... :لبخندساده:
101112

swallow.pa
جمعه 18 اسفند 1391, 15:45 عصر
سلام . فیلد های که میخواهم جستجو بشن اینا هستن :
sandali
maqsad
sahat
:لبخندساده:
خب اينم جستجو

SELECT * FROM TABLE1 WHERE sandali =25 AND maqsad ='tehran' AND sahat ='mystring'

حالا براي مقصد كه رشته است مي توني عملگر like هم استفاده كني

maqsad like%'tehran '%

123s0ran
جمعه 18 اسفند 1391, 16:21 عصر
اقای swallow.pa و اقای behrozi.ir (http://barnamenevis.org/member.php?u=284625) دستتون درد نکنه واقعا مننون زحمتت کشید :قلب::بوس::تشویق:

behrozi.ir
جمعه 18 اسفند 1391, 16:28 عصر
سلام
با تشکر از دوست عزیز swallow.pa (http://barnamenevis.org/member.php?243187-swallow.pa)

Dim maqsad As String = TextBox1.Text
Dim sahat As String = TextBox2.Text
Dim sandali As String = TextBox3.Text
Dim resualt As String
resualt = "SELECT * FROM TABLE1 WHERE sandali =" + sandali + " AND maqsad ='" + maqsad + "' AND sahat ='" + sahat + "'"

behrozi.ir
جمعه 18 اسفند 1391, 16:36 عصر
سلام
با تشکر از دوست عزیز swallow.pa (http://barnamenevis.org/member.php?243187-swallow.pa)

Dim maqsad As String = TextBox1.Text
Dim sahat As String = TextBox2.Text
Dim sandali As String = TextBox3.Text
Dim resualt As String
resualt = "SELECT * FROM TABLE1 WHERE sandali =" + sandali + " AND maqsad ='" + maqsad + "' AND sahat ='" + sahat + "'"

البته تبدیل صندلی یادم رفت باید تبدیل به عدد بشه:چشمک: (خط سوم) و یک اشتباه دیگه، نوع اون هم باید از رشته به عدد تغییر پیدا کنه (همون خط 3 ):لبخندساده:


بهروزی (http://www.behrozi.ir)