Q&A

  • TQuery를 이용하여 직접 테이블에 값대입은??
테이블에 직접 값을 다이렉트로 넣고 싶습니다.

예를 들어 현재레코드의 3번째 필드에 'jjj'를 대입한다든지

CodeName필드에 'kkk'를 넣는다든지.... 등등

params을 이용했는데 잘 되지가 않습니다.

부탁합니다.



4  COMMENTS
  • Profile
    여영식 2000.01.12 19:19
    TQuery 컴포넌트는 기본적으로 SQL 문을 사용해서 테이블을 수정하는것이 좋습니다.

    그러나

    Query1.RequestLive := True;

    Query1.Edit;

    Query1.FieldByName('CodeName').AsString := 'kkk';

    Query1.Post;

    이런 식으로 하면 될것 같습니다.

    ---

    초보 wrote:

    > 테이블에 직접 값을 다이렉트로 넣고 싶습니다.

    > 예를 들어 현재레코드의 3번째 필드에 'jjj'를 대입한다든지

    > CodeName필드에 'kkk'를 넣는다든지.... 등등

    > params을 이용했는데 잘 되지가 않습니다.

    > 부탁합니다.

    >

  • Profile
    정은아 2000.01.12 23:39
    제가 미처 생각지 못한 부분이라 코딩을 따라 해보다가 안되서 생각해보니까요..

    Quary 컴포넌트는 테이블 이름을 지정해줄 수 없지 않나요?

    아래 보면 테이블 이름을 정하는 내용은 없네요..

    테이블 지정을 해야 거기서 해당되는 걸 검색을 하던지 할 수 있는 거 아닌가요?

    제가 하다하다 안돼서 질문 올립니다. 갈켜주세요^^



    여영식 wrote:

    > TQuery 컴포넌트는 기본적으로 SQL 문을 사용해서 테이블을 수정하는것이 좋습니다.

    > 그러나

    > Query1.RequestLive := True;

    > Query1.Edit;

    > Query1.FieldByName('CodeName').AsString := 'kkk';

    > Query1.Post;

    > 이런 식으로 하면 될것 같습니다.

    > ---

    > 초보 wrote:

    > > 테이블에 직접 값을 다이렉트로 넣고 싶습니다.

    > > 예를 들어 현재레코드의 3번째 필드에 'jjj'를 대입한다든지

    > > CodeName필드에 'kkk'를 넣는다든지.... 등등

    > > params을 이용했는데 잘 되지가 않습니다.

    > > 부탁합니다.

    > >

  • Profile
    여영식 2000.01.13 02:39
    TQuery에서는 테이블을 지정할 수 없습니다. TQuery 컴포넌트는 기본적으로 SQL 문 즉

    INSERT, UPDATE, DELETE, SELECT을 이용해서 데이터를 수정,조회할 수 있는것이지요.

    따라서 직접 테이블에 값을 대입하기 위해서는 먼저 Query가 조회상태이어야 합니다.

    예를들면

    with Query1 do

    begin

    Sql.Close;

    Sql.Clear;

    Sql.Add('SELECT * FROM TEST');

    Sql.Open;

    end;



    이렇게 하면 Query가 조회상태가 되지요.

    이 상태에서 입력, 수정 하기 위해서



    Query1.RequestLive := True;

    Query1.Append; -> 입력시

    Query1.Edit; -> 수정시

    Query1.FieldByName('CodeName').AsString := 'kkk';

    Query1.Post;



    하면 저장이 되겠습니다. 그러나 저장이 되었다고 현재 조회상태인 자료에 추가가 되는것

    은 아닙니다. 따라서 새로운 데이터를 읽기 위해 Query를 Close 후 다시 Open하는 과정이

    필요합니다.



    믿거나말거나...



    ---







    정은아 wrote:

    > 제가 미처 생각지 못한 부분이라 코딩을 따라 해보다가 안되서 생각해보니까요..

    > Quary 컴포넌트는 테이블 이름을 지정해줄 수 없지 않나요?

    > 아래 보면 테이블 이름을 정하는 내용은 없네요..

    > 테이블 지정을 해야 거기서 해당되는 걸 검색을 하던지 할 수 있는 거 아닌가요?

    > 제가 하다하다 안돼서 질문 올립니다. 갈켜주세요^^

    >

    > 여영식 wrote:

    > > TQuery 컴포넌트는 기본적으로 SQL 문을 사용해서 테이블을 수정하는것이 좋습니다.

    > > 그러나

    > > Query1.RequestLive := True;

    > > Query1.Edit;

    > > Query1.FieldByName('CodeName').AsString := 'kkk';

    > > Query1.Post;

    > > 이런 식으로 하면 될것 같습니다.

    > > ---

    > > 초보 wrote:

    > > > 테이블에 직접 값을 다이렉트로 넣고 싶습니다.

    > > > 예를 들어 현재레코드의 3번째 필드에 'jjj'를 대입한다든지

    > > > CodeName필드에 'kkk'를 넣는다든지.... 등등

    > > > params을 이용했는데 잘 되지가 않습니다.

    > > > 부탁합니다.

    > > >

  • Profile
    오장균 2000.01.14 00:46
    저도 이문제로 테스트를 했었는데, 어떻게 어떻게 하다보니 잘 되더라구요...

    그래서 안심하고 프로그래밍을 계속한뒤 실행을해보니 난대없이 Read-Only뭐라뭐라는

    에러가 나더군요... ^^;



    여기 답변을 보고서야 안심을 하고 테스트를 했었는데... 왜 안되는지... T.T

    그러나 결국 나에게 그 한계를 보였으니... 하하하~



    우선 TQuery를 이용한 결과에서 값을 변경할 수 있습니다. 그 방법들은 여영식님께서 답변해 주신 그대로 죠...

    그러나 그 SQL에 문제가 있습니다.

    SQL을 아래과 같이 몇가지로 보였는데



    SQL1 - 'SELECT * FROM "D:MASTER.DBF"'

    SQL2 - 'SELECT * FROM "D:MASTER.DBF" WHERE CHKUPLOAD = TRUE'

    SQL3 - 'SELECT * FROM "D:ProjectDB2PSDatabaseMASTER.DBF" WHERE CHKUPLOAD = TRUE ORDER BY SYMBOL ASC'



    입니다.

    여기서 SQL1번과 SQL2번은 Query1.Edit에 의해 수정이 가능합니다.

    그러나 소팅되어진 결과인 SQL3번은 Read-Only입니다.

    변경이 불가능하죠...



    물론 제 결과는 제가 테스트한 것에 의한 자료입니다.

    혹시 ODER BY 절이 들어간 것을 Edit로 변환할 수 있는 방법을 아시는 분은 제게 메일을 보내 주시면 감사하겠습니다.





    여영식 wrote:

    > TQuery에서는 테이블을 지정할 수 없습니다. TQuery 컴포넌트는 기본적으로 SQL 문 즉

    > INSERT, UPDATE, DELETE, SELECT을 이용해서 데이터를 수정,조회할 수 있는것이지요.

    > 따라서 직접 테이블에 값을 대입하기 위해서는 먼저 Query가 조회상태이어야 합니다.

    > 예를들면

    > with Query1 do

    > begin

    > Sql.Close;

    > Sql.Clear;

    > Sql.Add('SELECT * FROM TEST');

    > Sql.Open;

    > end;

    >

    > 이렇게 하면 Query가 조회상태가 되지요.

    > 이 상태에서 입력, 수정 하기 위해서

    >

    > Query1.RequestLive := True;

    > Query1.Append; -> 입력시

    > Query1.Edit; -> 수정시

    > Query1.FieldByName('CodeName').AsString := 'kkk';

    > Query1.Post;

    >

    > 하면 저장이 되겠습니다. 그러나 저장이 되었다고 현재 조회상태인 자료에 추가가 되는것

    > 은 아닙니다. 따라서 새로운 데이터를 읽기 위해 Query를 Close 후 다시 Open하는 과정이

    > 필요합니다.

    >

    > 믿거나말거나...

    >

    > ---

    >

    >

    >

    > 정은아 wrote:

    > > 제가 미처 생각지 못한 부분이라 코딩을 따라 해보다가 안되서 생각해보니까요..

    > > Quary 컴포넌트는 테이블 이름을 지정해줄 수 없지 않나요?

    > > 아래 보면 테이블 이름을 정하는 내용은 없네요..

    > > 테이블 지정을 해야 거기서 해당되는 걸 검색을 하던지 할 수 있는 거 아닌가요?

    > > 제가 하다하다 안돼서 질문 올립니다. 갈켜주세요^^

    > >

    > > 여영식 wrote:

    > > > TQuery 컴포넌트는 기본적으로 SQL 문을 사용해서 테이블을 수정하는것이 좋습니다.

    > > > 그러나

    > > > Query1.RequestLive := True;

    > > > Query1.Edit;

    > > > Query1.FieldByName('CodeName').AsString := 'kkk';

    > > > Query1.Post;

    > > > 이런 식으로 하면 될것 같습니다.

    > > > ---

    > > > 초보 wrote:

    > > > > 테이블에 직접 값을 다이렉트로 넣고 싶습니다.

    > > > > 예를 들어 현재레코드의 3번째 필드에 'jjj'를 대입한다든지

    > > > > CodeName필드에 'kkk'를 넣는다든지.... 등등

    > > > > params을 이용했는데 잘 되지가 않습니다.

    > > > > 부탁합니다.

    > > > >