PDA

View Full Version : مشکل تاریخ با query



جمعه 24 مرداد 1382, 23:56 عصر
سلام دوستان
یه کوری هست به این شکل:

select * from table1 where tarikh between '01/05/1382' and '27/05/1382'
البته تاریخ توی این فیلد به همین فرمت ذخیره شده وقتی این کوری رو اجرا میکنم رکورد هایی با تاریخ هایی مثل '1381/07/11' هم توی خروجی کوری هست
من واقعا دارم گیج میشم
راستی فیلد تاریخ از نوع string هست و دیتابیس برنامه bde لعنت الله علیه :cry:
راستی من مشکلم خیلی جدیه توروخدا زود تر کمک کنین این کوری قراره یه قسمت از حقوق کارکنان یه کارخونه رو حساب کنه :( الان هم که اخره ماه همه حقوق میخان :cry: :cry:

SyntaxCheck
شنبه 25 مرداد 1382, 00:21 صبح
میلاد جان سلام
اگر نحوه ذخیره تاریخ رو برعکس کن درست میشه '01/05/1382' یعنی سال سمت چپ,ماه وسط و روز در راست.

شنبه 25 مرداد 1382, 00:44 صبح
سلام سینتکس جان
اقا یه مشکلی هست اولا من اگه بخام این کارو بکنم باید کل برنامه رو دست بزنم ضمنا الان برنامه حدود 120000 رکورد داره نمیتونم فرمتشو عوض کنم من دستم بسته هست چون اگه بخام دست بزنم همه maskedit های که تاریخ رو میخونن رو باید دستکاری کنم این کار برام تقریبا غیر ممکنه
اصلا میخام بدونم چرا این مشکل پیش میاد و با همین شرایط چه طوری دستش کنم
مرسی اقا
بای

SyntaxCheck
شنبه 25 مرداد 1382, 00:56 صبح
دلیلش اینه که مقایسه از سمت چپ انجام میشه.
من سعی میکنم یه کوئری برای حل مشکلت بنویسم.اگر امشب تونستم برات میفرستم.

شنبه 25 مرداد 1382, 01:28 صبح
سلام سینتکس جان
اقا اگه بتونی که خیلی لطف کردی ممنون میشم

SyntaxCheck
شنبه 25 مرداد 1382, 01:29 صبح
select * from
(
select (right(tarikh,4)+"/"
+mid(tarikh,4,2)+"/"
+left(tarikh,2))as newtarikh
from table1
)
where newtarikh between "1382/05/01" and "1382/05/27"

شنبه 25 مرداد 1382, 14:26 عصر
سلام سینتکس جان
اقا دستت درد نکنه ولی یه مشکلی هست
وقتی اینو اجرا میکنم پیغام میده
invalid use of keyword
اینو هم اگه درست کنی خیلی حال دادی
مرسی
بای :cry:

phantasm
یک شنبه 26 مرداد 1382, 02:45 صبح
میتونی کد زیر رو توی رویداد onfilterrecord بنویسی تا تغیر فرمت تارخ صورت بگیره:


ShortDateFormat := 'yyyy/mm/dd';



phantasm :wink:

دوشنبه 27 مرداد 1382, 12:17 عصر
salam
in raveshe shoma baray record haii ke az in be bad vared shavand javab mide
baray 120,000 recordi ke ta hala vared shode che bekkonam???

phantasm
دوشنبه 27 مرداد 1382, 20:36 عصر
جنابعالی باید اول فرمت تاریختون رو عوض کنید:



select cast (dat as date)
from tarikh.db

که tarikh.db اسم جدولتونه و dat فیلد تاریخه .بعد اون کدی که در بالا گفتم فکر کنم نتیجه بده :oops:

اگه جواب نداد بازم در خدمتم :wink:

SyntaxCheck
چهارشنبه 29 مرداد 1382, 05:13 صبح
میلاد جان راستش من با bde و پارادکس کار نمیکنم اما این کوئری رو با اکسس از طریق ado امتحان کردم جواب داد.اجزاء این کوئری استاندارده و دلیل خاصی برای کار نکردن نمیبینم.اما اگر مشکل با bde داری والا فکرم به جایی نمیرسه.سعی میکنم با bde هم امتحانش کنم ببینم مشکل کجاست. راستی به آی دی یاهوت pm گذاشتم.

Kambiz
چهارشنبه 29 مرداد 1382, 13:28 عصر
select * from
(
select (right(tarikh,4)+"/"
+mid(tarikh,4,2)+"/"
+left(tarikh,2))as newtarikh
from table1
)
where newtarikh between "1382/05/01" and "1382/05/27"


راه حل بسیار زیبایی ارائه دادید.
نمی‌دانستم اکسس قادر به اجرای چنین درخواستهایی هست.

چهارشنبه 29 مرداد 1382, 19:02 عصر
اقا من بیچاره شدم :cry: :cry: :cry: :cry: :cry:
کوری اقای سینتکس توی access مثل ساعت کار میکنه ولی تو bde :cry:
تایع cast هم همچنین
اقا یه فکری بکنین :(

phantasm
پنج شنبه 30 مرداد 1382, 01:30 صبح
تابع cast چشه آقا میلاد؟

من توی bde امتحان کردم جواب میده :roll:

SyntaxCheck
پنج شنبه 30 مرداد 1382, 01:56 صبح
راستشو اگه بخواید منم بدجور گیج شدم میلاد جان.فکر میکنم این یه مشکل کوچک تو سینتکس این کد اسکیو ال تو پارادکس که انگار اصلا با استاندارد و این حرفها میونه نداره. البته من با پارادکس زیاد کار نکردم اما بخاطر مشکل شما یه کمی بهش ور رفتم و همون مشکل که شما گفتید رو دیدم که اصلا منطقی به نظر نمیرسه. به هر حال من فکر میکنم اگر کارت خیلی فوری هست و از اونجا که تغییر ساختار برنامت در مورد تاریخ خیلی سخته سعی کن یه نسخه از برنامه رو کپی بگیری و بانک اونو با دیتا پمپ همراه دلفی به اکسس تبدیل کنی و با ado به بانک وصل شی و کوئری رو که گفتم اجرا کنی.این تبدیل فکر نمیکنم بیشتر از 20 دقیقه وقتت رو بگیره.

phantasm
پنج شنبه 30 مرداد 1382, 03:31 صبح
بابا این bde که از هیچ function ای حمایت نمیکنه :cry:

مجبور شدم یه روش خفن بکار ببرم :wink: امیدوارم مشکلت رو حل کنه:


select * from table1
where (tarikh like '%/05/1382')
and ( tarikh between '01/05/1382' and '27/05/1382')




phantasm :wink:

پنج شنبه 30 مرداد 1382, 11:53 صبح
سلام به همه
اقا سینتکس راستش اول منم به این نتیجه رسیدم که کاره شما رو انجام بدم
ولی روش اقا فنتسم فوت اخر بود!! جواب داد
ولی خودمونیم ها چه برنامه نویس های خفنی داره این سایت دم همتون قیژژژژژژژژژژژژژژ
اقای فنتسم و اقای سینتکس هم خیلی مرسی :P
دست همتون درد نکنه
مرسسسسسسسسسسسسسسسسسی