안녕하세요.
dbgrid에서 테이블 또는 query에 없는 필드(new field)를 만들어서 맨 처음 칼럼에
일련번호를 넣고자 합니다.. (오름&내림차순으로)
예를 들면
순번 등록일자 등록자 제목
5 1999-01-10 1111 222222222222
4 1999-01-07 2221 222222222222
3 1999-01-03 1111 222222222222
2 1999-01-02 3333 222222222222
1 1999-01-01 2232 222222222222
이런식으로 가능한가요?
> 안녕하세요.
> dbgrid에서 테이블 또는 query에 없는 필드(new field)를 만들어서 맨 처음 칼럼에
> 일련번호를 넣고자 합니다.. (오름&내림차순으로)
>
> 예를 들면
>
> 순번 등록일자 등록자 제목
> 5 1999-01-10 1111 222222222222
> 4 1999-01-07 2221 222222222222
> 3 1999-01-03 1111 222222222222
> 2 1999-01-02 3333 222222222222
> 1 1999-01-01 2232 222222222222
>
> 이런식으로 가능한가요?
전에 올렸던 내용입니다
-------------------------------------------------------------------------
지금까지 나온 자료는 Paradox 와 dBASE 이외의 SQL server기반 table 에서는
BDE 가 레코드 번호를 얻을 수 없다고 나와 있습니다
ORACLE 의 경우는 Rowid, Rownum 을 사용하여 일련번호는 아니지만
유일한 숫자를 얻을 수 있습니다
예:
SELECT ROWID, ROWNUM
FROM 테이블명
아래는 제가 가지고 있던 자료인데요 BDE 함수를 사용한 레코드번호를
얻을 수 있는 함수입니다(recno 메소드를 사용해도 됩니다)
이것도 Paradox 와 dBASE 이외의 테이블은 0 을 리턴합니다
uses
DB, DBTables, DbiProcs, DbiTypes, DbiErrs;
function GetRecordNumber(Dataset: TDataset): Longint;
var
CursorProps: CurProps;
RecordProps: RECProps;
begin
{ Return 0 if dataset is not Paradox or dBASE }
Result := 0;
with Dataset do
begin
{ Is the dataset active? }
if State = dsInactive then
raise EDatabaseError.Create('Cannot perform this operation '+
'on a closed dataset');
{ We need to make this call to grab the cursor's iSeqNums }
Check(DbiGetCursorProps(Handle, CursorProps));
{ Synchronize the BDE cursor with the Dataset's cursor }
UpdateCursorPos;
{ Fill RecordProps with the current record's properties }
Check(DbiGetRecord(Handle, dbiNOLOCK, nil, @RecordProps));
{ What kind of dataset are we looking at? }
case CursorProps.iSeqNums of
0: Result := RecordProps.iPhyRecNum; { dBASE }
1: Result := RecordProps.iSeqNum; { Paradox }
end;
end;
end;