PDA

View Full Version : سوال: مقدار دهی دوباره فیلدهای NULL در بانک DBF



lolojoon
یک شنبه 09 مرداد 1390, 09:59 صبح
سلام به همه دوستان

من یه بانک DBF دارم ( تحت فاکس پرو 2.6 )
با Table بهش Connect شدم و باید در این بانک کلیه فیلدهای BES_MAB و BED_MAB که دارای مقدار NULL هستند رو پیدا کنم و مقدار 0 رو در این فیلد درج کنم . ( 11368 رکورد دارم )

یه کد نوشتم ولی خطا داره :

procedure TForm1.Button3Click(Sender: TObject);
var
i:integer;
begin
Table1.First;
for i:=1 to Table1.RecordCount do
begin
Edit1.Text :=Table1.FieldValues['BES_MAB'];
Edit2.Text :=Table1.FieldValues['BED_MAB'];
//-------------------------------------------
if Edit1.Text ='' then
begin
Table1.Edit;
Table1.FieldValues['BES_MAB']:=0;
Table1.Post;
end;
//-------------------------------------------
if Edit2.Text ='' then
begin
Table1.Edit;
Table1.FieldValues['BED_MAB']:=0;
Table1.Post;
end;
//-------------------------------------------
ProgressBar1.StepBy(i);
Table1.Next;
end;
MessageDlg( IntToStr (i) +'јæÑÏ íãÇíÔ ÔÏ',mtInformation,[mbOK],1);

end;


ممنون می شم راهنماییم کنید که کدام قسمت کدم مشکل داره ؟

از VarisNull هم استفاده کردم ولی بازم خطا می گیره ؟

pezhvakco
دوشنبه 10 مرداد 1390, 08:25 صبح
سلام :
چه خطایی میده ؟
اگه می خوای همین روش رو اجرا کنی :
شاید مربوط به ساختار ستون های BES_MAB و BED_MAB باشه (ساختار آنها باید رشته ایی باشه یا تبدیل بشه).

از کد دستور
ProgressBar1.StepBy(i)
هم میتونه باشه که مقدار جابه جایی چون با I است و مقدار I زیا میشه خظا میده :
ProgressBar1.StepBy(1)

به جای
Table1.Next;
می تونی
Table1.MoveBy(1);
رو بکار بگیری .

اگه بتونی همه کد نویسی تو ویرایش کنی و یه روش دیگه داشته باشی که خیلی بهتره .
دلیل
Edit1.Text :=Table1.FieldValues['BES_MAB'];
و ...