نمایش نتایج 1 تا 4 از 4

نام تاپیک: شمارش رکوردهای که از تاریخ ثبت آنها یک ماه گذشته است در یک کوئری

  1. #1

    شمارش رکوردهای که از تاریخ ثبت آنها یک ماه گذشته است در یک کوئری

    با سلام
    من یک کوئری میخواهم بسازم به این شکل که یک فیلدی به اسم تاریخ ثبت در بانک می باشد حال میخواهم کوئری من تمام رکوردهایی که یک ماه - دو ماه - سه ماه و ... از تاریخ ثب آنها گذشته است را بشمارد. نسبت به تاریخ روز
    یعنی چیزی شبیه کد زیر
    doQuery1.SQL.Clear;
    adoQuery1.SQL.Add('select count(no)from table1');
    adoQuery1.SQL.Add('WHERE (تاریخ روز - date_sabt >') + '30')')
    adoQuery1.open

    که در آن تاریخ روز از یک shdatepiker روی فرم باشد و date_sabt نیز فیلد تاریخ ثبت می‌باشد .

    با تشکر از همه دوستان
    داود

  2. #2
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    شما اول فیلد تاریختان را می سازید(Date)فیلد از نوع رشته است.
    2-حال شما می توانید با دستورات شرطی که خودتان ذکر کردید عمل مقایسه را انجام دهید.
    مثال تاریخ ثبت 30/1/86
    تاریخ امروز 31/2/86
    رکوردهایی که یک ماه از تاریخ ثبت آنها گذشته است.
    تاریخ امروز را با یک تابع یک ماه عقب می کشید(13/1/86)
    حال با شرط زیر رکوردهایی که یک ماه از ثبت آنها گذشته است را نمایش دهید.
    Select *
    From Tbl_Test
    Where Date <='86/1/31'

  3. #3
    با تشکر از شما دوست عزیبه خاطر تحلیل زیبا
    کد اصلاح شده:
    adoQuery1.SQL.Clear;
    adoQuery1.SQL.Add('select count(no)from permit_all');
    adoQuery1.SQL.Add('WHERE date_ss BETWEEN :Date1 AND :Date2'+
    ' and '+ ' unit like '+QuotedStr('%'+ComboBox1.text+'%')+
    ' and '+ ' amaliat like '+QuotedStr('mec')+
    ' and '+ 'date_ss>= '+QuotedStr(edit1.Text));
    adoQuery1.Parameters.ParamByName('Date1').Value:= shdatetostr(exShDatePicker1.Date);
    adoQuery1.Parameters.ParamByName('Date2').Value:= shdatetostr(exShDatePicker2.Date);
    edit1.Text:=shdatetostr(ShDatePicker1.Date-30);
    adoQuery1.Open;

    حال من شرط را از قسمت where برداشتم و در در قسمت sql.add گذاشتم به صورت زیر:
    adoQuery1.SQL.Add('select count(case when(no>0 and date_sabt >=''1385/12/20'') then no else null end )'+ ...

    جواب میده و درسته ولی وقتی بجای 1385/12/20 از یک ورودی در فرم به نام edit1 استفاده میکنیم یعنی به صورت زیر:
    adoQuery1.SQL.Add('select count(case when(no>0 and date_sabt >=edit1.text) then no else null end )'+ ...

    خطا میدهد لطفا راهنمایی فرمائید.

    با تشکر
    داود

  4. #4
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    حالا خط رو به این صورت بنویس پسر خوب

    adoQuery1.SQL.Add('select count(case when(no>0 and date_sabt >='''+edit1.text+''') then no else null end )'+ ...


    اگر درست نشد پیغام خطا را بنویس.
    آخرین ویرایش به وسیله m-khorsandi : پنج شنبه 23 فروردین 1386 در 19:17 عصر دلیل: از تگ Code برای خوانایی کدتون استفاده کنید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •