Q&A

  • TQuery에서 CachedUpdates 사용하기
TQuery에서 CachedUpdates를 true로 놓고 사용을 하였는데 잘 안되네요.



Query의 SQL에 parameter를 이용하여 insert문을 작성하였습니다.



INSERT INTO Table1 (Field1, Field2) VALUES( :P_1, :P_2 )



와 같은 식으로요.



parameter에 값을 바꿔가며 loop를 돌려가며 ExecSQL을 하였는데,



바로 DB에 저장이 돼네요.



저는 이런 식으로 입력된 값들이 나중에 Commit을 하면 한꺼번에



DB에 저장되게 하고 싶습니다.



TDatabase의 StartTransaction을 사용하거나 Table을 직접 열어



열지 않고 가능하면 위처럼 parameter를 쓰고 싶은데 방법이 없을까요?



그럼 20000



1  COMMENTS
  • Profile
    김고진 1999.09.15 02:39
    문승진 wrote:

    > TQuery에서 CachedUpdates를 true로 놓고 사용을 하였는데 잘 안되네요.

    >

    > Query의 SQL에 parameter를 이용하여 insert문을 작성하였습니다.

    >

    > INSERT INTO Table1 (Field1, Field2) VALUES( :P_1, :P_2 )

    >

    > 와 같은 식으로요.

    >

    > parameter에 값을 바꿔가며 loop를 돌려가며 ExecSQL을 하였는데,

    >

    > 바로 DB에 저장이 돼네요.

    >

    > 저는 이런 식으로 입력된 값들이 나중에 Commit을 하면 한꺼번에

    >

    > DB에 저장되게 하고 싶습니다.

    >

    > TDatabase의 StartTransaction을 사용하거나 Table을 직접 열어

    >

    > 열지 않고 가능하면 위처럼 parameter를 쓰고 싶은데 방법이 없을까요?

    >

    > 그럼 20000

    >



    SQL 문에서 Insert문은 실행(Command) SQL이므로 CacheUpdates와는 상관없이 동작이 바로 이루어 집니다. 그래서 Query1.EcecSQL;로 델파이이에서 실행하지요.

    CacheUpdates 기능을 하고 싶을때는 TQuery컴포넌트와 UpdateSQL컴포넌트를 사용하여 TQuery와 UpdateSQL컴포넌트를 연결하여 레코드를 추가할때 SQL문으로 추가하지 않고 Query1.Insert(or Query1.Append); 델파이 함수를 사용하여 추가하시면 CacheUpdates기능을 사용할 수 있습니다.