PDA

View Full Version : سوال: مشکل این کد چیه؟



Mask
شنبه 27 اسفند 1390, 12:14 عصر
با سلام.
وقتی از کد زیر استفاده میکنم ارور زیر رو میده.
چرا؟ به نظرم همه چی درسته.

---------------------------
Project1
---------------------------
Row cannot be located for updating. Some values may have been changed since it was last read.
---------------------------
OK
---------------------------



procedure TForm1.BTN_1Click(Sender: TObject);
var i:Byte;
begin
for i := 1 to dm1.T_IP.RecordCount do
begin
dm1.T_IP.Delete;
dm1.T_IP.Next;
end;

for i := 0 to List_SYS.Items.Count-1 do
begin
if List_SYS.Items[i]<>'' then
begin
Application.ProcessMessages;
DM1.T_IP.Insert;
dm1.T_IPComputerName.Value:=List_SYS.Items[i];
dm1.T_IPIP.Value:=IntToStr(i);
dm1.T_IPMacAddress.Value:='00-00-00-00-00-00';
DM1.T_IP.Post;
end;
end;
dm1.T_IP.Sort:='ComputerName';
dm1.T_IP.First;
for i := 1 to dm1.T_IP.RecordCount do
begin
DM1.T_IP.Edit;
dm1.T_IpSystemNumber.Value:=i;
dm1.T_IP.Post;
dm1.T_IP.Next;
end;
end;
وقتی تریسش میکنم مشکل در قسمت ادیت کردن به وجود میاد.
در ضمن تیبلم هم دارای فیلد آی دی هست و نوع فیلد SystemNumber هم Number در نظر گرفتم در بانک.

Felony
شنبه 27 اسفند 1390, 13:15 عصر
موقع پاک کردن نیازی نیست به رکورد بعدی برید ( استفاده از متد Next ) ، وقتی رکوردی رو پاک میکنید ، رکوردهای جدول به بالا شیفت داده میشن ، این Next زدن مشکل ایجاد میکنه ، کدتون بهتره این طور نوشته بشه :

while dm1.T_IP.RecordCount > 0 do
dm1.T_IP.Delete;

Mask
شنبه 27 اسفند 1390, 13:19 عصر
ممنون.
اما مشکل در قسمت ادیت شدنه.
چون حتی اگه این For رو هم پاک کنیم. مشکل سرجاشه.

tiphooo
شنبه 27 اسفند 1390, 14:17 عصر
برای جدول اگر فیلد index در نظر نگرفتی یکی از فیلدها را Index قرار بده

Mask
شنبه 27 اسفند 1390, 15:18 عصر
برای جدول اگر فیلد index در نظر نگرفتی یکی از فیلدها را Index قرار بده
گفتم که فیلد آی دی یا ایندکس دارم.

shobair
یک شنبه 28 اسفند 1390, 12:46 عصر
ممنون.
اما مشکل در قسمت ادیت شدنه.
چون حتی اگه این For رو هم پاک کنیم. مشکل سرجاشه.

سلام

میتونی قبل از حلقه مربوط به ادیت یکبار جدول رو ببندی و دوباره باز کنی

شبیر

Delphi 2010
پنج شنبه 17 فروردین 1391, 15:17 عصر
مشکل از شمارنده خودت هستش
نمیتونه آخرین فیلد رو ویرایش کنه و دوباره همون رکورد آخر رو ویرایش میکنه و پیغام خطا میده

توی شمارنده اعداد رو چک ببین درست عمل میکنه با تعداد رکوردهاتون برابر هستند یا نه