PDA

View Full Version : خطا در جستجوی رکورد از روی فرم



iransim
شنبه 28 تیر 1399, 10:34 صبح
سلام دوستان
من داخل برنامه ام فرمی دارم که عملیات ثبت و ویرایش و جستجوی را از روی آن انجام میدهم ( شکل 1 ) عملیات جستجوی شماره پروژه رو با دستورهای زیر انجام میدهم



()Private Sub FindPro_Click
If IsNull(Find) Or Find = "" Then
MsgBox "کاربر گرامي : لطفا شماره پروژه را وارد کنيد " & vbCrLf, vbOKOnly + vbMsgBoxRight + vbInformation, " نرم افزار کنترل پروژه"
Find.SetFocus


Else
Then "لغو جستجو" = If FindPro.Caption

Me.FilterOn = False
" جستجو"=FindPro.Caption
" "=Find.Value
NumPro.BackColor = vbWhite


Else
DoCmd.OpenForm "FrmSabt", acNormal, , "[NumPro]=" & Find.Value


"لغو جستجو"= FindPro.Caption
NumPro.BackColor = vbYellow

End If
End If

مشکلی که دارم اینکه اگر شماره پروژه ای که ثبت نشده است رو جستجو کنم به جای اینکه فیلد شماره پروژه رو خالی نشون بده ، فرمم به صورت ( شکل 2 ) در میاد و کلیه فیلدها و ابجکتها به حالت مخفی در میاد .
ممنون میشم راهنمائی کنید که بدونم مشکل کجاست

eb_1345
شنبه 28 تیر 1399, 12:16 عصر
()Private Sub FindPro_Click
If IsNull(Find) Or Find = "" Then




سلام
قبل از هر چیز سعی کن از کلمات کلیدی اکسس به تنهائی و بدون ترکیب با حرف یا کلمه ای دیگر برای نام گذاری استفاده نکنی
درکد بالا از find استفاده کرده ای





Else
DoCmd.OpenForm "FrmSabt", acNormal, , "[NumPro]=" & Find.Value




فرم FrmSabt نام همین فرم جاریست یا فرم دیگر ؟

iransim
شنبه 28 تیر 1399, 13:00 عصر
سلام و ممنون از شما

فرم FrmSabt همین فرم جاری است.

eb_1345
شنبه 28 تیر 1399, 14:28 عصر
[
سلام و ممنون از شما

فرم FrmSabt

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


Private Sub txtSearch_AfterUpdate()
With Me.RecordsetClone
.FindFirst "[a] = " & txtSearch & ""
If .NoMatch Then
MsgBox "رکوردي پيدا نشد"
Exit Sub
Else
Me.Bookmark = .Bookmark
End If
End With
End Sub



ضمناً خاصیت cycle فرم رو در حالت Current Record قرار بده
موفق باشی

iransim
یک شنبه 29 تیر 1399, 08:48 صبح
سلام و عرض ادب دوست عزیز
سپاس از لطف و زحمت شما
مشکل جستجو به نحو احسن حل شد
فقط یک سئوال
روش جستجوئی که بیان کردم در یکی دیگه از فرمهای برنامه به راحتی و درستی کار میکنه فقط میخواستم بدونم تفاوت در چیه که روی ی فرم اون کدها اجرا و روی ی فرم دیگه با چنین خطائی مواجه میشه ؟
بازم ممنون

eb_1345
یک شنبه 29 تیر 1399, 10:16 صبح
فقط یک سئوال
روش جستجوئی که بیان کردم در یکی دیگه از فرمهای برنامه به راحتی و درستی کار میکنه فقط میخواستم بدونم تفاوت در چیه که روی ی فرم اون کدها اجرا و روی ی فرم دیگه با چنین خطائی مواجه میشه ؟

سلام
احتمالاً درحالت نمایش رکوردها خاصیت AllowAdditions یا اجازه اضافه کردن رکورد در فرم جاری در حالت No قرار داده ای که کار درستی هم انجام داده ای و با توجه به اینکه در کد DoCmd.OpenForm "FrmSabt", acNormal, , "[NumPro]=" & Find.Value دستور به باز کردن فرم با شرطی که انجام شدنی نیست میدهی این حالت اتفاق میفتد حالا اگر خاصیت AllowAdditions را در حالت yes قرار بدهی در هنگام جستجو اگر رکورد مورد نظر یافت نشود صفحه خالی از رکورد اما با نمایش کنترلهای روی فرم به نمایش در می آید .و در مورد آن فرمی که میفرمائی در آن چنین اتفاقی نمی افتد احتمالاً خاصیت AllowAdditions را در حالت yes قرار داده ای.

iransim
دوشنبه 30 تیر 1399, 20:52 عصر
عرض سلام و ادب مجدد
بله کاملا درست و حق با شما بود
خیلی لطف کردید و سپاس از پیگیری و پاسخ شما :قلب:

فقط در پست شماره 4 متوجه این عبارت شما نشدم (
چرا عمل جستجوی رکورد را با این کد انجام میدهی ؟ از این کد زمانی استفاده میشود که میخواهی دنبال رکوردی در فرم دیگر بگردی.)

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

eb_1345
دوشنبه 30 تیر 1399, 23:17 عصر
عرض سلام و ادب مجدد
بله کاملا درست و حق با شما بود
خیلی لطف کردید و سپاس از پیگیری و پاسخ شما :قلب:

فقط در پست شماره 4 متوجه این عبارت شما نشدم (
چرا عمل جستجوی رکورد را با این کد انجام میدهی ؟ از این کد زمانی استفاده میشود که میخواهی دنبال رکوردی در فرم دیگر بگردی.)

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

سلام
خواهش می کنم
مثلا! شما فرم دیگری داری که در آن فرم فیلدی وجود دارد که آن فیلد در فرم جاری هم وجود دارد به عبارتی ، یک فیلد مشترک در هر دو فرم وجود دارد . مثلاً در همین برنامه خودت ممکنه فرم دیگری با اطلاعات جانبی داشته باشید که در آن فرم هم فیلد شماره پرونده هم باشد . حالا شما نیاز پیدا می کنید که اطلاعات دیگر همین پروند جاری را در فرم دوم مشاهده و بررسی کنید . در اینجا در رویداد کلیک یک کمند باتن کد خودت را وارد می کنید . فقط یاد باشد که در این کد نام فرم دوم قید میشود.
موفق باشی