ورود

View Full Version : سوال: چگونگی اعمال شدن دستور SUM بر روی موارد جستجو شده



hmgjob
چهارشنبه 30 بهمن 1392, 05:34 صبح
سلام
من در ویژوال فاکس 9 وقتی برای جمع کردن مقدار فیلدهای عددی از دستور Sum استفاده می کنم جمع تمام رکوردهای ثبت شده را محاسبه کرده و در یک متغیر می ریزد اما وقتی بر اساس تاریخ ثبت جستجو می کنم و از بین تمام رکوردها چند رکورد خاص را به وسیله search جدا می کنم باز هم دستور SUM تمام فیلدها را با هم جمع می کند.
لطفا بنده را راهنمایی کنید چگونه بعد از عمل جستجو فقط جمع موارد جستجو شده را به دست بیاورم نه جمع همه بانک اطلاعاتی را؟

yabande92
چهارشنبه 30 بهمن 1392, 07:27 صبح
میتونید یک متغیر تعریف کنید و در حین جارو کردن عمل جمع رو انجام ودر متغیر مورد نظر بریزید.
ولی اگر از دستور SUM استفاده میکنید باید شرط جمع کردن مقادیر با شرایط خاص رو به دستور بدید مثال :


STORE 0 TO A
SUM FILEDNAME FOR NO='B' TO A

yabande92
چهارشنبه 30 بهمن 1392, 07:28 صبح
-----------------------

hmgjob
چهارشنبه 30 بهمن 1392, 21:17 عصر
من یک دکمه ایجاد کردم و داخلش اینجوری هست:

USE t1
GO top
SUM a1 TO aa1
SUM a2 TO aa2
SUM a3 TO aa3
USE t2
GO top
REPLACE a1 WITH aa1
REPLACE a2 WITH aa2
REPLACE a3 WITH aa3

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

yabande92
چهارشنبه 30 بهمن 1392, 22:04 عصر
آیا شما یک command ایجاد کردید و در رویداد click اون مقادیر بالا رو قرار دادید ؟ اگر جواب مثبته و از هیچ فیلتری هم استفاده نکرده اید ، مسلم که دستور sum روی کل جدول کار میکنه . اگر هم که از فیلتر مناسب استفاده کرده اید که خروجی باید درست باشه
ضمنا من توی دستورات بالا سرچی نمیبینم !؟ فکر میکنم کدها رو ناقص نوشتید!

hmgjob
پنج شنبه 01 اسفند 1392, 06:00 صبح
بله یک command هست و منظورم از سرچ استفاده از سرچ کنترلر فرم بود. محتویاتش هم فقط همین هست.
اگر لطف بفرمایید و محتویات command را طوری بنویسید که وقتی از سرچ کنترلر استفاده می کنم بعد از زدن این دکمه بتوانم مقدار رکوردهایی که در سرچ آمده را جمع و به بانک اطلاعاتی دوم بفرستد.

abdorreza
شنبه 03 اسفند 1392, 06:40 صبح
سلام
اولا از شما جناب hmgjob عذر خواهی میکنم بدلیل اینکه نشد با شما تماس بگیرم. یعنی فعلا بدلیل مشغله ی زیاد فرصتش نیست. الان هم قبل از بیرون رفتن یه سر اومدم اینجا بزنم !
شما باید شرط رو داخل دستورات SUM هم قرار دهید . به این صورت که شرط تاریخ را در SUM هم چک کنید.

یعنی :


USE t1
GO top
SUM a1 TO aa1 for date=mydaye
SUM a2 TO aa2 for date=mydate
SUM a3 TO aa3 for date=mydate
USE t2
GO top
REPLACE a1 WITH aa1
REPLACE a2 WITH aa2
REPLACE a3 WITH aa3


که در اینجا date فیلد تاریخ شماست و mydate متغیری که می خواهید فیلد تاریخ با آن چک شود که اگر برابر تاریخ mydate بود سپس در جمع شرکت داده شود.