Q&A

  • 3개의 참조된 테이블에서의 insert 요령좀여.....
3개의 참조괸 테이블에서의 insert 방법좀 가려쳐 주세여
우선 키는 order_no 입니다
[나의 생각]
with query2 do begin
close;
sql.clear;
sql.add('insert into users(order_no,order_name,receive_name,receive_tel1,receive_tel2,receive_zip,receive_add,vendor)');
               sql.add('values('''+a1+''','''+a2+''','''+a3+''','''+a4+''','''+a5+''','''+a6+''','''+a7+''','''+x+''')');
               execsql;
             end;
             with query3 do begin
               close;
               sql.clear;
               sql.Add('insert into item(order_no,item,qty,service_item)');
               sql.add('values('''+a1+''','''+a8+''','''+a9+''','''+a10+''')');
               execsql;
             end;
             with query4 do begin
               close;
               sql.clear;
               sql.Add('insert into printe(order_no)');
               sql.add('values('''+a1+''')');
               execsql;
             end;
             gauge1.Progress :=i;
             application.processmessages;
             frmchange.caption:='Excel data를 DB로 저장중입니다..';
           end;//for
1  COMMENTS
  • Profile
    깨구락지 2003.03.15 10:52
    아래처럼 하셔도 되지만-참조키가 저장되므로- 만약 아래 개의 쿼리중 한가지에서 에러가 발생한다면 데이타무결성에 문제가 생기게 됩니다.
    전표는 있는데 전표내역이 없다던가 거꾸로 전표내역만 존재하게 되는 문제가
    생길수 있지요.
    다음의 방법으로 사용합니다.
    database1.starttransaction;
    try
      with query2 do begin
        Do Something
      end;
      with query3 do begin
        Do Something
      end;
      with query4 do begin
        Do Something
      end;
      database1.commit;
    except
      database1.RollBack;
      showmessage('쿼리중에러!!');
    end;
    무식한것이 가끔은 가장 간단한 해결방법이 될수도 있습니다.