نمایش سفارشات بین دو تاریخ

Learn65

Member
خسته نباشید
چه جوری می تونم توی دلفی سفارشات گرفته شده بین دو تاریخ را نمایش بدم
 

._._. RAM ._._.

New Member
در صورتی که پایگاه دادتون از نوع SQL ی هستش. پاسختون را صفحات لینکی که farhad110 معرفی کردند می تونید پیدا کنید و الا باید از دستورات و روش های متفاوتی برای جستجوی مورد نظرتون بهره ببرید.
 

farhad110

Member
در صورتی که پایگاه دادتون از نوع SQL ی هستش. پاسختون را صفحات لینکی که farhad110 معرفی کردند می تونید پیدا کنید و الا باید از دستورات و روش های متفاوتی برای جستجوی مورد نظرتون بهره ببرید.
خير دوست عزيز. دستورات sql مستقل از نوع ديتابيس هست. در صفحه اول تاپيك sql توضيح دادم.
 

._._. RAM ._._.

New Member
پاسخ farhad110 و HASHEMMOMEN

farhad110; گفت:
خير دوست عزيز. دستورات sql مستقل از نوع ديتابيس هست. در صفحه اول تاپيك sql توضيح دادم.

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

با توجه به پست HASHEMMOMEN مشخص نیست که ایشون از چه کامپوننت هایی برای برقراری اتصال با پایگاه دادشون بهره بردند. از طرفی طی روال اولیه کار با پایگاه های داده Paradox که خیلی از برنامه نویس ها هنوز هم از اون استفاده می کنند، برای اتصال به این پایگاه ها هنوز کامپوننت های BDE نیز مورد اسفاده قرار می گیرند. من و شما از کجا می دونیم که ایشون برنامشون را با ADO نوشتند یا با BDE که Query های تحت ADO را به ایشون معرفی کنیم یا دستورات و روش های دیگری که برای کار تحت BDE مناسب هستند؟

در اینکه SQL استاندارد تعیین شده و پشتیبانی شونده توسط بسیاری از پایگاه های داد هست، شکی نیست ولی حتما می دونید که در صورت استفاده ایشون از BDE در برنامشون SQL ی که معرفی نمودید به درد نمی خوره.

من هم پایگاه داده را سوال کردم تا کامپوننت مورد استفاده ایشون را حدس بزنم. چرا؟ چون اکثرا (حداقل در بدو برنامه نویسی) با انتخاب پارادوکس به سراغ BDE میرند، جمله من هم در واقع پرسشی در استفاده از ADO بود.

به هر حال HASHEMMOMEN جان همونطور که گفتم اگه پایگاه دادت را طوری به برنامه متصل کرده ای که با query های sql بشه بهش فرمان داد، پاسخت را در صفحات لینک داده شده توسط farhad110 می تونی پیدا کنی و الا بگو تا پاسخ مناسبت را بنویسم.
 

._._. RAM ._._.

New Member
پاسخ Hashemmomen

اگه با استفاده از ADO به پایگاه داده Access متصل شدید و از ADOًQuery استفاده کردید پاسخ خودتون را در مطالبی که farhad110 زحمتش را کشیدند جستجو کنید ولی اگه همچنان به لحاظ استفاده از برخی کامپوننت ها و یا... دنبال راه حل متفاوتی هستید باید عرض کنم که راه دیگه هم وجود داره و اون استفاده از فیلترها هستش.

به این صورت که شما ویژگی Filter شیء Table یا AdoTable خودتون را طوری تنظیم می کنید که جدول پایگاه داده بر اساس تاریخ های بازه مشخصی فیلتر بشه و ویژگی Filtered را True می کنید تا اعمال بشه.

برای مثال دو تاریخ مشخص کننده بازه زمانی را از دو کنترل Edit که روی فرمتون هست میگیرید و یک کلید هم برای اعمال جستجوی مورد نظر کاربر طبق این شرایط گذاشتید و یک کلید هم برای لغو فیلتر از روی جدول گذاشتید.

حالا (برای مثال) دستوراتی که باید در onClick کلید جستجوتون بنویسید به این شرحه :
PHP:
table1.Filter:='StartDate>'+QuotedStr(Edit1.Text)+' and EndDate<'+QuotedStr(Edit2.Text);
table1.Filtered:=true;

این هم دستور زیر کلید لغو فیلتر:
PHP:
table1.Filter:='';
table1.Filtered:=false;

نکته: StartDate نام فیلد تاریخ آغاز و EndDate نام فیلد تاریخ پایان در جدول شما فرض شده. اگر فقط یک فیل تاریخ داری نام هر دو را یکی کن و عنوانش را به نام فیلد تاریخ در جدولت تغییر بده.

نکته: در این روش به لحاظ مقایسه رشته ای، باید تاریخ هاتون را با تعداد ارقام و حروف یکسانی وارد کنید. برای مثال 1386/12/12، 1386/05/01 و ... . ورود تاریخ هایی مثل 1386/5/1 به چرخه این فیلترینگ می تونه نتیجه اون را از دید مقایسه تاریخ ها با هم، دچار مشکل کنه.

نکته: میتونی بجای علامت < و > از = یا => یا =< نیز استفاده کنی.

نکته: روش کد نویسی فوق برای ویژگی فیلتر که در بالا آوردم از خلاصه ترین و بهترین روش های موجود برای این گونه جاها ستش که پیچیدگی کوتیشن های اون اذیت کنندست. البته روش Format هم وجود داره که اون هم برای مقادیر عددی در پایگاه داده پیشنهاد میشه. برات یه مثال هم با Format در زیر قرار دادم (من شخصا روش اول را که برای انواع مختلف داده کاربرد داره و طی تجربه شخصی خودم بهش رسیدم پیشنهاد می کنم) :
PHP:
var s:string;
begin
s:='MyNumber>%s and MyNumber<%s';
s:=Format(s,[edit1.text,edit2.text]);
Table1.Filter:=s;
table1.Filtered:=true;

نکته آخر: پیشنهاد می کنم کارتون را از شیوه های فوق به استفاده از کامپوننت هایی که قابلیت استفاده از Query های زبان SQL را بهتون میده (ADOQuery) منتقل کنید.
 

farhad110

Member
از طرفی طی روال اولیه کار با پایگاه های داده Paradox که خیلی از برنامه نویس ها هنوز هم از اون استفاده می کنند، برای اتصال به این پایگاه ها هنوز کامپوننت های BDE نیز مورد اسفاده قرار می گیرند. من و شما از کجا می دونیم که ایشون برنامشون را با ADO نوشتند یا با BDE که Query های تحت ADO را به ایشون معرفی کنیم یا دستورات و روش های دیگری که برای کار تحت BDE مناسب هستند؟
RAM عزيز مطمئنا در تب BDE جزء ساخت Query رو ديده ايد، اين جزء ساخت از كلاس DBTable هست و از دستورات sql هم به راحتي پشتيباني ميكنه. كافيه در آموزشهايي كه دادم به جاي adoquery.sql بنويسيد query.sql .
موفق باشيد
 

._._. RAM ._._.

New Member
پاسخ farhad110

farhad110; گفت:
RAM عزيز مطمئنا در تب BDE جزء ساخت Query رو ديده ايد، اين جزء ساخت از كلاس DBTable هست و از دستورات sql هم به راحتي پشتيباني ميكنه. كافيه در آموزشهايي كه دادم به جاي adoquery.sql بنويسيد query.sql .
موفق باشيد

farhad110 حرفی نیست. من که می گم پشتیبانی SQL به دلیل استاندارد بودنش در اکثر پایگاه های داده امروزی همه جا دیده میشه ولی گویا نتونستم منظور خودم را اون طور که باید بیان کنم و متوجه منظور من نشدید.

ببینید، صحبت من اینو میگه که باید دید برنامه نویس به چه سبکی کدنویسی می کنه، از چه پایگاه داده ای استفاده میکنه و چطور با پایگاه دادش صحبت میکنه. اصلا query های sql را بلده؟ یا مایله با متدهای کلاس های غیر SQL ای تعریف شده برای ارتباط با پایگاه داده به تعامل با پایگاه دادش بپردازه.

فرض کنید برنامه نویسی در پروژه خودش از BDE استفاده کرده و تمام کدهای پایگاه دادش را روی اشیاء کلاس TTable نوشته و حالا برای حل مشکل بالا اومده اینجا و سوال می کنه. خوب ما اول باید ببینیم طرف چه طور برنامه نویسی میکنه، چی بلده. چطور با پایگاه دادش حرف میزنه و...

کار با دستورات دلفی را دلفی کارها خوب متوجه می شوند ولی ممکنه دلفی کاری SQL ندونه یا بدونه ولی ساختار پروژه ای که ساخته اصلا با query نبوده. در اینجا بهتره که راه حلی غیر از query را بهش معرفی کنیم. من هم برنامه های متعددی با BDE ، ADO ، با Query و بدون Query نوشتم . پس راه حل را باید با توجه به نیاز و دانش برنامه نویس بهش داد.

این جمله ای هستش که در Help خود دلفی در مورد استفاده از کامپوننت Query اومده:

Note: TQuery is of particular importance to the development of scalable database applications. If there is any chance that an application built to run against local databases will be scaled to a remote SQL database server in the future, use TQuery components from the start to ensure easier scaling later.

اگر برنامه نویس از ابتدا با query ها ساختار صحبت با پایگاه دادش را بنا کنه راهنمایی های شما بسیار کاربردی و مفید خواهد بود ولی در قالب یک پروژه فاقد query، بدون آگاهی از شیوه برنامه نویسی و دانش برنامه نویس مربوطه به نظر من صحیح نیست. حداقل در فرم قبلی سبک صحبت با پایگاه داده یکسان باقی می مونه و دچار چندگانگی نمیشه.

با این حال طبق پیشنهاد من هم استفاده از query های sql از هر جهت مناسب تره (فکر نمی کنم لازم باشه از انعطاف و قدرت sql در اینجا صحبتی به میان بیارم) ولی یکپارچکی کدنویسی ها باید حفظ بشه اگه با query می خواهیم کدنویسی کنم همه را با sql پیش بیریم، نه مقداری با روش x، مقداری با روش y ,... . این اصولی تر و حرفه ای تره.

موفق باشید.
 

farhad110

Member
فرض کنید برنامه نویسی در پروژه خودش از BDE استفاده کرده و تمام کدهای پایگاه دادش را روی اشیاء کلاس TTable نوشته و حالا برای حل مشکل بالا اومده اینجا و سوال می کنه. خوب ما اول باید ببینیم طرف چه طور برنامه نویسی میکنه، چی بلده. چطور با پایگاه دادش حرف میزنه و...
اين شد حرف اساسي. مشكل در نوع سوال پرسيدن و پاسخ بعدي شما بود:
پایگاه دادتون چیه؟
در صورتی که پایگاه دادتون از نوع SQL ی هستش. پاسختون را صفحات لینکی که farhad110 معرفی کردند می تونید پیدا کنید و الا باید از دستورات و روش های متفاوتی برای جستجوی مورد نظرتون بهره ببرید
بهتر بود مي پرسيديد از چه ابزراي براي ارتباط با پايگاه داده استفاده كرديد.
موفق باشيد
 

._._. RAM ._._.

New Member
farhad110; گفت:
اين شد حرف اساسي. مشكل در نوع سوال پرسيدن و پاسخ بعدي شما بود:


بهتر بود مي پرسيديد از چه ابزراي براي ارتباط با پايگاه داده استفاده كرديد.
موفق باشيد

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

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

جدیدترین ارسال ها

بالا