Q&A

  • 아랫분 답변이 이해가 잘안되어서요^^
q1.sql.add('select * from mymdb');
q1.open;
while not q1.eof do begin
  q2.sql.clear;
  q2.sql.add('update mysql set ...');
  q2.sql.add('where sqlkey=:mdbkey');
  q2.parambyname('mdbkey').asstring:=q1.fieldbyname('mdbkey').asstring;
  q2.execsql;
  q1.next;
end;

아랫분이 답변하신 부분입니다. 답변 감사드리구요..^^
q2.parambyname('mdbkey').asstring:=q1.fieldbynam('mdbkey').asstring;
이부분이 특히 이해가 안가거든요.
제가 하고자 하는것은 하나의 mdb와 sql db 를 비교해서 2개의 키값이 일치하는 레코드에 한해서 나머지 필드값을 업데이터 하고 싶거든요.

위 코드는 일단 mdb 읽어와서 sql db에서 업데이터 하는것은 맞는 것 같은데
아시는분 보충 설명좀 해주세요...^^
2  COMMENTS
  • Profile
    김기수 2002.05.16 03:01
        q2.sql.add('and sqlkey2=:mdbkey2');
        q2.parambyname('mdbkey2').asstring:=q1.fieldbyname('mdbkey2').asstring; //두개의 키값을 비교하기 원한다면
       //이렇게 해야 될꺼구요
    q2.parambyname('mdbkey').asstring:=q1.fieldbynam('mdbkey').asstring;
    이부분이 이해가 안간다고 하셨는데 parambyname 과 fieldbyname 이 이해가 안간다는 건가요?
    그건 아래 찾아보시면 답이 있구요,
    일치하는게 없을경우는 어쩔꺼냐 머 이런 의문이 생기시는가 본데
    일치하는 키값이 없을경우 아무런짓도 하지 않고 next 하게 됩니다.
  • Profile
    이경규 2002.05.15 21:36

    이부분은 아래것과 같은 것입니다.

      q2.sql.add('where sqlkey=' + q1.fieldbyname.value);

    먼저 답변하신 분의 경우는 SQL 문내에 변수를 사용해서
    Key 값의 자료형에 영향을 받지 않구요.
    두번째 것은 상황에 따라 따옴표 등의 기호를
    섞어주셔야지요.
    정수형일 경우는 IntToStr 을 써주셔야 할테고요.
    두개의 Key 값이라고 하셨으니, AND 쓰셔야 하는것은 아시지요?
    위의 예는 하나만 비교할 경우네요.

    대신 답변드렸습니다.