PDA

View Full Version : شمارش تعداد رکورذ ها سرچ شده



a-azad
دوشنبه 19 فروردین 1387, 06:52 صبح
سلام.من می خوام تعداد زکوردهایی که بعد ازسرچ نمایش داده می شود داخل یک labelنمایش دهد .کدم را به این صورت داخل label می نویسم.ولی جواب نمی دهد.
tntlabel1.caption:=inttostr(requestquery.recordcou nt)ممنون می شم راهنمایم کنین.

SYNDROME
دوشنبه 19 فروردین 1387, 07:52 صبح
دستور را که به شکل فوق بنویسید.


Label1.Caption := InttoStr(ADO.RecordCount);

جواب نمی دهد یعنی چی؟
تعداد رکوردها را نمایش نمی دهد یا پیغام خطا می دهد؟
با BreakPoint چک کنید و ببینید که چه مقداری داخل RecordCount است.
موفق باشید

a-azad
دوشنبه 19 فروردین 1387, 09:16 صبح
خطا نمی ده کارنمی کنه .می شه بیشترتوضیح بدین.

Cave_Man
دوشنبه 19 فروردین 1387, 09:23 صبح
داخل Label گذاشتی یعنی چی؟

dkhatibi
دوشنبه 19 فروردین 1387, 10:29 صبح
اگر از کوپری استفاده کرده ایئد بهتره از همون دستور Count در SQL در تابع Select به کار بریدs

Select Count(*) As Tedad where Conditions

a-azad
دوشنبه 19 فروردین 1387, 13:13 عصر
نه ازqueryنمی خواستم استفاده کنم

Mahmood_M
دوشنبه 19 فروردین 1387, 14:56 عصر
مشکلی نباید باشه ...
برای جستجو بانک رو فیلتر میکنید یا از Locate استفاده میکنید ؟
وقتی بانک رو فیلتر میکنید ، تعداد رکوردها میشه همون تعداد رکوردهایی که بعد از فیلتر نمایش داده میشن ...
با همون کدی که جناب Syndrome قرار دادن مشکلتون حل میشه :

Label1.Caption := InttoStr(ADO.RecordCount);

موفق باشید ...

a-azad
دوشنبه 19 فروردین 1387, 21:27 عصر
ازفیلتراستفاده می کنم.

Mahmood_M
دوشنبه 19 فروردین 1387, 22:59 عصر
ازفیلتراستفاده می کنم.
پس نباید مشکلی باشه ، از چه کدی یا روشی استفاده کردید که جواب نداده ؟

کد موجود در پست بالا رو امتحان کردید ؟

...

a-azad
سه شنبه 20 فروردین 1387, 07:00 صبح
ازاین کداستفاده میکنم
tntlabel1.caption:=inttostr(requestquery.recordcou n

SYNDROME
سه شنبه 20 فروردین 1387, 07:43 صبح
ازاین کداستفاده میکنم
tntlabel1.caption:=inttostr(requestquery.recordcou n
آیا با BreakPoint چک کردید ببینید چه مقداری داخل RecordCount قرار دارد؟(با کلید F5 یک BreakPoitn قرار دهید و سپس زمانی که برنامه آنجا رسید با موس روی کلمه RecordCount بایستید)
مطمئن هستید بعد از جستجو رکوردی بر می گردد؟
می توانید برنامه را اینجا قرار دهید تا دوستان چک کنند.
موفق باشید

a-azad
سه شنبه 20 فروردین 1387, 08:08 صبح
آره بعدازسرچ رکوردبرمی گرداند

SYNDROME
سه شنبه 20 فروردین 1387, 16:39 عصر
آره بعدازسرچ رکوردبرمی گرداند
آیا هنگام انجام عمل تبدیل عدد به رشته برای ریختن تعداد رکوردها در Label چک کردید ببینید چه مقداری Recordcount دارد و چه مقداری در Label ریخته می شود؟
آیا مطمئن هستید خط فوق برای نمایش تعداد رکوردها اجرا می شود؟
موفق باشید

a-azad
جمعه 23 فروردین 1387, 22:26 عصر
کدی برای سرچ استفاده می کنم

rocedure TForm2.requestqueryFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept := (
(tntedit1.Text='') or
(Pos(tntedit1.Text,requestquery.FieldByName('descr iption').AsWIDEString)>0)
) and
(
(tntedit2.Text='') or
(pos(tntedit2.Text,requestquery.FieldByName('contr actor').AsWIDEString)>0)
) and
(
(TntComboBox2.Text='') or
(Pos(TntComboBox2.Text,requestquery.FieldByName('t asvie').AsWideString)>0)
) and
(
(tntedit3.Text='') or
(Pos(tntedit3.Text,requestquery.FieldByName('numpa per').AsString)>0) ) and
(
(TntComboBox1.Text='') or
(Pos(TntComboBox1.Text,requestquery.FieldByName('k ar').AswideString)>0)
) and
(
(tntedit4.Text='') or
(Pos(tntedit4.Text,requestquery.FieldByName('datep aper').asstring)>0)
) and
(
(tntedit5.Text='') or
(Pos(tntedit5.Text,requestquery.FieldByName('deman der').asWIDEstring)>0)
) and
(
(tntedit6.Text='') or
(Pos(tntedit6.Text,requestquery.FieldByName('vahed ').asstring)>0)) ;
end;

SYNDROME
شنبه 24 فروردین 1387, 05:42 صبح
آیا با BreakPoint چک کردید ببینید چه مقداری داخل RecordCount قرار دارد؟(با کلید F5 یک BreakPoitn قرار دهید و سپس زمانی که برنامه آنجا رسید با موس روی کلمه RecordCount بایستید)

آیا این نکته را چک کردید؟نتیجه چه شد؟
موفق باشید

a-azad
شنبه 24 فروردین 1387, 06:52 صبح
آره می نوسه count=0

babak_delphi
شنبه 24 فروردین 1387, 15:02 عصر
خب این یعنی اینکه هیچ رکوردی پیدا نکرده
recordset رو به DBGrid وصل کنید ببینین چی نمایش میده
اگر خالی باشه هیچ مشکلی نیست

a-azad
یک شنبه 25 فروردین 1387, 22:18 عصر
من مشکل ام حل نشده.چیکارکنم.

babak_delphi
دوشنبه 26 فروردین 1387, 01:18 صبح
من سوالی پرسیدم تا شاید بتونم راهنمایی کنم
شما جواب ندادین

hentjanson
جمعه 31 خرداد 1387, 18:07 عصر
سلام منم همچين مشكلي دارم من از aceept استفاده مي كنم از اين كد استفاده مي كنم .


procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
if Form1.ComboBox2.ItemIndex=0 then
Accept:=(AnsiPos(Trim(Form1.MaskEdit11.Text),Trim( DataSet['namketab']))>0)
else if Form1.ComboBox2.ItemIndex=1 then
Accept:=(AnsiPos(Trim(Form1.MaskEdit11.Text),Trim( DataSet['nammoalef']))>0)
else if Form1.ComboBox2.ItemIndex=2 then
Accept:=(AnsiPos(Trim(Form1.MaskEdit11.Text),Trim( DataSet['nammotrajem']))>0)
end;

من از اين كد استفاده كردم تعداد كل رو بهم ميده


Label1.Caption := InttoStr(ADO.RecordCount);

ميشه در اين رابطه به من كمك كنيد

kosar1050
یک شنبه 16 تیر 1387, 19:40 عصر
سلام
جوابها رو خوندم واسم جالب بود چون منم دقیقا همین مشکل رو تو برنامه ام دارم.
وقتی Table ام رو فیلتر می کنم باز هم در جواب Table1.RecordCount تعداد رکورد های کل جدول رو برمیگردونه نه تعداد رکورد های فیلتر شده رو.
نمی دونم . احتمالا دستور خاصی وجود داره که من پیداش نمی کنم . کسی می تونه کمکم کنه؟؟

hastii
سه شنبه 18 تیر 1387, 09:23 صبح
سلام
من فکر می کنم استفاده از این event برای فیلتر کردن کار درستی نباشه چون متغیر Accept به ما امکان دسترسی یا عدم دسترسی به رکوردها را می دهد اما فیلتری روی dataset انجام نمی شه.وبرای نمایش یا عدم نمایش رکوردها در Grid می تونیم از اون استفاده کنیم ....به همین خاطر دستورات Recno,recordcount تعداد و موقعیت واقعی رکورد را برمی گرداند. شاید بهتر باشه برای تعریف فیلتر از دستورات زیر استفاده کنید:


Query.Filtered := False;
Query.Filter := '';
Query.Filtered := True;
;