Q&A

  • SQL문에 대한 질문.....
DB는 파라독스를 쓰구요.. 물론 TQuery컴포넌트로 DB에 접근하고 있읍니다.

제가 하고싶은건요.. 예를 들어서 DB의 필드가 n1,n2,n3,n4가 있다고 하면 form에서 edit box로 1을 입력하면 n1,2를 입력하면 n2,3을 입력받으면 n3,4를 입력받으면 n4필드의 값을 두배로 만들려고 합니다. 전 case문을 써서 입력받은 값에 따라 SQL문을 달리하므로써 각 필드에 접근했는데요.그렇게 하다보니 만약 필드가 4개가 아니라 20개라면 20번이나 SQL를 달리적어줘야하는 어려움이 있더군요,,. 혹시 아래처럼 간단하게 구현할순 없는지요..예를들어

field1 := edit1.text //필드명을 입력받아서 field1에 대입

query1.close;

query1.sql.clear;

query1.sql.add('update "test.db"');

query1.sql.add('set field1 = ?값을 두배해준다.?');

query1.sql.add('where 조건을 준다');

query1.execsql;

위와같이 필드명을 변수로 받아서 sql문에 필드명을 바로 변수로 사용할순 없는지요.

또한 어떻게 원래 필드값을 두배로 만들죠? 먼저 필드값을 따로 SQl문을 써서 SELECT해야하나요? 장황하게 설명해서 죄송합니다. 어떻게 정리가 안되는군요..

대강이라도 어떻게 도와주실순 없을까요? 급해요..





1  COMMENTS
  • Profile
    구창민 1999.11.24 10:48
    신승욱 wrote:

    > DB는 파라독스를 쓰구요.. 물론 TQuery컴포넌트로 DB에 접근하고 있읍니다.

    > 제가 하고싶은건요.. 예를 들어서 DB의 필드가 n1,n2,n3,n4가 있다고 하면 form에서 edit box로 1을 입력하면 n1,2를 입력하면 n2,3을 입력받으면 n3,4를 입력받으면 n4필드의 값을 두배로 만들려고 합니다. 전 case문을 써서 입력받은 값에 따라 SQL문을 달리하므로써 각 필드에 접근했는데요.그렇게 하다보니 만약 필드가 4개가 아니라 20개라면 20번이나 SQL를 달리적어줘야하는 어려움이 있더군요,,. 혹시 아래처럼 간단하게 구현할순 없는지요..예를들어

    > field1 := edit1.text //필드명을 입력받아서 field1에 대입

    > query1.close;

    > query1.sql.clear;

    > query1.sql.add('update "test.db"');

    > query1.sql.add('set field1 = ?값을 두배해준다.?');

    > query1.sql.add('where 조건을 준다');

    > query1.execsql;

    > 위와같이 필드명을 변수로 받아서 sql문에 필드명을 바로 변수로 사용할순 없는지요.

    > 또한 어떻게 원래 필드값을 두배로 만들죠? 먼저 필드값을 따로 SQl문을 써서 SELECT해야하나요? 장황하게 설명해서 죄송합니다. 어떻게 정리가 안되는군요..

    > 대강이라도 어떻게 도와주실순 없을까요? 급해요..

    >

    >



    겜방이라 방법론만 간단히 적어 보겠습니다.

    잘 안되시면 다시 질문 올려 주세요.

    SQL은 문자열의 조합이므로 쿼리를 날리는 간단한 함수를 먼저 작성하고,

    예를 들어 간단히 의사코드를 작성해보면

    Function ExcuteSQL(옵션변수, 쿼리문자열변수):Boolean;

    begin

    with Query do

    begin

    Close;

    Sql.Clear;

    Sql.Add(인자로넘어온 쿼리문자열변수);

    if 옵션변수가 Select늘 날려야 할 상황이면 then Open

    else ExecSQL:

    end;

    end;



    다음에 위의 함수를 호출하기 전에 먼저 쿼리를 보낼 문자열을

    조합하여 만들어 두는 일이 선행되어야 하겠지요.

    그건 Case문 내에서 하시면 되겠지요.

    Param을 사용해도 되는지는 테스트 해보지 않아서

    딱 부러지게 답변못드리겠군요.



    으음.. 도움이 되셨는지 모르겠습니다.

    부족한 답변이겠지만 즐거운 프로그래밍 되시길~