ورود

View Full Version : انتخاب رکوردهای جدول ( حرفه ای )



MiRHaDi
شنبه 23 آبان 1383, 08:24 صبح
صورت سوال :
یک جدول یا پرسش داریم ! مثلا 1000 تا رکورد داره !
بدون استفاده از Filter و Query میخوایم یک سری از رکوردها رو حذف کنیم
طی انجام کار برنامه ( فرض کنید به صورت Random ) یک تعدادی رکورد حذف میشود.
Table یک لیست اشاره گر داره به تک تک رکورد ها ! در واقع میخوام توی اون لیست دست ببرم. مشابه کاری که خود Filter میکنه تقریبا
نمیخوام از Calculated Field استفاده کنیم و توی Filter بگم اونو نشون بده یا نه !
باید از لیست حذف شه چون تعداد اطلاعات میلیاردی هست ! و نمیتونم روش Query بگیرم یا Filter رو عوض کنم وقت زیادی میگیره.
میخوام به DbGrid که وصل میشه رکوردهایی که من حذف کردم نشان داده نشه
ممنون میشم اگه کمکم کنید (‌میدونم یکم سوال رو گنگ گفتم ولی ببخشید نتونستم بهتر بگم)
مرسی

MiRHaDi
چهارشنبه 27 آبان 1383, 00:25 صبح
سلام
آقای میرهادی عزیز
زیاد منتظر نمون سرچ کن !‌میدونم نیست ولی خوب بهتر از اینه که هیچ جوابی پای تاپیکت نباشه
بای

MiRHaDi
یک شنبه 01 آذر 1383, 21:17 عصر
سلام
یه سوال !
فکر میکنید چرا کسی جواب سوالای منو نمیده ؟
آیا MiRHaDi به صورت ReadOnly در سایت Set شده است ؟
بای

JavanSoft
دوشنبه 02 آذر 1383, 13:35 عصر
ببخشید..من حتی نفهمیدم شما چه منظوری دارید

_alish_
دوشنبه 02 آذر 1383, 14:10 عصر
من هم دقیق متوجه نشدم
اگر می خواهی یک تعداد رکورد را از DBGrid بدون فیلتر حذف کنی باید از While استفاده کنی و چون ردیفهای DbGrid از نوع TList می باشند نیازی به فیلتر دوباره نمی باشد.(مانند استفاده از MultiSelect)
واضح تر بیان کنید :sunglass:

رضا عربلو
دوشنبه 02 آذر 1383, 19:54 عصر
دوست غزیز
1 - چیزی که شما دنبالش می گردید خیلی وقت است که فکر برنامه نویسان بانک اطلاعاتی رو مشغول کرده .
2 - فکر می کنم بایستی شما یک data provider طراحی کنید
3 - پیشنهاد می کنم یک سری از کام÷اننت های open source رو تهیه کنی (مثل همین DBISAM خودمون که نوشته اوپن سورس است) البته برای نوع بانک اطلاعاتی خودتان و بعد از کلی مطالع سورس اون شاید بتونید به رموز جداول دست بیابید. :mrgreen:

Mohsen_4194
دوشنبه 02 آذر 1383, 22:13 عصر
اگه درست منظورتون رو فهمیده باشم می‌تونید از ClientDateSet استفاده کنید و رکورد هاتون رو بدون اینکه ApplyUpdate کنید حذف کنید.

MiRHaDi
سه شنبه 03 آذر 1383, 03:58 صبح
سلام
با تشکر از همه شما که زحمت کشیدید
Alish جان میشه بیشتر توضیح بدی ؟
محسن جان اگه Apply نشه 100٪ بی خطره ؟
رضا جان فکر نمیکنم اینقدر ها هم کار دشواری باشه که بخواد من Provider طراحی کنم ( راستی چجوری میشه کرد :) ؟ )

بازم تشکر. امتحان میکنم ببینم چجوری میشه
بای

_alish_
سه شنبه 03 آذر 1383, 06:46 صبح
اگر در مورد فیلتر بخواهی سری به سورس DBGRid بزن دقیقا مشخص است چه مکند
در مورد Delete


function TForm1.Grid_Edit(Grid: TDBGrid; Query: TQuery): Longint;
begin
Result := 0;
with Grid.DataSource.DataSet do
begin
First;
DisableControls;
try
while not EOF do
begin
if (Grid.SelectedRows.CurrentRowSelected = True) then
begin
{your Process}
Inc(Result);
end;
Next;
end;
finally
EnableControls;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Caption := 'Processed: ' + IntToStr(Grid_Edit(DBGrid1, Query1));
end;

Mohsen_4194
سه شنبه 03 آذر 1383, 12:19 عصر
آره کاملاً بی خطره.
من تو اکثر برنامه هام استفاده می‌کنم.

رضا عربلو
پنج شنبه 05 آذر 1383, 11:04 صبح
خوب، کامپاننت‌های ADO یک پراپرتی دارند به اسم CursorLocation که با تنظیم آن بر روی سرور provider فقط آن مقداری که لازم است رو از جدول استخراج می‌کنه و به همین دلیل هم ADO برای شبکه مفیده.

MiRHaDi
جمعه 06 آذر 1383, 18:34 عصر
سلام
داده هایی که لازم دارم دنبال هم نیستند ! 4 تا اول ! 3 تا نه ! 800 تا دیگه ! 27 تا نه و ... ! مثلا
و در مرحله آخر میشه 18487344 تا نه ! 1 یکی آره و بقیه نه !
بای