ايران ويج

نسخه‌ی کامل: جستجوی پیشرفته در اکسس 2003
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام بچه ها
چطور میشه با چند تکس باکس و یک باتن و کوئری در اکسس2003 یک جستجوی پیشرفته ساخت
من از بس باهاش ور رفتم گیج شدم ... مرسی ... ConfusedAmaze
سلام.
راحت ترین کار اینه که وقتی باتن فشرده شد، کد زیر رو تو کوئری قرار بدی و اجراش کنی:
کد:
select * from TableName where Field1Name=""""  & Text1.text & """" and Field2Name="""" & Text2.text & """"
و همینجور اگه تکس باکس بیشتری داشتی اضافه کن.
اگه خواستی کلمات مشابه هم باشه به جای علامت های مساوی از عبارت Like استفاده کن و قبل و بعد از تکس باکس ها علامت % بزار، یعنی اینجوری:
کد:
FieldName Like %" & Text1.text & "%"
اگه مقادیر ورودی از تکس باکس ها عدد هست و رشته متنی نیست می تونی علائم " مربوط به اون ها رو حذف کنی.
سلام
این کارو کردم ولی کدوم دستور هست که وقتی بخواهیم همه تکس باکس هارو سرچ کنه از ما نخواد که همه تکس باکس ها رو لزوما پر کنیم ... با AND همانطور که گفتید نوشتم ولی حتما باید همه تکس باکس های تحت این دستور پر شود تا به ما جواب دهد ... ولی اگر ما بخواهیم با بخشی از تکس باکس ها ( مثلا فقط اسم و فامیل ) سرچ کنیم تا بقیه رو پر نکنیم جواب نمیده ... با OR هم که خودتون میدونید چه جوابی میده .....
لطفا راهنماییم کنید ... مرسی

دارم گیج میشم ... AmazeAmazeAmaze
سلام.
برای این کار دستوری نیست بلکه باید از چند تا IF استفاده کنی. مثلا اینجوری:
کد:
dim strSearch as string
if txtFName.text<>"" then
strSearch="FName=' & txtFName.text & "'"
else
exit sub
end if
if txtLName.text<>"" then
strSearch=strSearch & " and LName='" & txtLName & "'"
end if
if txtOtherField.text<>"" then
strSearch=strSearch & " and OtherFieldName='" & txtOtherField.text & "'"
end if
Sql="select * from TableName where " &  strSearch
خوب همونطوری که می بینی وارد کردن txtFName الزامی هست و اگه اون وارد نشه کدها اجرا نمی شن. حالا اگه خواستی هیچ تکستی رو الزامی نکنی باید یکی از مقادیر رو با یه مقدار صحیح پر کنی و به رشته جستجوت بدی تا برنامه با مشکل مواجه نشه.
همونطور که قبلا هم گفتم:
می تونی به جای علامت = از عبارت Like برای پیدا کردن مقادیر مشابه استفاده کنی.
اگه مقدار ورودی عدد باشه، علامت های ' رو از دو طرف عبارت حذف کن.
mbza11 نوشته است:[code]
dim strSearch as string
if txtFName.text<>"" then
strSearch="FName=' & txtFName.text & "'"
else
exit sub
end if

سلام رفیق
به جای txtFName.text میزارم [Forms]![s].[n] که s=اسم فرم و n=نام ...
ولی موقع کامپایل خطا میده ...
راستی جای فقط FName تو خط سه باید اسم فیلدو با کروشه بزارم یا نه ؟
اگه بد متوجه شدم لطفا راهنماییم کن ...
سلام.
ظاهرا تو VBA داری می نویسی. (اگه اشتباه نکنم)
بهتر بود به جای نوشتن تو VBA از Query خود اکسس استفاده می کردی.

تو VBA باید کد زیر رو تو بخش کلیک باتن بنویسی (تو بخش کد نویسی):
کد:
Dim rs As Object
Dim strSearch As String
If Me![txtFName] <> "" Then
strSearch = "[FName]='" & Me![txtFName] & "'"
Else
MsgBox "The Field FName Data IS Null!"
Exit Sub
End If
If Me![txtLName] <> "" Then
strSearch = strSearch & " and [LName]='" & Me![txtLName] & "'"
End If
If Me![txtOtherField] <> "" Then
strSearch = strSearch & " and [OtherFieldName]='" & Me![txtOtherField] & "'"
End If

Set rs = Me.Recordset.Clone
rs.FindFirst strSearch
If Not rs.EOF Then Me.Bookmark = rs.Bookmark

فقط یادت باشه برای فیلدهای عددی باید علامت های ' رو برداری.
اگه یه وقتی خطا گرفتی، حداقل متن خطا رو بزار تا بینیم چی می گه.
سلام رفیق
من نمیدونستم که تو خود کوئری هم میشه دستور if
رو نوشت ... میشه کمکم کنید تا تو همون کوئری بنویسم دستورشو ....
کجای کوئری باید دستورو نوشت ....؟؟؟SadSadSad
سلام.
تو Query نمی تونی از دستور IF استفاده کنی.
برای اینکه برنامه با هرکدوم از تکست باکس ها جواب بده باید مقدار پیشفرض تکست باکس ها رو * بزاری تا اگه کاربری یک یا چند تا رو وارد نکرد برنامه کل اون فیلد رو در نظر بگیره و براساس بقیه مقادیر فیلتر کنه.
مثلا:
کد:
=  [forms]![Test].[ID1]
Like "*" & [forms]![Test].[ID2] & "*"
که Test اسم فرمت (Form) هست و ID1 و ID2 اسم تکست باکس هات که مقدار پیش فرض ID2 * هست ولی حتما مقدار ID1 توسط کاربر باید وارد بشه.
اینا رو باید تو بخش Query Designer و تو قسمت Criteria وارد کنی.
سلام mbza11
واقعا ازت ممنونم
بعد از مدتها بالاخره تونستم حلش کنم البته یا کمک شما و بقیه دوستان...
(; سلام بچه ها
واسه اینکه شکل * رو تو تکس باکسم نذارم تا کاربر نبینه اومدم از دستور زیر تو قسمت
Default Value استفاده کردم ولی جواب نمیده ..... سوالم اینه که آیا نوع دستور اشتباهه یا جای دستور ؟؟؟ AmazeAngryAmaze

کد :
iff(null;[text0]=*)h=

اگه میشه کمکم کنید .... SadSadConfused
سلام.
دقیقا کجا این دستور رو وارد می کنی؟
نقل قول: iff(null;[text0]=*)h=
این h این وسط چیکاره هست؟
صفحه‌ها: 1 2