ورود

View Full Version : یک مشکل با Query در داس



naderigh
یک شنبه 20 آبان 1386, 08:01 صبح
من یک جدول کالا دارم که حاوی کد کالا تاریخ ورود یا خروج مقدار ورود و مقدار خروج و ..... و طبیعتا بایستی جمع بزنم مقدار ورود و خروج و در نهایت مانده انرا بدست اورم و این ورود و خروج هر کدام یک تاریخ خاص دارند حال برای اینکه بدانم که کالائی که موجود میباشد از روشهای لایفو یا بر عکس فایفو از کدام قیمت میباشد (یا بعبارتی فیلد تاریخ اولین تاریخ ثبت شده ) باشد
چون با sum نمودن فیلد مقدار قاعدتا اخرین تاریخ در فیلد تاریخ میاورد
لازم به ذکر است که کلیه خروجیها بایستی به قیمت ورودی حواله شود (افزایش یا کاهش قیمت ندارد) این کار را میخواستم فقط با Query انجام دهم و در فاکس 2.6 داس نیز هست

rahro
یک شنبه 20 آبان 1386, 09:38 صبح
من که متوجه نشدم!! یا خیلی سنگین عنوان کردی یا خلاصه!!

naderigh
یک شنبه 20 آبان 1386, 12:55 عصر
شما یک جدول دارید که کد کالا مقدار ورود کالا و قیمت ورود آن و تاریخ ورود و از آن طرف خروج کالا با مقدار و تاریخ خروج حال ما میخواهیم با یک Query جمع بزنیم چه مقدار از یک کد وارده بوده و چه مقدار صادره بوده فیلد تاریخ هم (در ورود و خروج) یکی است وقتی که در گروپ جمع میزنی اخرین تاریخ ورود یا خروج را میدهد در صورتی که من اولین تاریخ ثبت شده در جدول اصلی را میخواهم چون قیمت ورود برایم مهم است میخواهم بدست آورم که از فلان خرید با فلان قیمت چند تا باقیمانده اگر باز هم نتوانستم موضوع را تفهیم بفرمائید که بیشتر توضیح دهم

rezaTavak
یک شنبه 20 آبان 1386, 17:12 عصر
من هم راستش نفهمیدم چی به چیه.
اما فکر کنم باید group by را به فیلدهای بیشتری بدهید مشکل شما حل شود. البته اگر sum یا فیلد محاسباتی دارید باید کاملا دقت کنید.

توی محیط ویژوال query بساز.

یعنی create query شاید راحتتر باشد. (منظورم توی همون داس با دستور فوق است.)

naderigh
دوشنبه 21 آبان 1386, 07:32 صبح
شرمنده جدول و Query آنرا میفرستم نگاه کنید اشکال را پیدا کنید
ورود کالا tik=1 و خروج کالا 2 میباشد
من میخواهم که اولین کالاهائی که وارد شده اند خارج شوند

rezaTavak
سه شنبه 22 آبان 1386, 18:06 عصر
سلام

راستش من اگر جای شما بودم ۳ جدول درست میکردم ؛ورود، موجودی و خروج.

هنگامی که یک جنس وارد می شد شماره سریال می دادم و در موجودی اضافه میکردم.
هنگامی که جنسی خارج می شد شماره سریال اولین تاریخ را خوانده و خارج میکردم و از موجودی هم کم می کردم.

اما با کار شما راستش نمی دونم چی بگم.

ولی بگذارید مکانیسم group by را بگویم شاید کمکتان کند.

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

در واقع group by نوعی order هم هست.
دسته بندی بر اساس فیلدهای انتخاب شده در group by صورت می گیرد و بقیه فیلدها نادیده گرفته می شود. یعنی چود در دستورات شما بر اساس تاریخ group by ندارید اصلا تاریخها به حساب نمی آیند..

naderigh
چهارشنبه 23 آبان 1386, 12:14 عصر
اقا من بسیار از لطف شما سپاسگزارم که وقت میگذارید و حوصله بخرج میدهید و مشکلات افراد را حل مینمائید
البته حق با شماست ولی بعضی از اقلام کالاها سریال و مشخصه خاصی ندارند که بشود ثبت گردد و من بانک را یکی در نظر گرفتم و تقریبا مشکلم را حل کردم به اینگونه که از همان جدول در دو بار query یک بار برای ورود کالاها درست کردم ویک بار دیگه برای هم ورود و خروج و تاریخ را از query اولیه(ورودیهایم) را میگیرم و تقریبا مشکل حل شد فقط اشکالی که دارد اگر قیمت خرید کالاها در چند مرحله برابر باشد تاریخ اخرین خرید ملاک میباشد
مجددا از عنایت شما ممنونم

rahro
شنبه 26 آبان 1386, 08:01 صبح
سلام
ببخشید چند روز میشد که نبودم و دسترسی نداشتم
یک پیشنهاد:
شما تمام کالای مورد نظر خود را با query جمع آوری کنید بعد جهت شرط مورد نظر از طریق دستور sum اقدام کنید .
تست کنید و سرعت رو بسنجید فکر نکنم کاهش چشمگیری داشته باشد.