PDA

View Full Version : حذف رکوردهای فیلتر شده از یک table



Gladiator
چهارشنبه 14 اسفند 1381, 09:56 صبح
با سلام

دوستان لطفا توضیح بدین که چطوری میتونم رکوردهای فیلتر شده رو یکجا حذف کنم .

متشکرم .

Gladiator
چهارشنبه 14 اسفند 1381, 14:09 عصر
begin
if table1.RecordCount>0 then begin
//////
table1.Filtered:=true;
table1.Filter:='no=' + QuotedStr(dbedit1.Text);
/////
Table1.First;
while not Table1.eof do
table1.Delete;
begin
Table1.Next;
end;
/////
end;
close;
end;

خانومها و آقایان این فرمانها کار من رو راه انداخت . اینجا نوشتم که اگر یکی مثل خودم مبتدی پیدا شد بتونه از این نمونه استفاده کنه !

موفق باشید .

(امید)
چهارشنبه 14 اسفند 1381, 15:08 عصر
begin
if table1.RecordCount>0 then begin
//////
table1.Filtered:=true;
table1.Filter:='no=' + QuotedStr(dbedit1.Text);
/////
Table1.First;
while not Table1.eof do
table1.Delete;
begin
Table1.Next;
end;
/////
end;
close;
end;

خانومها و آقایان این فرمانها کار من رو راه انداخت . اینجا نوشتم که اگر یکی مثل خودم مبتدی پیدا شد بتونه از این نمونه استفاده کنه !

موفق باشید .



ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــــــــ
سلام گلادیاتور جان :)

من که الان دیدم تاپیکتو 8)

یه پیشنهاد دارم ... اگه می خوای ببینی که دستوراتی که نوشتی به خوبی کار می کنه اول یه تکه کد بنویس که بانکهاتو پر کنه . مثلا 1000 رکورد . تقریبا مثل نمونه های واقعی

اینطوری بعضی از ایرادات که در کار با رکودهای کم مشخص نمی شه بخوبی خودشونو نشون می دن.

RezaBS
پنج شنبه 15 اسفند 1381, 10:16 صبح
با سلام،
با اینکه جواب این سوال در لیست هست اما خواستم راه دیگه ای پیشنهاد کنم. در بسیاری از مواقع استفاده مناسب از عبارات SQL و نوشتن Query کمک موثری در نوشتن برنامه های قویتر و عمومی تر برای برنامه نویس هستند.
با این فرض که بانک اطلاعاتی شما از MSAccess استفاده کند می توانید از طریق نوشتن پروسه ای به شرح زیر عملیات مورد نظر خود را اجرا کنید:

procedure DeleteSomeFields;
var
adoCommand: TADOCommand;
begin
Try
adoCommand := TADOCommand.Create( frmMainForm);
adoCommand.Connection := adocntMyConnection; // You can use connection-string
adoCommand.CommandText :=
'DELETE FROM tblMyTable ' +
'WHERE (((tblMyTable.fldMyField) = ' +
'(condMyCondition)))';
adoCommand.Execute;
Finally
adoCommand.Free;
End;
end;

برای اینکه نمونه برنامه واقعی را هم داشته باشید بخشی از یک برنامه واقعی را اینجا کپی می کنم:

procedure TfrmMonthAlloc.DeleteSarFasl;
var
adoCommand: TADOCommand;
begin
Try
adoCommand := TADOCommand.Create( frmMonthAlloc);
adoCommand.Connection := frmMainMenu.ADOCnt2Data;
adoCommand.CommandText :=
'DELETE tblCorrections.* ' +
'FROM tblSarFasl RIGHT JOIN tblCorrections ON ' +
'tblSarFasl.fldSarFaslID = tblCorrections.fldSarFaslID ' +
'WHERE (((tblCorrections.fldSarFaslID) Not In ' +
'(Select fldSarFaslID from tblSarFasl)))';
adoCommand.Execute;
Finally
adoCommand.Free;
End;
end;

ببخشید کج و ماوجه! اینجا به این فرم دیده میشه. در صورت تمایل میتونم براتون mail کنم.

شاد و پیروز باشید ...