안녕하십니까?
저는 고객데이타를 읽어 고객의 후원인이 Table1에 존재하면
고객의 후원인 Index의 다음 번호로 레코드를 추가하고
후원인이 존재하지 않으면 Table1의 레코드수를 Index로 하여
가장 마지막 부분에 추가하려고 합니다.
그런데 처음 아래의 루틴을 실행하면 제가 원하는 데로 잘 실행되나
다시 아래의 루틴을 실행하면 실행하다가
access violation at 0x4be42b91:read of address ....라든
에러가 발생합니다.
정말, 무엇이 잘못인지 모르겠습니다.
고수님의 답변을 부탁드립니다.
procedure TFormOrgChart.NewBtnClick(Sender: TObject);
var
i,k:integer;
tInx,tLevel,tID,uLevel:integer;
tName,tPart:string;
procedure TableAppend;
begin
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('Update ' + TreeTable.TableName + ' T');
SQL.Add('Set T."INDEX" = T."INDEX" + 1');
SQL.Add('Where T."INDEX" >= ' + IntToStr(tInx));
ExecSQL;
Close;
SQL.Clear;
end;
Table1.Append;
Table1.FieldByName('Index').AsInteger := tInx;
Table1.FieldByName('Level').AsInteger := tLevel;
Table1.FieldByName('이름').AsString := tName;
Table1.FieldByName('고객ID').AsInteger := tID;
Table1.Post;
end;
Table1.IndexName := '고객ID_Inx'; // Primary Key 'Index';
Table1.Close;
TableCreateTable; // 초기화 부분
Table1.Open;
CustomQuery.Close;
CustomQuery.SQL.Add(Select * from Custom.db';
CustomQuery.SQL.Add('Order by 직급, 등록일자, 고객ID');
if not CustomQuery.Prepared then CustomQuery.Prepare;
CustomQuery.Open;
while not CustomQuery.Eof do
begin
if Table1.FindKey(CustomQuery.FieldByName('후원인').AsInteger) then
tInx := Table1.FieldByName('Index').AsInteger + 1
else tInx := Table1.RecourdCount;
tName := CustomQuery.FieldByName('고객명').AsString;
tID := CustomQuery.FieldByName('고객ID').AsInteger;
tLevel := CustomQuery.FieldByName('직급').AsInteger;
TableAppend;
CustomQuery.Next;
end;