PDA

View Full Version : سوال: شمردن رکورد های فعلی جدول



hentjanson
شنبه 11 خرداد 1387, 22:10 عصر
سلام چطور میشه وقتی در جدول سرچ کردیم باقیمانده ها یا نتایج رو بشماریم مثلا بگیم نتایج 3 عدد .
اینطور در نظر بگیرید دنبال یک کلمه به اسم اکبر هستید بعد از جستجو 3 تا پیدا میشه میشه یک lable رو طوری تنظیم کرد که بگه 3 تا یعنی شمارش رکورد های یافت شده

hentjanson
شنبه 11 خرداد 1387, 22:53 عصر
سلام یک سوال اینو کجا بنویسم یعنی کجا صداش بزنم

hentjanson
شنبه 11 خرداد 1387, 22:56 عصر
میشه برام کامل همین خط را بنویسید اخه تازه کارم متوجه نشدم اینکه چطور و کجا باید نوشته بشه که جواب بگیرم

hentjanson
شنبه 11 خرداد 1387, 23:17 عصر
این کد منه


Label2.Caption:=IntToStr(ADOTable1.RecordCount);

ولی می خوام بگه چند تا باقی مونده کجا باید باشه که این جواب رو بهم بده

Mahyaa
شنبه 11 خرداد 1387, 23:29 عصر
تا من جواب بدم شما دوباره پست دادید که .

باقیمانده چی رو میخواهید ؟

hentjanson
شنبه 11 خرداد 1387, 23:35 عصر
ببین من تو بانک می خوام بگردم دنبال یک رکورد حالا می خوام وقتی نتایج رو در جدول dbgrid نشون داد همزمان یک label هم بگه مثلا نتایج 3 تا هر چند تا پیدا شده

Mahyaa
شنبه 11 خرداد 1387, 23:40 عصر
خوب ابن میشه دقیقا همون کدی که خودت نوشتی دیگه .

فرض کن یک کوئری مینویسی که تمام رکوردهایی رو که مقدار فیلد A برابر فلان مقدار هست ، برگردون . بعد از اجرای اون دیتاست یک مجموعه رکورد رو برمیگردونه . اینکه تعداد رکوردها چند تاست ، در همان حالتی که دیتاست باز هست مقدار RecordCount رو چک میکنیم . که همانطور که دوستمون گفتن و خودت هم نوشتی :


MyDataSet.RecordCount;

حالا اگر فرض کنیم بخواهیم توی یک Label نمایش بدیم میشه :


MyLabel.Caption := IntToStr(MyDataSet.RecordCount);

اصغر (پآچ)
یک شنبه 12 خرداد 1387, 00:21 صبح
سلام دوست من بعد از این دستور کدی رو که داری بذار:


ADOQuery1.Open;
Label2.Caption:=IntToStr(ADOQuery1.RecordCount);


هرجا که کوئریتو اکتیو کردی بعدش این دستور رو قرار بده!

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

hentjanson
یک شنبه 12 خرداد 1387, 06:40 صبح
سلام من از این کد استفاده کردم ولی یک مشکل دارم اخه تازه کارم هنوز خوب نمیدونم باید کد هارو کجا بنویسم من اینو باید تو خاصیت onFilterRecord یعنی باید بنویسم اخه اونجا کد فیلتر بانک aceept رو نوشتم یا باید این کده جایی دیگه باشه

hentjanson
یک شنبه 12 خرداد 1387, 06:43 صبح
Label2.Caption:=IntToStr(ADOTable1.RecordCount);

اصغر (پآچ)
یک شنبه 12 خرداد 1387, 14:03 عصر
دوست من
شما جستجوی خودت رو کجا انجام می دی؟

برای مثال می تونی یه Edit و یه دکمه داشته باشی که وقتی روی دکمه کلیک می کنی بیاد جدول رو براساس مقدار Edit جستجو کنه.

پس شما این کد رو توی OnClick دکمه ات بنویس


With ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM tablename WHERE fieldname LIKE ''' + Edit1.Text + ''');
Prepared;
Open;
Lable2.Caption := IntToStr(RecordCount);
end;


بازم اگه مشکلی داشتی من در خدمتم.
موفق و موید باشی

اصغر (پآچ)
یک شنبه 12 خرداد 1387, 14:05 عصر
حتی می تونی کد بالا رو در OnChange مربوط به Edit هم بنویسی.

vcldeveloper
یک شنبه 12 خرداد 1387, 16:51 عصر
این پست ربطی به سوال مطرح شده نداره، بلکه نکته ایی را درباره کد ارسال شده در پست شماره 12 یادآوری میکنه:

استفاده از Prepared در کد شما نه تنها موجب افزایش Performance نمیشه، بلکه موجب کاهش سرعت اجرای کوئری میشه. Prepared باعث میشه که دستور SQL یک بار توسط Provider کامپایل بشه و توسط Provider نگهداری بشه تا در استفاده های بعدی هما کد کامپایل شده به سرور ارسال بشه. در نتیجه، استفاده از Prepared باعث کاهش سرعت اجرای کوئری در بار اول و افزایش سرعت آن در دفعات بعدی میشه.
اما در کد شما، چون از Parameter برای مقداردهی کوئری استفاده نکردید، دستور SQL در هر بار اجرا با دستور قبلی فرق میکنه، پس با هر بار اجرای کوئری یک بار عمل Compile صورت میگیره، یعنی در هر بار اجرای کوئری به دلیل تغییر کوئری، از نسخه کامپایل شده موجود نمیشه استفاده کرد و باید کد دوباره Compile بشه. این امر موجب کاهش سرعت اجرای کوئری میشه.
پس یا از Prepared استفاده نکنید، یا اگر می خواید استفاده کنید، کوئری خود را با استفاده از Parameters بازنویسی کنید.

hentjanson
دوشنبه 20 خرداد 1387, 10:39 صبح
سلام دوستان من مشکلم حل نشد در این رابطه .
من از این کد استفاده می کنم برای فیلتر کردن اینو درون onfilterrecord نوشتم


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)


جستجو بر حسب مقادیر داخل combobox حالا میشه بگید وقتی از این نتیجه میگیرم یعنی سرچ کردم چطور بگم چند رکورد پیدا شده

hentjanson
دوشنبه 20 خرداد 1387, 15:23 عصر
از دوستان کسی می تونه راهنمایی کنه

hentjanson
دوشنبه 20 خرداد 1387, 22:13 عصر
کسی در این رابطه چیزی میدونه