PDA

View Full Version : مشکل در جستجو



hqsoroush
جمعه 01 مهر 1390, 20:53 عصر
سلام.
یه دیتابیس دارم که 3جدول توش طراحی کردم.
این دیاگرامشه.
75670
حالا میخوام توی یک Datagrid view اون فیلدهایی که دورشون خط قرمز هستش رو نمایش بدم.
روال کارم اینه:
1. بعد از اتصال بانک به برنامه،یک دیتاست دارم با این سه جدول
2. SqlDataAdapter رو اضافه میکنم و از طریق کادر محاوره ای فیلدهای مورد نظرم رو انتخاب میکنم.
3. سپس از گزینه ی Genrate Dataset در ابزار SqlDataAdapter برای ساختن دیتاست جدید استفاده میکنم تا جدول مورد نظر خودم که فیلدهای مورد نیازم(همون خط قرمز ها)در آن وجود دارد را ایجاد کنم.
4. کانکشن دیتا گرید را روی جدول ساخته شده توسط مرحله 3 میگذارم.تا اینجا مشکلی ندارم چون جدول رو واسم نشون میده.

و اما جای اصلی کار که چند روزیست ذهنم را درگیر کرده:

5.برای نشون دادن اسم کسی که میخوام جستجو کنم توی تکست باکس(رویداد Ghange) این کد را مینویسم:

Private Sub TextBox7_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox7.TextChanged

SqlDataAdapter1.SelectCommand.CommandText = "SELECT * FROM Asami WHERE Name LIKE'" & TextBox7.Text & "%'"
DataSet11.Asami.Clear()
SqlDataAdapter1.Fill(DataSet11.Asami)

End Sub


اما با این پیغام مواجهه میشم:

75671

لطفا راهنمایی کنید که اشکال از طراحی بانک اطلاعاتیه یا باید به شیوه دیگه ای این فیلدها رو نمایش و مهم تر از همه جستجو کنم.

hqsoroush
شنبه 02 مهر 1390, 14:33 عصر
کسی نتونست کمکم کنه؟

ebraham
شنبه 02 مهر 1390, 15:31 عصر
سلام . تو اين سايت يه تاپيك هست واسه گريدويو كه تمام مسايل توشه تقريبا . منم اين سرچ و مشكل داشتم ولي با اين تاپيك مشكلم حل شد . جستجو كني پيداش ميكني .

hqsoroush
شنبه 02 مهر 1390, 16:05 عصر
سلام . تو اين سايت يه تاپيك هست واسه گريدويو كه تمام مسايل توشه تقريبا . منم اين سرچ و مشكل داشتم ولي با اين تاپيك مشكلم حل شد . جستجو كني پيداش ميكني .

دوست عزیزم با تشکر بسیار.
امیدوارم که پیداش کنم وگرنه نمیدونم چه خاکی بر سرم بریزم.

ebraham
شنبه 02 مهر 1390, 17:15 عصر
شما ميخواهيد كه در بانك اتان بر اساس خصوصيت تكست چينج جستجو كنيد و نتيجه را در گريد اتان نشون بديد درسته؟ اگر اينه و پيداش نكرديد در نهايت ككدش را برات مينويسم . اميدوارم بدردت بخوره.

ebraham
شنبه 02 مهر 1390, 17:17 عصر
فقط من در گريدم از يه جدول سرچ ميكردم نه چند تا .

Esmail Solhkhah
شنبه 02 مهر 1390, 17:29 عصر
در رویداد TextChanged این Fill رو انجام دادن پدر SQL SEFVER بیچاره رو درمیاره

چون با هر تغییر کاراکتری تو متن تکست باکس یه بار اون Fill انجام میشه

راهکار مناسب تر استفاده از BindingSource یا DataView هست چون هر دوی اینها دارای یه خاصیت برای فیلتر کردن اطلاعات هستند.

موفق باشید.

hqsoroush
شنبه 02 مهر 1390, 18:20 عصر
شما ميخواهيد كه در بانك اتان بر اساس خصوصيت تكست چينج جستجو كنيد و نتيجه را در گريد اتان نشون بديد درسته؟ اگر اينه و پيداش نكرديد در نهايت ككدش را برات مينويسم . اميدوارم بدردت بخوره.

دقیقا این کار رو روی جداولی که توی تصویر اول نشون دادم انجام میده.اما نه اینکه بخوام بصورت یکجا روی همه ی جداول این کار رو انجام بدم.
مثلا جدول Asami رو به تنهایی مورد جستجو قرار میدم و برام درست انجامش میده.


فقط من در گريدم از يه جدول سرچ ميكردم نه چند تا .

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

hqsoroush
شنبه 02 مهر 1390, 18:40 عصر
در رویداد TextChanged این Fill رو انجام دادن پدر SQL SEFVER بیچاره رو درمیاره

چون با هر تغییر کاراکتری تو متن تکست باکس یه بار اون Fill انجام میشه

راهکار مناسب تر استفاده از BindingSource یا DataView هست چون هر دوی اینها دارای یه خاصیت برای فیلتر کردن اطلاعات هستند.

موفق باشید.

یعنی نباید از جستجوی تکست چنجی استفاده کنم؟
میتونید توضیح بدید که اگر بخوام از این ابزار هایی که گفتید استفاده کنم، نهایتا نتیجه ی جستجو رو چطوری نشونم میده؟

نکته: فرض کنید چند اسم "علی" توی جدول وجود داره.اون خاصیتی که من استفاده میکردم(TextChange) اینجا به درد من میخوره.
چون تمام "علی" ها رو نشون کاربر میده.

آیا این راهکاری که گفتید میتونه چنین کاری رو انجام بده؟
(فراموش کردم بگم به مبتدی هستم)

Esmail Solhkhah
شنبه 02 مهر 1390, 19:02 عصر
Public Partial Class Form1
Inherits Form
Private dt As New DataTable()

Public Sub New()
InitializeComponent()
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs)
Dim query As String = "SELECT * FROM Asami "
Dim da As New SqlDataAdapter(query, "Your Connection String")
da.Fill(dt)
dataGridView1.DataSource = dt.DefaultView
End Sub

Private Sub textBox1_TextChanged(sender As Object, e As EventArgs)
Try
dt.DefaultView.RowFilter = "Name Like '%" + textBox1.Text & "%'"
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
End Class

hqsoroush
یک شنبه 03 مهر 1390, 09:17 صبح
مرسی دوست عزیزم.
4 تا سوال واسم پیش اومده از کدی که لطف کردید و نوشتید.
1. معنی خط 2 چیه ؟(چند بار توی چند تاپیک اینو دیدم)
2.توضیح برای خط 5 تا 7 ؟
3.کاربرد خط 17 ؟
4.توضیح برای خط 19 ؟

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

باز هم تشکر.

Esmail Solhkhah
دوشنبه 04 مهر 1390, 18:24 عصر
معنی خط 2 چیه ؟(چند بار توی چند تاپیک اینو دیدم)

شما یه فرم تعریف کردید که اون داره از کلاس Form مشتق میشه


توضیح برای خط 5 تا 7 ؟

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


کاربرد خط 17 ؟

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

موفق باشید.

hqsoroush
سه شنبه 05 مهر 1390, 22:52 عصر
ممنونم.امیدوارم همیشه موفق باشید.