Hi all.
I'm busy with a corrupt database rebuild program. I've managed to trap a couple of errors such as EIBinterbaseError in a "try, except on" block, but I'm unable to trap this error "internal gds software consistency check(wrong record length (183))". I've tried to create a simple try, except block without any "on" parameters, to try and trap all errors, but to no avail.
Basically the program tries to copy the data from one record to another and if it encounters an error it simply skips that record and tries the to copy the next.
Please help!!
Here's the code :
tblnew.append;
for i := (0 + s) to fields.Count - 1 do
Try
s := 0;
tblnew.FieldByName(fields.strings).value := tblold.FieldByName(fields.strings).value;
except
s := s + 1;
end;
tblnew.post;
tblold.next;
//tblnew.Next;
//tblnew.Post;
except
on EIBinterbaseError do
Begin
memo.Lines.Add('EIBinterbaseError, Error Encountered on table '+temp);
memo.update;
if memo.Lines.Count > 1000 then memo.Clear;
tblold.next;
end;
on EConvertError do
Begin
tblnew.ApplyUpdates;
memo.Lines.add('EConvertError Encountered on table '+temp);
if memo.Lines.Count > 1000 then memo.Clear;
memo.update;
tblold.Next;
end;
on EIBClientError do
Begin
memo.Lines.add('EIBClientError, Error Encountered on table '+temp);
memo.update;
if memo.Lines.Count > 1000 then memo.Clear;
tblOld.Next;
end;
I'm busy with a corrupt database rebuild program. I've managed to trap a couple of errors such as EIBinterbaseError in a "try, except on" block, but I'm unable to trap this error "internal gds software consistency check(wrong record length (183))". I've tried to create a simple try, except block without any "on" parameters, to try and trap all errors, but to no avail.
Basically the program tries to copy the data from one record to another and if it encounters an error it simply skips that record and tries the to copy the next.
Please help!!
Here's the code :
tblnew.append;
for i := (0 + s) to fields.Count - 1 do
Try
s := 0;
tblnew.FieldByName(fields.strings).value := tblold.FieldByName(fields.strings).value;
except
s := s + 1;
end;
tblnew.post;
tblold.next;
//tblnew.Next;
//tblnew.Post;
except
on EIBinterbaseError do
Begin
memo.Lines.Add('EIBinterbaseError, Error Encountered on table '+temp);
memo.update;
if memo.Lines.Count > 1000 then memo.Clear;
tblold.next;
end;
on EConvertError do
Begin
tblnew.ApplyUpdates;
memo.Lines.add('EConvertError Encountered on table '+temp);
if memo.Lines.Count > 1000 then memo.Clear;
memo.update;
tblold.Next;
end;
on EIBClientError do
Begin
memo.Lines.add('EIBClientError, Error Encountered on table '+temp);
memo.update;
if memo.Lines.Count > 1000 then memo.Clear;
tblOld.Next;
end;