PDA

View Full Version : اگرexpire date يكي از كارتهاي افرادكوچكتراز تاريخ امروز بودبرنامه هنگام لودشدن اخطار بدهد



ali_abbasi22145
سه شنبه 10 اردیبهشت 1387, 15:56 عصر
سلام
من مي خواهم اگر expire date يكي از كارتهاي افراد كوچكتر از تاريخ امروز بود برنامه هنگام لود شدن يك اخطار بدهد و بعد اجرا شود.
البته يك query نوشتم كه ركوردهايي (كارتهاي افراد) كه expire date يكي از كارتهاي افراد كوچكتراز تاريخ امروز باشد در يك گريد نشان مي دهد.

Amir_Safideh
سه شنبه 10 اردیبهشت 1387, 16:29 عصر
نمیدونم که درست متوجه منظور شما شدم یا نه . شما میتونید توی رویداد OnCreate مربوط به فرم اصلی برنامت این شرط رو بزاری و در صورت برقرار شدن شرط ابتدا پیغام خطا نمایش داده میشه بعد از اینکه کاربر اون رو Ok کرد برنامه اجرا میشه .

if FDate < Date then
ShowMessage('The date is expired');

شما مقدار expire date رو به متغیر FDate بدید( متغییر TDate).
-------------
موفق باشید .

SYNDROME
سه شنبه 10 اردیبهشت 1387, 21:57 عصر
بهتر است هر بار موقع اتصال کاربر به برنامه تاریخ و ساعت اتصال ذخیره شود تا کاربر با جابجایی آن امکان فرار از خطا را ایجاد نکند.
موفق باشید

ali_abbasi22145
چهارشنبه 11 اردیبهشت 1387, 12:44 عصر
نمیدونم که درست متوجه منظور شما شدم یا نه . شما میتونید توی رویداد OnCreate مربوط به فرم اصلی برنامت این شرط رو بزاری و در صورت برقرار شدن شرط ابتدا پیغام خطا نمایش داده میشه بعد از اینکه کاربر اون رو Ok کرد برنامه اجرا میشه .

if FDate < Date then
ShowMessage('The date is expired');

شما مقدار expire date رو به متغیر FDate بدید( متغییر TDate).
-------------
موفق باشید .

سلام
من حدود 20000 ركورد دارم كه هر ركورد مشخصات فردي مي باشد كه يك فيلدش تاريخ اعتبار كارت شخص است. پس من 20000 تاريخ اعتبار كارت دارم كه فقط يكي از اين تاريخ ها كوچكتر از امروز باشد پيام خطا بدهد و پس كد شما كار نمي كند.
ضمنا خود كاربرم مي خواهد كه اين خطا را برنامه به او يادآوري كند و كاربر قصد رفع خطا را ندارد!

hadisalahi2
چهارشنبه 11 اردیبهشت 1387, 14:24 عصر
سلام
داخل دستور اس کیو الی که مینویسی تاریخ امروز رو با تابع Now ترکیب کن .
البته بهتره یک فیلد دیگه هم به جدولت اضافه کنی که هر روز ابتدای ورود کاربر فیلد اعتبارش رو چک کنه و اگه اعتبارش تموم شده بود به اون پیغام بده.
اگه برنامه شما دارای چندین کاربره ، بهترین حالت چک کردن ، زمان Login کردن کاربره

Amir_Safideh
چهارشنبه 11 اردیبهشت 1387, 18:55 عصر
سلام
من حدود 20000 ركورد دارم كه هر ركورد مشخصات فردي مي باشد كه يك فيلدش تاريخ اعتبار كارت شخص است. پس من 20000 تاريخ اعتبار كارت دارم كه فقط يكي از اين تاريخ ها كوچكتر از امروز باشد پيام خطا بدهد و پس كد شما كار نمي كند.
ضمنا خود كاربرم مي خواهد كه اين خطا را برنامه به او يادآوري كند و كاربر قصد رفع خطا را ندارد!
خوب در اونصورت شما بهتره از دستورات Select مربوط به دیتابیسها استفاده کنید . تاریخ روز رو در قالب یک پارامتر به کوئری ارسال کنید و در قسمت Where مربوط به کوئری شرط چک کرد تاریخ رو قرار بدید . در صورتی که تعداد رکورد بازگشتی کوئری بیشتر از صفر بود پیغان خطا رو نشون نمایش بدید و اطلاعات هر رکورد مربوط به این کوئری رو هم از دیتاست بگیرید و نمایش بدید .
-------------
موفق باشید .

SYNDROME
چهارشنبه 11 اردیبهشت 1387, 21:23 عصر
تقریباً چنین کدی می شود.


ADO.SQL.Clear;
ADO.SQL.Text := 'Select * From Tbl_Test Where EDate>'''+Date+'''';
ADO.Open;
IF Not ADO.IsEmpty Then
// ShowMessage;

مقدار Dateتاریخ مورد جستجو است.
موفق باشید

ali_abbasi22145
پنج شنبه 12 اردیبهشت 1387, 10:50 صبح
سلام
داخل دستور اس کیو الی که مینویسی تاریخ امروز رو با تابع Now ترکیب کن .
البته بهتره یک فیلد دیگه هم به جدولت اضافه کنی که هر روز ابتدای ورود کاربر فیلد اعتبارش رو چک کنه و اگه اعتبارش تموم شده بود به اون پیغام بده.
اگه برنامه شما دارای چندین کاربره ، بهترین حالت چک کردن ، زمان Login کردن کاربره

سلام دوست من
من توضيح دادم كه يك فيلد براي ركوردهايم دارم كه تاريخ اعتبار كارتهاي پرسنلي PVC است كه اگر اعتبار تمام شد دوباره كاربرم كارت PVC آن شخص چاپ مي كند. (يك فيلدي است مثلا نام پدر)، نه اينكه زمان Login کردن کاربره رو چک کنه و اگه اعتبارش تموم شده بود به اون پیغام بده!

ali_abbasi22145
سه شنبه 17 اردیبهشت 1387, 14:38 عصر
سلام
من تاتاريخ امروز 2008/05/04 را توانستم چك كنم
حال جاي ان تاريخ مي خواهم چيزي مثل Today بگذارم اسكيوال معادلي براي روز جاري ندارد؟
select expire_date_card from cardtable where expire_date_card < '2008/05/04'

Mahyaa
سه شنبه 17 اردیبهشت 1387, 19:52 عصر
....


حال جاي ان تاريخ مي خواهم چيزي مثل Today بگذارم اسكيوال معادلي براي روز جاري ندارد؟
select expire_date_card from cardtable where expire_date_card < '2008/05/04'




getdate()

ali_abbasi22145
چهارشنبه 18 اردیبهشت 1387, 09:47 صبح
كد با كمك دوست خوبمان اين شد:
اما فكر مي كنم چون تاريخ را به صورت datetime است تاريخ امروز را هم اشباه مي كند (كه حتي چند ثانيه قبل گرفتم) كوچكتر از اين تاريخ مي شود و مي خواهم تاريخ امروز جدا از ساعتش مقايسه شود.

()select expire_date_card from cardtable where expire_date_card <= getdate

tefos666
چهارشنبه 18 اردیبهشت 1387, 10:06 صبح
با تشکر از شما دوست عزیز که بعد از اینکه جواب خودت رو پیدا کردی لا اقل انصاف داشتی و قوانین سایت رو رعایت کردی و جوابی که مشکلت رو حل کرد رو تو تاپیک گذاشتی .

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


بازم ممنونم :متعجب:

Mahyaa
چهارشنبه 18 اردیبهشت 1387, 10:47 صبح
من برای حذف قسمت Time دو تا Convert میکنم . مثلا :


Convert(DateTime, Convert(VarChar(10),GetDate(),120),120)

این DateTime برمیگردونه .

ali_abbasi22145
چهارشنبه 18 اردیبهشت 1387, 10:58 صبح
سلام

1-خوب متوجه نشدم! اين كد پايين منطقي بنظر نمي رسد و خطا مي دهد:

select expire_date_card from cardtable where expire_date_card <= Convert(DateTime, Convert(VarChar(10),GetDate(),120),120)

لطفا كم واضحتر بفرماييد.

2-كدي نيست كه بگوييم كوچكتر از امروز + 1 روز ديگر؟ اگر باشد مشكلم به كل حل مي شود.

Mahyaa
چهارشنبه 18 اردیبهشت 1387, 11:12 صبح
كدي نيست كه بگوييم كوچكتر از امروز + 1 روز ديگر؟ اگر باشد مشكلم به كل حل مي شود.


DateAdd(day,1,GETDATE())


خوب متوجه نشدم! اين كد پايين منطقي بنظر نمي رسد و خطا مي دهد

منظور من از پست قبلی این بود که اول تاریخ و زمان جاری رو به Varchar تبدیل کنید بعد دوباره به DateTime تبدیل کنید . موقع تبدیلش به Varchar قسمت زمان را حذف کردیم و موقع تبدیل اون به DataTime زمان رو صفر کردیم به اصطلاح همون نیمه شب .

ali_abbasi22145
چهارشنبه 18 اردیبهشت 1387, 11:50 صبح
سلام وتشكر
ببخشيد: كدي با كوچكتر از امروز - 1 حل شد.

select expire_date_card from cardtable where expire_date_card < DateAdd(day,-1,GETDATE())