질문이 갑자기 많아져서 죄송합니다...^^
다름이 아니라..
for i = 0 to 100 do
q1.sql.add('select * from test1')
q1.open
for j = 0 to q.recordcount -1 do
q2.sql.add('select * from test2')
q2.open
if q1.fieldbyname('field1').asstring <> q2.fieldbyname('field1').asstring then
showmssage(field1')
else if q1.fieldbyname('field2').asstring <> q2.fieldbyname('field2').asstring then
showmssage(field2')
else if q1.fieldbyname('field3').asstring <> q2.fieldbyname('field3').asstring then
showmssage(field3')
'
'
'
'
else if q1.fieldbyname('field10').asstring <> q2.fieldbyname('field10').asstring then
showmssage(field10')
이런식으로 기준이되는 쿼리와 비교를 하는 쿼리가 있습니다....
즉 두개의 다른 테이블의 필드 값이 다르면 기록을 남기고
필드값이 같으면 아무 기록을 하지 않는 프로그램 입니다..
근데 위와 같이 하니깐 맨 먼저 조건에 맞는 것만 기록을 남기고
그리고 다음 레코드로 넘 어 가는거 같습니다..
제 생각 에도 기본적으로 로직이 잘 못된거 같습니다..
field1이 조건에 맞으면 기록을 하고 순차적으로 field10까지 비교해서
기록을 남기는 방법이 무엇이 있을까요?
고수님들의 주옥같은 답변 기다리겠습니다..
답변해 주신분들 너무 감사 하구요..귀찮으시겠지만 다시 한번 봐주시면
고맙겠습니다...
qry.SQL.Add('select DISTINCT pmi_mesh from ' + trim(Edit1.Text));
qry.Active := true;
qry.Open;
for j := 0 to qry.RecordCount -1 do
begin
FileName := '';
FileName := Edit2.text + '_' +qry.FieldValues['pmi_mesh'];
//ShowMessage(FileName);
memo1.Lines.Append(qry.FieldValues['pmi_mesh'] +'비교시작');
qryTemp.SQL.Clear;
qryTemp.close;
qryTemp.DatabaseName:= 'MyNewAlias';
qryTemp.SQL.Add('select pmi_mesh, st_nd_id, ed_nd_id, tlinkidp1, tlinkidn1, ');
qryTemp.SQL.Add('st_dir, ed_dir, road_cate, link_cate, link_facil, road_no, ');
qryTemp.SQL.Add('width, oneway, lane, speedlh, road_name, regioncd, tollLink');
qryTemp.SQL.Add('from ' + trim(Edit1.Text));
qryTemp.SQL.Add('where pmi_mesh = ''' + qry.FieldByName('pmi_mesh').AsString + ''' ');
qryTemp.open;
DataSource1.DataSet := qryTemp;
DBGrid1.DataSource:= DataSource1;
//구테이블 루프
for i:= 0 to qryTemp.Recordcount -1 do
begin
q.close;
q.sql.clear;
q.DatabaseName:= 'MyNewAlias2';
q.SQL.Add (' select pmi_mesh, st_nd_id, ed_nd_id, tlinkidp1, tlinkidn1, st_dir, ed_dir, ');
q.SQL.Add (' road_cate, link_cate, link_facil, road_no, width, oneway, lane, speedlh, road_name, ');
q.SQL.Add (' regioncd, tollLink ');
q.SQL.Add (' from ' + edit2.Text);
//q.SQL.Add (' where pmi_mesh = ''' + qryTemp.FieldValues['pmi_mesh']+''' ');
q.SQL.Add (' where st_nd_id = ''' + qryTemp.FieldValues['st_nd_id']+''' ');
q.SQL.Add (' and ed_nd_id = ''' + qryTemp.FieldValues['ed_nd_id']+''' ');
q.Active := true;
q.open;
showmessage (qryTemp.FieldByName('tlinkidp1').AsString + qryTemp.FieldByName('tlinkidp1').AsString);
if q.eof then //===없다면 (삭제)
begin
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ',' + '삭제 link' );
end
else if qryTemp.FieldByName('tlinkidp1').AsString <> q.FieldByName('tlinkidp1').AsString then //=====값이 같지 않으면
begin
//정방향 TSDlink 1 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('tlinkidp1').AsString + '-> ' + q.FieldByName('tlinkidp1').AsString + ',' + '정방향 TSDlink 1 변경');
end
else if qryTemp.FieldByName('tlinkidn1').AsString <> q.FieldByName('tlinkidn1').AsString then //=====값이 같지 않으면
begin
//역방향 TSDlink 1 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('tlinkidn1').AsString + '-> ' + q.FieldByName('tlinkidn1').AsString + ',' + '역방향 TSDlink 1 변경');
end
else if qryTemp.FieldByName('st_dir').AsString <> q.FieldByName('st_dir').AsString then //=====값이 같지 않으면
begin
//시작링크 각도 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('st_dir').AsString + '-> ' + q.FieldByName('st_dir').AsString + ',' + '시작링크 각도 변경');
end
else if qryTemp.FieldByName('ed_dir').AsString <> q.FieldByName('ed_dir').AsString then //=====값이 같지 않으면
begin
//종료링크각도 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('ed_dir').AsString + '-> ' + q.FieldByName('ed_dir').AsString + ',' + '종료링크각도 변경');
end
else if qryTemp.FieldByName('road_cate').AsString <> q.FieldByName('road_cate').AsString then //=====값이 같지 않으면
begin
//도로종별 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('road_cate').AsString + '-> ' + q.FieldByName('road_cate').AsString + ',' + '도로종별 변경');
end
else if qryTemp.FieldByName('link_cate').AsString <> q.FieldByName('link_cate').AsString then //=====값이 같지 않으면
begin
//링크종별 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('link_cate').AsString + '-> ' + q.FieldByName('link_cate').AsString + ',' + '링크종별 변경');
end
else if qryTemp.FieldByName('link_facil').AsString <> q.FieldByName('link_facil').AsString then //=====값이 같지 않으면
begin
//링크시설종별 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('link_facil').AsString + '-> ' + q.FieldByName('link_facil').AsString + ',' + '링크시설종별 변경');
end
else if qryTemp.FieldByName('road_no').AsString <> q.FieldByName('road_no').AsString then //=====값이 같지 않으면
begin
//도로번호 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('road_no').AsString + '-> ' + q.FieldByName('road_no').AsString + ',' + '도로번호 변경');
end
else if qryTemp.FieldByName('width').AsString <> q.FieldByName('width').AsString then //=====값이 같지 않으면
begin
//도로폭 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('width').AsString + '-> ' + q.FieldByName('width').AsString + ',' + '도로폭 변경');
end
else if qryTemp.FieldByName('oneway').AsString <> q.FieldByName('oneway').AsString then //=====값이 같지 않으면
begin
//일방통행여부 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('oneway').AsString + '-> ' + q.FieldByName('oneway').AsString + ',' + '일방통행여부 변경');
end
else if qryTemp.FieldByName('lane').AsString <> q.FieldByName('lane').AsString then //=====값이 같지 않으면
begin
//차로수 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('lane').AsString + '-> ' + q.FieldByName('lane').AsString + ',' + '차로수 변경');
end
else if qryTemp.FieldByName('speedlh').AsString <> q.FieldByName('speedlh').AsString then //=====값이 같지 않으면
begin
//최고제한속도 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('speedlh').AsString + '-> ' + q.FieldByName('speedlh').AsString + ',' + '최고제한속도 변경');
end
else if qryTemp.FieldByName('road_name').AsString <> q.FieldByName('road_name').AsString then //=====값이 같지 않으면
begin
//도로명 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('road_name').AsString + '-> ' + q.FieldByName('road_name').AsString + ',' + '도로명 변경');
end
else if qryTemp.FieldByName('regioncd').AsString <> q.FieldByName('regioncd').AsString then //=====값이 같지 않으면
begin
//지역코드 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('regioncd').AsString + '-> ' + q.FieldByName('regioncd').AsString + ',' + '지역코드 변경');
end
else if qryTemp.FieldByName('tollLink').AsString <> q.FieldByName('tollLink').AsString then //=====값이 같지 않으면
begin
//유료도로 구분 Flag 변경
mmTextFile1.Lines.Append(qryTemp.FieldByName('pmi_mesh').AsString +' - ' +qryTemp.FieldByName('st_nd_id').AsString + ' ' + qryTemp.FieldByName('ed_nd_id').AsString + ' : ' + qryTemp.FieldByName('tollLink').AsString + '-> ' + q.FieldByName('tollLink').AsString + ',' + '유료도로 구분 Flag 변경');
end;
qryTemp.next;
end;
memo1.Lines.Append(qry.FieldValues['pmi_mesh'] +'비교완료');
qry.Next;
end;
mmTextFile1.Lines.SaveToFile(edit1.text+' - '+edit2.Text+'실험실험실험.txt'); // TEXT로 저장
mmTextFile1.Free(); // MEMO free
memo1.Lines.Append('비교 완료.!');
end;