Q&A

  • query 컴포넌트 open했을때..
안녕하세요`~~



음..query콤포넌트를 새로 query1.open;했을 때

선택되는 행이 첫번째 행으로 되어버리거든요 ?



이거 새로 query1.open하기 전의 그 위치에 있게 할려면 어떻게 해야하죠 ?

1  COMMENTS
  • Profile
    손상택 2000.05.26 21:24
    또 도와주세요...ㅠㅠ wrote:

    > 안녕하세요`~~

    >

    > 음..query콤포넌트를 새로 query1.open;했을 때

    > 선택되는 행이 첫번째 행으로 되어버리거든요 ?

    >

    > 이거 새로 query1.open하기 전의 그 위치에 있게 할려면 어떻게 해야하죠 ?



    Locate 함수를 쓰면 될 것 같군요.

    query1을 open 하시구요. 그 다음행에 다음과 같이 작성해 보세요.

    query1.Locate('PK_1;PK_2',VarArrayOf([var_1,var_2]),[loPartialKey]);



    여기서 PK_1, PK_2 에는 open된 테이블의 primary key의 필드명을 적으세요. 여기서는 2개로 되어있지만 테이블마다 서로 다르겠죠.

    var_1, var_2 는 특정데이터 값을 가지고 있는 변수를 말합니다.

    사전에



    var

    var_1, var_2 : String ;



    으로 선언한 후에 query1이 새로 open되기 전에 위치해 있던 레코드의 데이터(primary key에 해당되는 데이터)를 이 변수에 저장시킵니다.

    var_1 := query1.FieldByName('PK_1').AsString;

    var_2 := query1.FieldByName('PK_2').AsString;



    그 다음에 새로 query1을 open 시키고, Locate 함수를 호출하는 겁니다.

    query1.Locate('PK_1;PK_2',VarArrayOf([var_1,var_2]),[loPartialKey]);



    PK_1 은 var_1과 PK_2 는 var_2에 대응됩니다.

    따라서 query1을 새로 open한 뒤에 전의 위치로 레코드포인터가 이동하게 됩니다.

    단, Locate함수에서 쓰여진 loPartialKey 는 db 에 정의되어 있어서 uses절에 db라고 적어주셔야 합니다.



    에구구.. 글이 너무 두서가 없어서 알아 보실런지...

    건강한 여름 보내시길.