PDA

View Full Version : جستجو بر اساس...



ehsan-ets
جمعه 14 شهریور 1382, 19:43 عصر
با سلام
من در حال نوشتن یک دفتر تلفن هستم .می خواستم امکان جستجو بر اساس هرکدوم از فیلدها رو هم بزارم :تشویق: اما توی جستجو بر اساس تلفن منزل و محل کار مشکل دارم :cry:
در صورتی که جستجو بر اساس موبایل و فکس کاملا درست کار می کنه :shock: وقتی کدها رو دیدم هیچ مشکلی نبود و حتی من برداشتم و کد جستجو بر اساس فکس رو هم کپی کردم و قسمت مربوط به اینکه کدوم رو بگرده رو تغییر دادم ولی بازم مشکل داره :cry:
اگه راهنمای کنین ممنون می شم :oops: :wink:

ehsan-ets
جمعه 14 شهریور 1382, 19:49 عصر
این کدی که ازش اشکال می گیره :cry:

s = Text1.Text
If s = "" Then
GoTo 10
End If
s = "home tel ='" + s + "'"
Data1.Recordset.FindFirst s
If Data1.Recordset.NoMatch Then
e = MsgBox("رکورد مورد نظر پیدا نشد", vbOKOnly + 48, "خطا")
GoTo 10
End If
Label3.Caption = Data1.Recordset.Fields("Name")
Label4.Caption = Data1.Recordset.Fields("family")
Label5.Caption = Data1.Recordset.Fields("home tel")
Label6.Caption = Data1.Recordset.Fields("job tel")
Label7.Caption = Data1.Recordset.Fields("fax")
Label8.Caption = Data1.Recordset.Fields("mobile")
10

قسمتی هم که می گه اشکال داره اینه:

Data1.Recordset.FindFirst s
من همین کد رو(به غیر از قسمت مربوط به فیلد دیتا بیس)برای موبایل و فکس استفاده می کنم اشکال جود نداره ولی برای تلفن محل کار و منزل .... :cry: :cry: :cry: :cry:

روح اله معینی زاده
شنبه 15 شهریور 1382, 08:18 صبح
:o با سلام خدمت دوست گرامی

این روش کار شما برای من روش غیر متعارفی بود. من معمولا با دستورات SQL و یا Find و اگر نشد با Filter این کار رو انجام می دم. مثلا به دستور زیر توجه کنید:
SELECT * FROM mytable WHERE myfield = '" & Text1.text & "'"
این روش رو هم تست کنید بد نیست. برای درست دیدن متنی که به انگلیسی نوشتم حالت Encoding رو به Left to Right Document تغییر بدهید.

با احترام - خدانگهدار. :P

BehnamPro
شنبه 15 شهریور 1382, 10:00 صبح
سلام.برای جستجوی شماره باید از دستور زیر استفاده کنید:

Data1.Recordset.FindFirst "Number= " & Number

که در این کد Number اول نام فیلد مربوط به شماره تلفنهاست و Number دوم شماره ایست که باید سرچ شود.توجه کنید که باید فیلد شماره تلفنها از نوع عددی (Integer) باشد.[/quote]

mgmreza
یک شنبه 09 دی 1386, 04:22 صبح
سلام
چگونه میتوان در دستورزیر
SELECT * FROM mytable WHERE myfield = '" & Text1.text & "'"
به جای اینکه myfield در قسمت command text مشخص شود توسط خود کاربر و در حال اجرای برنامه از طریق یک textbox مشخص شود البته من دستور فوق را امتحان کردم اما خطا میداد. اگر راهنمایی بفرمایید ممنون میشوم.
* البته من به جای myfield و mytable ، نام جدول و فیلد خودم را نوشتم.
با تشکر

ali_habibi1384
یک شنبه 09 دی 1386, 17:04 عصر
سلام
دوست عزیز برنامه های زبان vb انقیاد زمان اجرا دارند و هنگام اجرای برنامه نوع متغییرها تعریف می شوند شما در خط اول مقدار s رو از خالی قرار دادی پس نوع s از نوع رشته خواهد بود حال آنکه پایگاه داده شما می خواد فیلدی رو از نوع عددی پیدا کنه بنابراین خطای زمان اجرای شما مربوط به نا همنوع بودن داده ها است.
پیشنهاد:
s رو از نوع varient تعریف کن و بجای دادن مقدار ""=s قرار بده s=0 مشکلتون مطمئنا حل خواهد شد.
موفق باشید.

Runtime_Error_999
چهارشنبه 12 دی 1386, 09:57 صبح
انقیاد یعنی چی؟

bobrus
چهارشنبه 12 دی 1386, 13:29 عصر
سلام دوستان
آقای ehsan-ets شما یه مشکل کوچولو داری اونم اینه که نام فیلدی رو که انتخاب کردی اسپیس داره
یعنی( "home tel ") که در این حالت حتی خود اکسس هم با مشکل مواجه میشه و گاهی اوقات درست کار میکنه و گاهی اوقات اشتباه می کنه بهتر بجای اسپیس از آندرلاین استفاده کنی یعنی تبدیل به "home_tel " بشه همینطور برای "job Tel" اینکار رو انجام بده .
به قول دوستان استفاده از SQL بهتر از روش شماست به توصیشون گوش کن و هرگز هم در نام فیلد از اسپیس استفاده نکن

اوبالیت به بو
چهارشنبه 12 دی 1386, 15:09 عصر
Dim str As Variant
str="HomeTel='" + HomeTel.Text + "'"
If Not Data1.Recordset.EOF = True Then
Data1.Recordset.FindFirst str
End If
If Data1.Recordset.NoMatch Then
e=MsgBox ("رکورد مورد نظر پیدا نشد", vbOKOnly + 48, "خطا")
Go To 10
End If
Label3.Caption = Data1.Recordset.Fields("Name")
Label4.Caption = Data1.Recordset.Fields("Family")
Label5.Caption = Data1.Recordset.Fields("HomeTel")
Label6.Caption = Data1.Recordset.Fields("JobTel")
Label7.Caption = Data1.Recordset.Fields("Fax")
Label8.Caption = Data1.Recordset.Fields("Mobile")
10
.
به جای s جایی که قرار کلمه یا چیز مورد نظر جستجو بشه رو بزار که من HomeTel.Text رو گذاشتم

bahman_bisavad
پنج شنبه 13 دی 1386, 10:13 صبح
انقیاد یعنی چی؟
انقیاد یعنی تعریف نوع متغییر.

bahman_bisavad
پنج شنبه 13 دی 1386, 10:20 صبح
[quote=ali_habibi1384;442969]سلام
دوست عزیز برنامه های زبان vb انقیاد زمان اجرا دارند و هنگام اجرای برنامه نوع متغییرها تعریف می شوند شما در خط اول مقدار s رو از خالی قرار دادی پس نوع s از نوع رشته خواهد بود حال آنکه پایگاه داده شما می خواد فیلدی رو از نوع عددی پیدا کنه بنابراین خطای زمان اجرای شما مربوط به نا همنوع بودن داده ها است.
پیشنهاد:
s رو از نوع varient تعریف کن و بجای دادن مقدار ""=s قرار بده s=0 مشکلتون مطمئنا حل خواهد شد.
موفق باشید.

error2009
چهارشنبه 04 آبان 1390, 22:55 عصر
سلام خسته نباشید
من دارم یک برنامه کتابخانه مینویسم.
یه بخش تعریف کاربر گذاشتم که میخوام کاربر نام کاربری و پسوردشو تو دوتا تکس باکس بنویسه بعد اگه نام کاربری و رمز عبورش صحیح بود وارد سیستم بشه.
نمیدونم چجوری بنویسم که اول بیاد نام کاربری رو پیدا کنه بعد رکورد بعدی شو با تکس دوم مقایسه کنه اگه رمز درست بود وارد بشه هرچی با دستور Recordset.FindFirst کار کردم نتونستم
ممنون میشم کمک کنید.

MohammadGh2011
چهارشنبه 04 آبان 1390, 23:08 عصر
سلام خسته نباشید
من دارم یک برنامه کتابخانه مینویسم.
یه بخش تعریف کاربر گذاشتم که میخوام کاربر نام کاربری و پسوردشو تو دوتا تکس باکس بنویسه بعد اگه نام کاربری و رمز عبورش صحیح بود وارد سیستم بشه.
نمیدونم چجوری بنویسم که اول بیاد نام کاربری رو پیدا کنه بعد رکورد بعدی شو با تکس دوم مقایسه کنه اگه رمز درست بود وارد بشه هرچی با دستور Recordset.FindFirst کار کردم نتونستم
ممنون میشم کمک کنید.
سلام عليکم
خوب جاي نامناسبي تاپيک ايجاد کرديد ديگه.
بريد تو لينک زير و بعد گزيه ي ايجاد تاپيک جديد رو بزنيد.
http://barnamenevis.org/forumdisplay.php?43-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-6-VB
و سوالتون رو مطرح کنيد البته با عنوان مناسب.
(من موندم که چرا شما رفتيد تويک تاپيکي که در سال 82 ايجاد شده و سوالتون هم با اين تاپيک مرتبط نبوده پست زديد:متفکر::لبخندساده:)

موفق باشيد