델파이 데이타베이스
Post 한다음 Disk로 바로 저장하기 위해 DbiSaveChange함수를 쓰는 예입니다.
CustTable의 AfterPost이벤트 헨들러에서
procedure TDataModule2.CustTableAfterPost(DataSet: TDataSet);
begin
DbiSaveChanges((DataSet as TTable).Handle); //또는
DbiSaveChanges(CustTable.Handle);
end;
Table에서 레코드 검색
테이블에서 레코드를 검색하는 방법은 많이 있습니다.
GotoKey, FindKey, GotoNearest, FindNearest 등이 있으며
이것들은 모두 인덱스가 있는 파일만 검색합니다.
우선 위의 명령을 써서 검새을 하기 위해서는
Table콤포넌트의 IndexFileName 프로퍼티를 설정해야 합니다.
설정안하면 프라이머리 키를 가지고 찾습니다. (파라독스의 경우).
물론 이 인덱스 키는 테이블을 만들때 지정을 해주는 것입니다.
1. FindKey, FindNearest : 둘다 쓰는 법은 같습니다.
단지. FindKey는 조건값과 정확히 일치해야 하고,
FindNearest 는 조건값과 일치하는게 없으면 가장 비슷한 레코드를 찾습니다.
//Edit1.Text 와 일치하는 레코들 찾을때
//뭐가 일치하냐면 IndexFileName에
설정한 인덱스 필드와 Edit1.Text 가
일치하는 레코드를 찾아서 그 현재 레코드 포인터를
그 레코드로 이동시킴
begin
Table1.FindNearest([Edit1.Text]);
end
begin
if not Table1.FindKey(Edit1.Text]) then
ShowMessage('만족하는 레코드가 없습니다')
else
...
end;
FindKey는 일치하는 레코드가 없으면 False를 리턴합니다.
그리고 레코드 포인터는 그대로 있습니다.
GotoKey, GotoNearest
SetKey 또는 EditKey를 사용하여 Table의 State를 dsSetKey로 바꾸어 놓고
FieldByName으로 키 필드의 값을 입력하여 찾는 방식으로
SetKey는 검색어 버퍼를 비우고 새로 입력받을 준비를 하고
EditKey는 검색어 버퍼를 비우지 않고 이전 값을 바꿀 준비를 한다.
즉 키필드가 2개이상인 경우에 필드 하나느 고정이고
나머지 하나의 값만 변할때 이걸 찾을때는 SetKey로 첨에
두 개의 검색어를 모두 지정하고 그담에 한개만 변했을 때는
EditKey를 가지고 변한 필드의 값만 바꾸어서 찾으면 된다.
begin
Table1.SetKey;
Table1.FieldByName('LastName').AsString := Edit1.Text;
Table1.GotoNearest;
end;
Goto명령은 이런식으로 Setkey, FieldByName으로 검색할
조건을 지정한 다음에야 쓸수 있다.
만약 Table1.SetKey 없이
Table1.FieldByName('LastName').AsString := Edit1.Text;
이렇게 쓰면 이것은 테이블의 데이타를 갱신할수도 있으니 주의해야 한다.
(테이블의 상태에 따라 검색어가 될수도 있고 데이타가 될수도 있다)
begin
Table1.SetKey;
Table1.FieldByName('LastName').AsString := Edit1.Text;
if not Table1.GotoKey then
ShowMessage('검색어가 존재 하지 않습니다.')
else
...
end;
GotoKey도 일치하는 레코드가 없으면 False를 리턴합니다.
그리고 레코드 포인터는 그대로 있습니다.
만약 인덱스가 두개 이상의 필드로 이루어져 있으면
아래 처럼 쓸수도 있습니다.
with Table1 do
begin
EditKey;
FieldByName('State').AsString := 'CA';
FieldByName('City').AsString := 'Santa Barbara';
GotoKey;
end;
'Delphi Tip > 데이터베이스' 카테고리의 다른 글
데이터베이스(Database)에 실행파일 저장 (0) | 2024.06.14 |
---|---|
데이터셋 북마크 DataSet Bookmark (0) | 2024.06.07 |
델파이 데이타베이스 기초 4 (0) | 2023.10.06 |
델파이 데이타베이스 기초 3 (0) | 2023.10.05 |
델파이 데이타베이스 기초 2 (0) | 2023.10.04 |
댓글