ايران ويج

نسخه‌ی کامل: جستجو در چند فيلد
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان.
من دارم يه برنامه بانك اطلاعاتي با كنترل ADODC مي نويسم و تو قسمت جستجو به مشكل برخوردم. به اين صورت كه برنامه بايد نام و نام خانوادگي و نام پدر را با نام هاي وارد شده مقايسه و اگر درست بود اون ركورد رو نمايش بده.ولي مشكل من اينه كه فقط نام را توي جستجو مقايسه مي كنه.نام خانوادگي و پدر رو مقايسه نميكنه.يه نگاه به دستور زير بندازين.
ADODC1.Recordset.Find "FName LIKE '" & strName & "*'"

اين كد رو تو Notepad كپي كنين تا درست ببينين.

اين دستور اسمي كه توي متغير Strname هستش رو تو فيلد Fname جستجو مي كنه.حالا من مي خوام علاوه بر نام ، نام خانوادگي هم كه توي فيلد LName هستش چك كنه.

اگه امكانش هست يه مثال بزنين ممنون ميشم.
راستي خواستم سؤالم رو تو چند پست قبل مطرح كنم ولي پشيمان شدم.
سورس اون پست هم دانلود كردم اما زياد به دردم نخورد.
سلام

دستورات رو به اين صورت اصلاح كنيد :

کد:
SerchSTR = "FName Like '" & STRName & "'" & " And " & "LName Like '" & STRLName & "'"
ADODC1.Recordset.Find SerchSTR
از لطف شما ممنونم.معلومه كه منظور منو به خوبي متوجه شدين. اما كد بالا ارور ميده . اگه امكانش هست خودتون يه امتحان بكنين.
اگه مي تونستم حتما پروژه مي گذاشتم تا خودتون ببينيد اما نمي شه
ميشه خودتون يه تست بكنين ؟ يا حداقل راه حل ديگه اي بگين ؟
ممنون.
اينم عكس ارور:
http://escada.persiangig.com/image/01.jpg
سلام
چرا از دستورات SQLاستفاده نمیکنین؟
Adodc1.RecordSource = "SELECT * FROM TabaleName WHERE Name='Mohsen' and Father='Ali' and Shenasname='1234'"
اگه فیلدهای مورد جستجو رو درست انتخاب کنی این دستور فقط همون رکورد مورد نظرت رو میده .
موقعي كه اين دستور رو اجرا مي كنيم هيچ اتفاقي نمي افته و ركورد همچنان همون جايي كه هست باقي مي مونه.از Refresh هم استفاده كردم ام بدتر شد . چون يه ارور هم داد.
خواهش مي كنم راه حل تون با استفاده از خود ADODC باشه.اين جوري هم راحت تره هم ما رو وارد چهار تا معادله نمي كنه.
کد:
ADODC1.Recordset.Find
فکر کنم چون Adodc امکانات خوبی برای کار با فرامین SQL داره و کمتر نیاز به جستجو پیش میاد، به همین خاطر کسی تا حالا متوجه نشده که ضابطه جستجو فقط یک شرط میتونه داشته باشه و نمیشه بیش از یک شرط بهش داد.
من همین امروز یه برنامه نوشتم که با Adodc جستجو می کرد ولی فقط با یه فیلد کار داشتم و متوجه این مطلب نشدم.
گمونم fliter هم همین قانون Find رو داشته باشه. یعنی خاصیت fliter رو هم فقط میشه یه شرط بهش داد.
کد:
"FName Like '" & STRName & "'"
ظاهرا عملگر Like بدون کاراکتر * یا % مثل همون عملگر = کار می کنه.
پس شد:
کد:
"FName Like '" & STRName & "*'"
یا
کد:
"FName Like '*" & STRName & "*'"
نقل قول: چرا از دستورات SQLاستفاده نمیکنین؟
Adodc1.RecordSource = "SELECT * FROM TabaleName WHERE Name='Mohsen' and Father='Ali' and Shenasname='1234'"
چون فرمان Where فقط رکوردهایی رو که شامل شرط میشن نمایش میده و بقیه اطلاعات از دید کاربر مخفی میشن.
ممکنه بگید اشکالی نداره بقیه رکوردها مخفی بشن ولی بعضی جاها بسته به نوع اطلاعات یا هدف برنامه یا رابط کاربر، مهمه که همه اطلاعات در حال نمایش باشن.

نقل قول: موقعي كه اين دستور رو اجرا مي كنيم هيچ اتفاقي نمي افته و ركورد همچنان همون جايي كه هست باقي مي مونه.از Refresh هم استفاده كردم ام بدتر شد . چون يه ارور هم داد.
درسته بعد از مقداردهی به RecordSource باید متد Refresh رو فراخوانی کنیم اما خاصیت CommandType باید مقدارش برابر 8 باشه که بشه RecordSource رو با دستورات SQL تعیین کنیم.

نتیجه: فقط میشه از Where استفاده کرد. به اینصورت:
کد:
Private Sub cmdFind_Click()
    Adodc1.RecordSource = "Select * From tbl1"
    Adodc1.Refresh
    Adodc1.RecordSource = "Select * From tbl1 Where " & _
    "Name = '" & txtNam.Text & "' And " & _
    "Family = '" & txtFam.Text & "' And " & _
    "Father = '" & txtFath.Text & "'"
    Adodc1.Refresh
    If Adodc1.Recordset.RecordCount < 1 Then MsgBox "Not found!"
End Sub
دست آخر بجای Like از = استفاده کردم.
توی Like هم بجای * از % استفاده کردم (فایل ضمیمه).
دستت درد نكنه مجتبي جان.لطف كردي.
سلام به دوستان من تازه واردم ، در حال نوشتن یه برنامه هستم ولی توی قسمت جستجو مشکل دارم.
ببینید یه adodc دارم ویه بانک اطلاعاتی اکسس میخوام وقتی یه شماره قبض رو داخل text1 وارد میکنم اونو پیدا و باقی اطلاعات رو داخل textهای دیگه مثلا تاریخ ، پلاک ، و غیره رو نشون بده . اگه میشه دستور لازم رو بفرستین ممنون
سلام.
لطفا برای سوال های جدیدتون تاپیک جدید بزنید.
جستجو در چند فيلد
سلام به شما، من تازه واردم ، در حال نوشتن یه برنامه هستم ولی توی قسمت جستجو مشکل دارم.
ببینید یه adodc دارم ویه بانک اطلاعاتی اکسس میخوام وقتی یه شماره قبض رو داخل text1 وارد میکنم اونو پیدا و باقی اطلاعات رو داخل textهای دیگه مثلا تاریخ ، پلاک ، و غیره رو نشون بده . اگه میشه دستور لازم رو بفرستین ممنون میشم خدا خیرتون بده.