휠을 재발견하려는 대신 이미 데이터 세트 (이 경우 TTable) 기능을 사용해야합니다. TDataSet은이 목적을 위해 특별히 설계된 이벤트 (OnBeforePost)를 제공합니다.
TTable
을 클릭 한 다음 Object Inspector의 Events 탭으로 전환하십시오. OnBeforePost
이벤트를 찾아 두 번 클릭하여 코드 편집기에서 이벤트 셸을 생성합니다.
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
// DataSet is the TDataSet (TTable, TQuery, TADOQuery, etc.) to which
// event is attached
end;
레코드가 실제로 데이터베이스에 기록되기 전에 필요한 모든 유효성 검사를 수행 할 수 있습니다. 당신이 만드는하려는 경우 예를 들어, 반드시 모든 하나의 필드가 뭔가를 가지고, 당신은이 작업을 수행 할 수 있습니다
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
var
i: Integer;
begin
// You can replace DataSet with your actual table variable name, but using it
// this way allows you to use this same event for more than one table if you want.
for i := 0 to DataSet.FieldCount - 1 do
if DataSet.Fields[i].IsNull then
raise Exception.CreateFmt('Field %s has no value', DataSet.Fields[i].FieldName);
end;
를 확실 특정 필드 값을, 또는 확인하려면 값이 특정 범위 내에 있는지 직접 필드에 액세스 할 수 있습니다
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
if DataSet.FieldByName('MyField').IsNull then
Abort; // This silently cancels the post without telling the user
if DataSet.FieldByName('AField').AsInteger = 0 then
raise Exception.Create('AField must not be 0');
end;
지금 당신은 당신을 TDBGrid에 전혀 아무것도 할 필요가 없습니다. 사용자가 마지막 행의 DownArrow에 도달하여 새 행이 삽입되고 불완전하거나 잘못된 데이터를 입력하면 위의 이벤트가 처리합니다. 또한 이벤트가 다른 모든 것을 처리하기 때문에 두 개의 버튼 (삽입 또는 편집하고 게시하는 버튼)을 사용하는 경우에도 작동합니다.
procedure TForm1.ButtonInsertClick(Sender: TObject);
begin
Table1.Insert; // Or Append - if you have an index on the table they're the same thing
end;
procedure TForm1.ButtonPostClick(Sender: TObject);
begin
Table1.Post; // This is 100% of the code you need here
end;
편집 라인이 필요하지 않습니다. 추가 된 후 테이블은 dsinsert 상태에 있으며 값을 할당 할 수 있습니다. 또한 삭제하기 전에 dsedit 상태로 테이블을 설정할 필요가 없습니다. –
문제에 대해 구체적으로 설명하십시오. beforepost 이벤트의 모든 필드를 채우거나 afterinsert 이벤트에서 사전 정의 된 값으로 필드를 설정할 수 있습니다. 빈 셀이란 무엇입니까? ondrawdatacell 이벤트의 그리드에서 데이터 레코드를 제외하거나 모든 필드가 채워져 있으면 beforepost 이벤트를 체크 아웃 할 수 있습니다 (<> NULL은 데이터베이스에 따라 다름) –
** 내 DBGRID에 새 행을 추가하는 '버튼'이 있습니다. : ** 당신은 그 버튼의 OnClick 이벤트를 사용하여 데이터의 모든 유효성을 검사 할 수 있습니다. '유효한 데이터 없음'아니요'MessageTable.Append' ..... 유효한 데이터가 아닌'MessageTable.Append'를 호출하는 이유는 무엇입니까? 그리고'beforePost event'에서 그것을 잡아라. –