PDA

View Full Version : گزارش از تاریخ ........... تا تاریخ .............



b_mohammadpoor
یک شنبه 02 آذر 1382, 09:03 صبح
سلام به همگی

من یک برنامه با دلفی و بانک اکسس نوشتم که نیاز به یک گزارش در یک بازه زمانی داره مثلاً فروش از تاریخ تا تاریخ ،
فیلد تاریخ را هم به صورت کارکتری گرفته ام (12/12/1382) ولی هرکار میکنم نمیتونم رکوردها رو در اون بازه زمانی فیلتر کنم یا انتخاب کنم لطفا به من بگید چکار کنم ؟؟؟ :(

Gladiator
یک شنبه 02 آذر 1382, 12:34 عصر
باید تاریخ رو از نوع کارکتری به نوی تاریخ تبدیل کنی .

مثلا با StrToDate میتونی یک رشته استرینگ رو به نوع Date تبدیل کنی . در مجموع کار شما از پایه مشکل داره نباید تاریخ رو کارکتری طراحی میکردی .

موفق باشی .

Gladiator
یک شنبه 02 آذر 1382, 12:38 عصر
باید یه توصیه هم بکنم :

برای تاریخ توی دلفی هیچ راهی بهتر و ساده تر و شکیل تر از استفاده از کامپوننت تاریخ فارسی آقای امیر رحیمی فراحانی نیست .

توی سایت http://www.farsicomponents.com میتونی قابلیتهاشو چک کنی و یه نسخه نمایشی دریافت کنی .

موفق باشی .

Behzad_Asharkhan
یک شنبه 02 آذر 1382, 12:51 عصر
سلام
من از توابع آقای DelphiArea استفاده میکنم و مشکلی ندارم. شما هم امتحان کنید. 8)
موفق باشی

(امید)
یک شنبه 02 آذر 1382, 13:14 عصر
با سلام

در این مورد بحث خوبی داشتیم.
تو قسمت access می تونید پیدا کنید مبحث تاریخ و لاغیر...

omidsm
یک شنبه 02 آذر 1382, 13:49 عصر
می تونید یک فیلد محاسباتی در اکسس تعریف کنید که رشته رابه
عدد تبدیل کند مثلا
"10/10/1381" را به 13811010 تبدیل کند حال می توانید با این فیلد کار کنید

JavanSoft
دوشنبه 03 آذر 1382, 01:28 صبح
اگر دوست داشتید این کامپوننت تاریخ رو هم ببین ... یکی از توابع ان تفریق و دیگر اشتراک و اجتماع و غیره است
Www.JavanSoft.com

SReza1
دوشنبه 03 آذر 1382, 06:04 صبح
آقا gladiator
مطمئنی راهی که شما میگی بهترین راهه؟؟؟؟؟ :?:
آیا همه روشها رو دیدی؟

Gladiator
دوشنبه 03 آذر 1382, 09:27 صبح
تقریبا

شما این کامپوننت رو دیدی ؟ من قصد تبلیغ کردن ندارم ولی واقعا کامل و بی دردسره .

b_mohammadpoor
دوشنبه 03 آذر 1382, 13:12 عصر
آخرش من نفهمیدم چه کار کنم چون من برنامه را نوشتم و به استفاده کننده تحویل دادم و حالا میخواهم گزارشهایش را طراحی کنم :wink:

Gladiator
سه شنبه 04 آذر 1382, 14:40 عصر
من برنامه را نوشتم و به استفاده کننده تحویل دادم و حالا میخواهم گزارشهایش را طراحی کنم

پس به خدا توکل کن :mrgreen:

سه شنبه 04 آذر 1382, 16:03 عصر
دوست عزیز
تا جایی که من میدونم توی دلفی میتونیم دو تا رشته رو با هم مقایسه کوچکتر و بزرگتر و یا مساوی بکنیم
به عنوان مثال رشته 'ali' از رشته 'morteza' کوچکتر است یعنی در حقیقت رشته به یک عدد که محصول کد تک تک کاراکتر های رشته است در یک مقایسه تبدیل میشه .
من اینو در دستور رنج در table و query استفاده کردم جواب داده
......................................
به امید روزی که ایران از نظر کامپیوتر به خدایی برسد . با تلاش تمام برنامه نویسان و علاقه مندان به کامپیوتر در این مرزو بوم

omidsm
چهارشنبه 05 آذر 1382, 14:10 عصر
دوست عزیز
تا جایی که من میدونم توی دلفی میتونیم دو تا رشته رو با هم مقایسه کوچکتر و بزرگتر و یا مساوی بکنیم


دوست عزیز شما فکر می کنید برای تاریخ 10/9/1382 و 10/11/1382 چه جوابی می دهد؟
چون اگر با این راه حل می شد دلفی خود از این راه استفاده می کرد
و چون این ساختار برای میلادی طراحی شده تنها راه که به نظر من می رسد آن است که در بالا
اشاره کردم
ویا ساختاری شبیه تاریخ دلفی برای شمسی طراحی کنیم که من در حال انجام آن هستم

و به امید روزی که ....

JavanSoft
چهارشنبه 05 آذر 1382, 22:26 عصر
یکی از توابعی که در کامپوننت تاریخ اینجانب تابعی بنام CompleateDate است که با در یافت یک تاریخ فارسی معادل صحیح انر برمی گرداند مثلا
82/1/1 به 1382/01/01
1382/01/1 به 1382/01/01
از این راه می توانید کلیه مقایسه ها را انجام دهید

saeed_d
پنج شنبه 06 آذر 1382, 08:39 صبح
من از این روش استفاده می کنم
البته از اساتید محترم هم خواهشمندم که اگه ممکنه نظر خودشونو بدن 8)
در کنار هر تاریخ یک فیلد از نوع عددی دارم که با روش زیر مقدار آنرا پر می کنم


dday1:=y*366+(m-1)*31+d;
if m>7 then
dday1:=dday1-(m-7);

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

Gladiator
پنج شنبه 06 آذر 1382, 08:55 صبح
سعید جون این روش فکر میکنم برای فیلتر کردن یه خورده مشکل باشه .

چرا که این دوستمون میخواد تاریخهای خاصی رو فیلتر کنه . مثلا از اول شهریور ماه تا 7 شهریور ماه . توی روش شما باید هر تاریخی رو اول به یک عدد تبدیل کرد که توی فیلتر کردن یه خورده مشکل میشه .

البته این نظر منه .
موفق باشید .

روشی که آقای وکیلی اشاره کرده هم بد چیزی نیست . خیلی هم جالبه .

saeed_d
پنج شنبه 06 آذر 1382, 09:03 صبح
سعید جون این روش فکر میکنم برای فیلتر کردن یه خورده مشکل باشه .

چرا که این دوستمون میخواد تاریخهای خاصی رو فیلتر کنه . مثلا از اول شهریور ماه تا 7 شهریور ماه . توی روش شما باید هر تاریخی رو اول به یک عدد تبدیل کرد که توی فیلتر کردن یه خورده مشکل میشه .

البته این نظر منه .
موفق باشید .

روشی که آقای وکیلی اشاره کرده هم بد چیزی نیست . خیلی هم جالبه .
گلادیاتور جان سلام
از ارسال نظرتان متشکرم
می شه بگین تو فیلتر چه مشکلی پیش میاد؟

پنج شنبه 06 آذر 1382, 11:32 صبح
دوست عزیز
تا جایی که من میدونم توی دلفی میتونیم دو تا رشته رو با هم مقایسه کوچکتر و بزرگتر و یا مساوی بکنیم


دوست عزیز شما فکر می کنید برای تاریخ 10/9/1382 و 10/11/1382 چه جوابی می دهد؟
چون اگر با این راه حل می شد دلفی خود از این راه استفاده می کرد
و چون این ساختار برای میلادی طراحی شده تنها راه که به نظر من می رسد آن است که در بالا
اشاره کردم
ویا ساختاری شبیه تاریخ دلفی برای شمسی طراحی کنیم که من در حال انجام آن هستم

و به امید روزی که ....
.............
سلام دوست عزیز
اگه تاریخ رو به صورت 10/09/1382 وارد کنی مقایسه رو درست انجام میده
.. به امید روزی که ایران از نظر کامپیوتر خدایی کند . با همت همه برنامه نویسان و علاقه مندان به کامپیوتر

JavanSoft
پنج شنبه 06 آذر 1382, 13:02 عصر
یکی دیگر از توابع همان کامپوننت تابع تبدیل یک تاریخ به معادل عددی با توجه به فرمت صحیح ان است

Gladiator
پنج شنبه 06 آذر 1382, 22:19 عصر
آقا سعید با سلام

من چون برای تاریخ فارسی با اون کامپوننت تاریخ فارسی آقای رحیمی کار میکنم یکم تنبل و تن پرور شدم :mrgreen:

با روش شما باید اول یک رنج تاریخ که مشخص میشه به عدد تبدیل بشه و بعد فیلتر ولی با اون کامپوننت هیچ کار خاصی لازم نیست و فقط 2 خط فیلتر ساده مینویسی و تمام . توی برنامه نویسی هم هر چی کار کمتری انجام بدی و نتیجه بهتری بگیری هنر کردی :mrgreen: و از نظر وقت و انرژی هم صرفه جویی کردی .

به هر حال اگر خودت فیلتر بین 2 تا تاریخ رو هم باهاش امتحان کردی توضیحشو بنویس تا این دوستمون هم استفاده کنه .

موفق باشی .

SyntaxCheck
جمعه 07 آذر 1382, 17:27 عصر
سلام
مقایسه دو رشته از سمت چپ انجام میشه و هیچ مشکلی نداره.سال در سمت چپ و ماه و روز به ترتیب.کافیه در روشی که استفاده میکنیم برای تاریخها الگوی خاصی رو همیشه رعایت کنیم مثلا برای ماه دو کاراکتر رو در نظر بگیریم که برج نهم به این صورت نوشته میشه( 09) و نه (9) و یا سال دویستو یک رو بنویسیم 0201 (چهار کاراکتر). با این روش ثبت تاریخ بصورت کاراکتری هیچ مشکلی در مقایسه نخواهد داشت.
در ضمن استفاده از StrtoDate کار جالبی برای تاریخ شمسی نیست. چون کنترل صحت روی تاریخ انجام میشه. مثلا روز 31 ام از برج اردیبهشت رو امتحان کنید و اکسپشن رو ببینید.

said ali
یک شنبه 09 آذر 1382, 14:36 عصر
با سلام
عزیز من یه فیلد دیگه اضافه کن و به صورت محاسبه ای از تاریخی که شخص بصورت فارسی وارد کرده میلادیش رو بریز توش بعد هم از اون اسفاده کن.
والسلام.
در مورد تغییر تاریخ فارسی به میلادی و معکوس هم که کامپوننت مثل ... ریخته بشین جمعش کن.
قربانت.

saeed_d
دوشنبه 10 آذر 1382, 08:35 صبح
آقا سعید با سلام

من چون برای تاریخ فارسی با اون کامپوننت تاریخ فارسی آقای رحیمی کار میکنم یکم تنبل و تن پرور شدم :mrgreen:

با روش شما باید اول یک رنج تاریخ که مشخص میشه به عدد تبدیل بشه و بعد فیلتر ولی با اون کامپوننت هیچ کار خاصی لازم نیست و فقط 2 خط فیلتر ساده مینویسی و تمام . توی برنامه نویسی هم هر چی کار کمتری انجام بدی و نتیجه بهتری بگیری هنر کردی :mrgreen: و از نظر وقت و انرژی هم صرفه جویی کردی .

به هر حال اگر خودت فیلتر بین 2 تا تاریخ رو هم باهاش امتحان کردی توضیحشو بنویس تا این دوستمون هم استفاده کنه .

موفق باشی .
گلادیاتور جان سلام
شما درست میگین :تشویق:
اما جناب SyntaxCheck هم روش خوبی رو گفتند. اینطور نیست :?:

Gladiator
دوشنبه 10 آذر 1382, 09:06 صبح
سعید جون

سینتکس چک که کارش حرف نداره ٬ ما خیلی مخلصشیم .

و همچنین بقیه برو بچه های سایت .

موفق باشید .

جمعه 14 آذر 1382, 21:12 عصر
من نمیفهمم شما سر چی دارین بحث میکنین :?:
این کوری که نوشتم یک ساله که داره واسه یه برنامه گزارش درست میکنه هنوز هم error نداده

select * from table1 where date between date1 and date2
date1 ,date2 دو تاریخ به فرمت yyyy/mm/dd هستند و date هم از نوع string
ضمنن اگه از دیتابیس dbisam استفاده کنین تاریخ فارسی رو کاملا ساپورت میکنه

moradi_am
شنبه 15 آذر 1382, 13:25 عصر
اسانترین را برای شما اینس که یک تابع بنوسی که اعداد کوچکتر از 10 را دورقمی کنه (1 به 01 تبدیل بشه و ...) در اینصورت مقایسه رشته ای هم جواب خواهد داد.نوشتن تابع هم سخت نیست و برای اینکه بعد از این اطلاعات درست وارد بشه موقع ذخیره این تبدیل را انجام بده .

-------------------------------------------------------------------------------
خدا مارا از شر زبان فارسی و تاریخ فارسی محفوظ نگه دارد .

kimia1
یک شنبه 06 اردیبهشت 1383, 12:30 عصر
این کامپوننت های که میگین از کجا میشه گیر آورد؟ :?:

arshia_
دوشنبه 07 اردیبهشت 1383, 17:06 عصر
می تونید یک فیلد محاسباتی در اکسس تعریف کنید که رشته رابه
عدد تبدیل کند مثلا
"10/10/1381" را به 13811010 تبدیل کند حال می توانید با این فیلد کار کنید
_________________

چطور میشه اینکارو انجام داد آیا تابعی برای این کار داریم یا باید به صورت دستی اونو انجام بدیم؟؟

amir_22
چهارشنبه 16 دی 1383, 18:11 عصر
سلام به همه دوستان

چطور میشود یک دکمه برای فیلتر کردن شرط خاص یا چند شرطی بر روی فیلدهای از نوع رشته درست کرد
16/10/83

amir_22
چهارشنبه 16 دی 1383, 18:15 عصر
سلام به همه دوستان

چطور میشود یک دکمه برای فیلتر کردن شرط خاص یا چند شرطی بر روی فیلدهای از نوع رشته درست کرد
16/10/83

arkia
چهارشنبه 28 فروردین 1387, 23:52 عصر
منم به یه مشکل بر خوردم که نیاز دارم مثلا تاریخ 16/10/83 را به 16-10- 83 تبدیل کنم. اگه ممکنه برام حلش کنین.

computer-mag
پنج شنبه 29 فروردین 1387, 01:09 صبح
منم به یه مشکل بر خوردم که نیاز دارم مثلا تاریخ 16/10/83 را به 16-10- 83 تبدیل کنم. اگه ممکنه برام حلش کنین.
خوب مشکلی که نیست!شما باید توی رشتت دنبال / بگردیو هر جا / دیدی اون رو حذف کنیو جاش - بزاری! همین کار خاص دیگه ایهم نم یخواد!

hadisalahi2
پنج شنبه 29 فروردین 1387, 07:54 صبح
من خودم بارها تاریخ رو به صورت رشته با هم مقایسه کردم و همیشه هم درست جواب داده.
پس بهتره دنبال مشکل تو یه جای دیگه از برنامتون بگردید. نه توی مقایسه رشته ها