PDA

View Full Version : فیلتر کردن را بر اساس سه متغیر



jamjid
شنبه 09 دی 1385, 10:08 صبح
توی بانک اطلاعاتی (access) من یه فیلد نام و یه فیلد تاریخ است که نوع هر دو آنها text می باشد .می خواهم امکانی را در اختیار کاربر قرار دهم که نام یه شخص را از تاریخ (بر فرض 1385/10/7)تا تاریخ (1385/10/10) جستجو کند و اگر در این تاریخ ها نام فرد بود نشان بدهد. یعنی فیلتر کردن را بر اساس سه متغیر انجام دهد .
همه کارها انجام انجام شده فقط توی این مورد به مشکل بر خوردم یادآور می شم که نوع فیلد تاریخ text می باشد و بانک اطلاعاتی هم access می باشد.
منتظر جواب هستم
:افسرده:

dkhatibi
شنبه 09 دی 1385, 11:45 صبح
تو Accesss نمی دونم اما قانونش AND کردن سه تا ییشه

mzjahromi
شنبه 09 دی 1385, 13:57 عصر
Select * From TableName Where Name='your name' And date1<=:D2 And Date1>=:D1

اگر منظورتون رو درست فهمیده باشم

jamjid
سه شنبه 12 دی 1385, 19:26 عصر
if (combobox1.Text='') and (edit2.Text='') then
form2.ADOTable1.Filter:=' Date > ' + #39 + Edit1.Text + #39 + ' and Date < ' + #39 + Edit3.Text + #39;

if ComboBox1.Text<>'' then
form2.ADOTable1.Filter:=' dname = ' + #39 + ComboBox1.Text + #39 +' and Date > ' + #39 + Edit1.Text + #39 + ' and Date < ' + #39 + Edit3.Text + #39;

if Edit2.text <>'' then
form2.ADOTable1.Filter:=' mname = ' + #39 + edit2.Text + #39 +' and Date > ' + #39 + Edit1.Text + #39 + ' and Date < ' + #39 + Edit3.Text + #39;

Form2.ADOTable1.Filtered:=true;
من خودم از این روش رفتم ولی فقط روزهایی راکه برابر با تاریخ وارده است را می آورد. و مابین دو تا تاریخ را نمی آورد.

اَرژنگ
سه شنبه 12 دی 1385, 21:00 عصر
قبل از اینکه به آخرین خط برسد،
form2.ADOTable1.Filter
چیه؟

jamjid
یک شنبه 17 دی 1385, 10:39 صبح
عزیزان ببینید من 4 تا تکست باکس دارم . دو تا تاریخ که کاربر با کلیک به روی تقویم تاریخ روز انتخاب شده در تکست باکس تاریخ اول نوشته می شود برای تاریخ دوم هم به همین ترتیب
1 تکست باکس نام مدیران دارم و 1 تکست باکس نام کاربران که کاربر وارد میکند و نام مدیران از طریق کامبو باکس انتخاب می شود .
و یه جدول که روز و ساعات کاری همه را ثبت میکند. می خواهم کاربر جستجو کند که مثلا مدیر . ... . . از تاریخ ..... تا تاریخ ..... چه روز هایی کار کرده فقط همین
اون کد بالا هم یه کمی مبتدی نوشتم اگه کد بهتری دارید ممنون میشم کمکم کنید

Saeid59_m
یک شنبه 17 دی 1385, 11:03 صبح
سلام
دوست عزیز با داشتن دوتاریخ متنی به هیچ وجه نمی توانی تاریخ های مابین آنها را با فیلتر کردن بدست بیاوری . اصلاً نوع تاریخ را در بانکهای اطلاعاتی برای همین مسئله بوجود آوردند . اما این نوع برای تاریخ های میلادی کارآمد است و برای تاریخ های شمسی مشکل دارد .
پس راه حل چیست ؟

یک فیلد دیگر بغیر از فیلد تاریخ ایجاد کن و اطلاعات تاریخ را به این صورت در آن قرار بده

مثلاً تاریخ 85/5/2 در این فیلد به صورت 850502 از نوع عددی قرار می گیرد .

حالا توی فیلتر بر اساس این فیلد جدید جستجو کن

موفق باشی

حرفه ای
سه شنبه 19 دی 1385, 07:48 صبح
دوست عزیز

خودتو گیج نکن ( یک سوال آسان و یک جواب آسان )




Select * From TableName Where Name='your name' And date1<=:D2 And Date1>=:D1



جهرمی عزیر درست نوشته SQL زبان استاندارد پرس و جو از بانکهای اطلاعاتی فقط چند اصلاحیه کوچک با احترام به جهرمی عزیز




'Select * From TableName Where (Name='+QuetedStr(Edit1.Text))+' And (date1<='+QuetedStr(MaskEdit1.Text)+') And( Date1>='+QuetedStr(MaskEdit2.Text)+')'


نکته 1 : جهرمی عزیز فراموش کرده بود پرانتز را بین شرطها بگذاره برای پرس و جوهای دارای سه یا بیشتر شرط می بایست پرانیز گذاشت
نکته 2 : دستور QuetedStr برای فیلدهای Text به کار می ره که دو عدد ' را بین نوشته های ما قرار می ده
نکته 3 : من نام را از Edit1 و تاریخ را از MaskEdit1 و MaskEdit2 خوندم که شما می تونید با توجه به برنامه اونها را تغییر بدی
نکته 4 : همانطور که می دونی می تونی از دو آبجکت BDE و ADO استفاده کنی که نحوه استفاده اون به صورت زیره :



Query1.Active:=False;
Query1.Sql.Clear;
Query1.Sql.Add('دستورات SQL')
Query1.Active:=True;


امیدوارم مورد استفاده قرار بگیره

با تقدیم احترامات به همه دوستان :چشمک:

mzjahromi
سه شنبه 19 دی 1385, 11:54 صبح
دوست عزیز

خودتو گیج نکن ( یک سوال آسان و یک جواب آسان )



جهرمی عزیر درست نوشته SQL زبان استاندارد پرس و جو از بانکهای اطلاعاتی فقط چند اصلاحیه کوچک با احترام به جهرمی عزیز




'Select * From TableName Where (Name='+QuetedStr(Edit1.Text))+' And (date1<='+QuetedStr(MaskEdit1.Text)+') And( Date1>='+QuetedStr(MaskEdit2.Text)+')'


نکته 1 : جهرمی عزیز فراموش کرده بود پرانتز را بین شرطها بگذاره برای پرس و جوهای دارای سه یا بیشتر شرط می بایست پرانیز گذاشت
نکته 2 : دستور QuetedStr برای فیلدهای Text به کار می ره که دو عدد ' را بین نوشته های ما قرار می ده
نکته 3 : من نام را از Edit1 و تاریخ را از MaskEdit1 و MaskEdit2 خوندم که شما می تونید با توجه به برنامه اونها را تغییر بدی
نکته 4 : همانطور که می دونی می تونی از دو آبجکت BDE و ADO استفاده کنی که نحوه استفاده اون به صورت زیره :



Query1.Active:=False;
Query1.Sql.Clear;
Query1.Sql.Add('دستورات SQL')
Query1.Active:=True;


امیدوارم مورد استفاده قرار بگیره

با تقدیم احترامات به همه دوستان :چشمک:

چی بهت بگم آخه

حرفه ای
سه شنبه 19 دی 1385, 16:54 عصر
چی بهت بگم آخه

من می گم مخلص همه اهل دانش بخصوص تمام برنامه نویسها هستم:بوس: :چشمک: