PDA

View Full Version : چک کردن عمل جستجو



soheilbehro
پنج شنبه 30 مهر 1388, 23:58 عصر
من با کد زیر عمل جستجو را انجام می دهم

Data1.Recordset.FindFirst strfield & "= '" & strvalue & " '"
می خواهم چک کنه که آیا نتیجه ای برای این جستجو پبدا شده یا نه یعنی در واقع می خواهم به صورت یک تابع عمل کند و پیغام مناسب را بدهد

xxxxx_xxxxx
جمعه 01 آبان 1388, 00:55 صبح
If Data1.Recordset.NoMatch = True Then

اگر شرط بالا برقرار باشد یعنی جستجو هیچ نتیجه ای نداشته است.

soheilbehro
جمعه 01 آبان 1388, 08:16 صبح
If Data1.Recordset.NoMatch = True Then

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


Data1.Recordset.FindFirst strfield & "= '" & strvalue & " '"

xxxxx_xxxxx
جمعه 01 آبان 1388, 11:52 صبح
خب دیگه.
طبق همون همون دستور اگر NoMatch برابر True باشد یعنی جستجو بدون نتیجه ماند(پس شما می تونید مقدار جدید رو ثبت کنید چون تکراری نیست). و اگر False باشد یعنی حداقل یک رکورد پیدا شده. (پس شما نباید مقدار جدید رو ثبت کنید چون تکراری هست.)

soheilbehro
جمعه 01 آبان 1388, 22:19 عصر
مشکل من اینه که اگه کد ملی تکراری نباشد باز هم خطا می دهد من کد رو براتون می گذارم اگه بتونید اصلاح کنید خیلی ممنون می شم

Dim strvalue As String
Dim intallrec As Integer, intcurrentrec As Integer
Dim strfield As String
strfield = "melle_cod"
strvalue = Text15.Text
If strvalue <> Empty Then
If Data1.Recordset.NoMatch = False Then
MsgBox ("erorr")
End If
End If

soheilbehro
شنبه 02 آبان 1388, 14:15 عصر
لطفا کمک کنید و بگید من چطوری می تونم بفهمم که این کد ملی تکراری است و یک پیفام بدهم همین ، من با عمل جستجو این کار را انجام می دهم ولی اگر تکراری هم نباشد باز هم پیغام خطا تکراری بودن را می دهد.

xxxxx_xxxxx
شنبه 02 آبان 1388, 15:39 عصر
دوست عزیز شما که اصلاً دستور جستجو را قرار ندادید.
این دستور:
If Data1.Recordset.NoMatch = False Then
تنها برای چک کردن Recrdset است که با توجه به عمل جستجو تغییر می کند.
شما قبل از این دستور باید همون FindFirst که در پست اول گذاشتید رو قرار بدید.
یعنی درکل به این صورت میشه:




Dim strvalue As String
Dim intallrec As Integer, intcurrentrec As Integer
Dim strfield As String
strfield = "melle_cod"
strvalue = Text15.Text
If strvalue <> Empty Then
Data1.Recordset.FindFirst strfield & "= '" & strvalue & " '"
If Data1.Recordset.NoMatch = True Then
MsgBox ("erorr")
End If
End If

soheilbehro
شنبه 02 آبان 1388, 20:18 عصر
دوست عزیز شما که اصلاً دستور جستجو را قرار ندادید.
این دستور:
If Data1.Recordset.NoMatch = False Then
تنها برای چک کردن Recrdset است که با توجه به عمل جستجو تغییر می کند.
شما قبل از این دستور باید همون FindFirst که در پست اول گذاشتید رو قرار بدید.
یعنی درکل به این صورت میشه:




Dim strvalue As String
Dim intallrec As Integer, intcurrentrec As Integer
Dim strfield As String
strfield = "melle_cod"
strvalue = Text15.Text
If strvalue <> Empty Then
Data1.Recordset.FindFirst strfield & "= '" & strvalue & " '"
If Data1.Recordset.NoMatch = True Then
MsgBox ("erorr")
End If
End If

دوست عزیز این کد رو تو خودت امتحان کردی !؟ این وقتی می بینه که تکراری است می ره رویه همون رکورد ولی پیغام نمی ده ، در حالی که من می خواهم اگه کد ملی تکراری بود پیغام بده .

xxxxx_xxxxx
یک شنبه 03 آبان 1388, 01:12 صبح
نه. بنده امتحان نکردم. چون این مشکل من نیست. شما گفتی چطور میشه از ورود تکراری اطلاعات جلوگیری کرد، من هم جواب دادم. حالا این که دستور جستجویی که خودتون نوشتید مشکل داره به من مربوط نمیشه.

شما اگر بجای اینکه سریع reply کنی و منتظر جواب دیگران باشید یکم به دستوری که به کار بردید نگاه کنید تا متوجه ایرادش بشید.
در دستور جستجو فضای خالی (space) قبل از هر تک کوتیشن رو حذف کنید.
مشکل همین هست نه چیز دیگه ای:


Data1.Recordset.FindFirst strfield & "='" & strvalue & "'"

soheilbehro
یک شنبه 03 آبان 1388, 20:08 عصر
آقای xxxxx_xxxxx (http://barnamenevis.org/forum/member.php?u=46030) خیلی ممنون از کمکت ولی من اصلا به جواب خودم نرسیدم!
من یه جستجو انجام می دهم بعدا نمی خواهم روی اون رکوردی که پیدا کرده بره بلکه می خواهم پیغام بده در واقع می خواهم از جستجو به عنوان یک تابع استفاده کنم که اگر مقدار اون برابر با true باشه یه پیغام بده در غیر اینصورت کاری نکنه.
باز هم تشکر از کمکت

xxxxx_xxxxx
دوشنبه 04 آبان 1388, 01:03 صبح
سلام،
بالاخره شما ناچارید تا همین عمل جستجو رو انجام بدید.
حالا برای اینکه بعد روی رکورد خاصی توقف نکنه می تونید Recordset رو مجدداً رو همون Table ای که بوده ست کنید.

soheilbehro
دوشنبه 04 آبان 1388, 08:16 صبح
مشکل من با پیغام دادن است که چه پیدا بشه چه نشه پیغام می ده ، نمی شه از جستجو به عنوان یه تابع استفاده کرد که اگر مقدار آن TRUE بود یعنی اگر چیزی پیدا کرد ، جواب بده؟

xxxxx_xxxxx
دوشنبه 04 آبان 1388, 08:34 صبح
مشکل من با پیغام دادن است که چه پیدا بشه چه نشه پیغام می ده ،
طبق دستورات فوق نباید اینطوری باشه!
اگر امکانش هست برنامه تون یا همین قسمتشو اینجا قرار بدید.


نمی شه از جستجو به عنوان یه تابع استفاده کرد که اگر مقدار آن TRUE بود یعنی اگر چیزی پیدا کرد ، جواب بده؟
اگر بخواید از تابع هم استفاده کنید باز باید همین دستورات رو توش استفاده کنید.

soheilbehro
دوشنبه 04 آبان 1388, 22:55 عصر
این هم نمونه کد شده ، اگه کسی بتونه اینو حل کنه خیلی ازش ممنون می شم

xxxxx_xxxxx
دوشنبه 04 آبان 1388, 23:41 عصر
سلام.
1) شما در حین ایجاد رکورد جدید خواستید جستجو کنید.
2) شما تکست باکس ها رو به فیلد های دیتابیس متصل کردید.

مورد اول شما رو با مشکل مواجه میکنه.
مورد دوم باعث میشه تا نتیجه جستجو رو تکست باکس ها تأثیر بزاره.
من برای جستجو یک Data2 به فرم اضافه کردم و عمل جستجو توسط اون انجام میشه. اینطوری بهتر هست.

سعی کنید کم کم بجای استفاده از Data از ADO استفاده کنید.

موفق باشید/

soheilbehro
سه شنبه 05 آبان 1388, 00:01 صبح
مرسی دوست عزیز واقعا خیلی زحمت کشیدی ممنون
حالا یه سوال دیگه می تونه یه دمکمه بگذاری که با زدن اون اطلاعات داخل بانک تبدیل به کد بشه و در یک جای دیگه ای ذخیره بشه؟

xxxxx_xxxxx
سه شنبه 05 آبان 1388, 00:07 صبح
خواهش می کنم.
سؤالاتی که مربوط به این تاپیک و موضوعش نمی شود را در تاپیک جداگانه ای مطرح کنید. البته قبل از آن جستجو کنید.
خود شما قبلاً تاپیکی را به همین منظور ایجاد کرده اید! :
تبدیل اطلاعات داخل بانک اطلاعاتی به کد (http://barnamenevis.org/forum/showthread.php?t=186219)

soheilbehro
سه شنبه 05 آبان 1388, 00:14 صبح
دوست گل این برنامه ای که نوشته اید فقط در حالتی که فرد جدیدی را ثبت نام کنیم کار می کند در غیر اینصورت دوباره در همه ی رکوردها وقتی روی کد ملی کلیک می کنیم و فوکس را از آن می گیریم باز هم پیغام می دهد.


خواهش می کنم.
سؤالاتی که مربوط به این تاپیک و موضوعش نمی شود را در تاپیک جداگانه ای مطرح کنید. البته قبل از آن جستجو کنید.
خود شما قبلاً تاپیکی را به همین منظور ایجاد کرده اید! :
تبدیل اطلاعات داخل بانک اطلاعاتی به کد (http://barnamenevis.org/forum/showthread.php?t=186219)
چشم این موضوع رو هم رعایت می کنم ببخشید

xxxxx_xxxxx
سه شنبه 05 آبان 1388, 00:20 صبح
احیاناً یک برنامه کامل که نمی خواید!
خب اینو خودتون چک کنید که الان در چه وضعیتی قرار داریم. تنها اگر AddNew شده بود انگاه عمل جستجو انجام بشه.
اینو می تونید تو دکمه ای که Addnew کردید تعریف کنید، یک متغیر تو قسمت General تعریف کنید. زمانی که Addnew میشه اونو 1 کنید و زمانی که عمل ثبت (update) انجام میشه متغیر رو 0 کنید.
حالا تو LoastFocus تکست باکس که جستجو انجام میشه چک کنید تنها اگر متغیر مقدار 1 داشت عمل جستجو انجام بشه.