PDA

View Full Version : شمارش رکورد که دارای شرط و مقداری معلوم باشد



spicirmkh
سه شنبه 22 اردیبهشت 1383, 16:45 عصر
سلام

من فیلد تعریف کردم که مقدار عددی است
حال می خواهم این فیلد دارای مقداری شود یعنی تعداد رکورد که سن افراد بالای 30 سال را شمارش کند و در این فیاد قرار دهد در onCalcFields فیلد توانستم تمام فیلد را را با دستور RecordCount شمارش کنم اما چه جوری فیلد شرط بگذار وش مارش فیلد ها خاص می خواهم بدون ایجاد فیلتر یا SQL

با تشکر از دوستان عزیز
مرتضی

SReza1
سه شنبه 22 اردیبهشت 1383, 19:35 عصر
راجع به ساختار جدولت بیشتر توضیح بده؟

baabi
سه شنبه 22 اردیبهشت 1383, 23:49 عصر
من میدونم نمیشه ....
من که باورم نمیشه ... من میدونم.... :P :P

moradi_am
چهارشنبه 23 اردیبهشت 1383, 07:14 صبح
این کد را امتحان کنید .البته نمیدونم که در oncalcfield جواب بده یا نه ؟

var cnt:integer;
begin
Tble1.first;
cnt:=0;
while not Table1.Eof
if Table1.FieldByName('age').AsInteger>=30 then cnt:=cnt+1;
//store cnt in the table
end;

Mohammad S
چهارشنبه 23 اردیبهشت 1383, 09:36 صبح
جناب مرادی عزیز
کد شما یک مشکل دارد: در حلقه while دستور زیر را هم لازم دارید:

Table1.Next;
:wink:

moradi_am
چهارشنبه 23 اردیبهشت 1383, 10:36 صبح
بله درسته :موافق: ببخشید جا افتاده بود .

spicirmkh
چهارشنبه 23 اردیبهشت 1383, 15:15 عصر
سلام

این برنامه کار می کند اما در oncalcfield کار نمی کند و چون بانک به یک DBGrid متصیل است باید یک Bookmark استفاده کنم که محل رکورد جاری گم نکنم اما قبل ان DBGrid غیر فعال کنم
و کاریر متوجه حرکت رکورد نشود

JavanSoft
چهارشنبه 23 اردیبهشت 1383, 21:09 عصر
من فکر می کنم در مورد OnCalcField کمی دچار اشتباه شده اید
اصلا این Event برا ی اینکار ساخته نشده
بلکه اگر فیلدی را بصورت محاسباتی تعریف کنید می توانید در این Event نحوه محاسبه فیلد را بیان کنید


عملی که شما می خواهید را می توانید با یک دستور Sqlحل کنید


Select Count(*) From Table Where Age>30

spicirmkh
پنج شنبه 24 اردیبهشت 1383, 11:39 صبح
سلام

مشکل این سات که من نمی خواهم SQL استفاده کنم

متشکرم

JavanSoft
پنج شنبه 24 اردیبهشت 1383, 14:35 عصر
مشکل این سات که من نمی خواهم SQL استفاده کنم
ممکن است دلیل انرا بفرمایید؟
البته می توانید جواب ندهید ... ولی این به این معناست که شما سخترین راه حل را به راحترین ترجیح می دهید .

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

omidsm
پنج شنبه 24 اردیبهشت 1383, 15:15 عصر
اگر بخواهید با oncalcfield این کار را انجام دهید به کل غلط است و امکان شمارش دقیق ندارد و در سرعت هم خیلی فرق دارد
شما حتما باید با SQL کار کنید :P