質問
使用TDataSet.FindKeyを見つけることができる機能です。で結果がTrueのデータセットのカーソル位置付けは見つかります。きの結果がFalseの場合、カーソルが動かない。この結果の記録のデータをFindKeyで発行されていると表示中のデータ認識します。
たいのですがコードの結果FindKeyを返す空の名前を挙げた報告書を発表した。
if Not tblSomeTable.FindKey([SomeSearchData]) then
begin
< code to return empty or move data cursor to neutral position >
end;
更新: (待った数日前の選択を右に回答していると思うのですが、やはなwanを明らから。) が複数あった提案に取り組むこうした状況ではと思い、正しい答えたからMarceloることはできないのでカーソルを持ちません。複数の回避策があることが示唆された.選んだった。行ったようなもの:
If Not tblSomeTable.FindKey([SomeSearchData]) then
begin
tblSomeTable.FindKey([-1,2010]);
end
私たは作ダミー、白地に登録するための指標としては実際のデータができるものではない、ie:最初のインデックス値がないときは-1場合は、初期の検索が空白にしFindKeyますの位置にカーソルをこの空にします。この視覚効果でした。
解決
これは私の知る限りでは不可能です。 BofプロパティとEOFの両方が真(空のデータ・セット)でない限り、カーソルは常に、レコード上にある必要があります。
他のヒント
TDataSetない"中立の立場で".しかし常に少ないオプション:
- セットのデータセットに挿入追加記録モードになります。なので、制御コードが見を空にします。ご注意いがちなみに割り当てデータの分野での新記録が掲載されます。
- によってデータアクセスの部品を使用しているときにデータセットをキャッシュの更新モードでは、挿入後の新しい空の記録へのデータセット、マークのすべての変更として適用されます。それを割り当てるフィルター、通常は拒否することを空にします。そのコードでスイッチのフィルター上での拒絶するすべての記録を除き、この空にします。
- 考えるの切断TDataSourceからのデータセット以降の接続を設定することができます。
注確認できなかったが、おそらくが発明されたその他のアプローチ:)
ハロー、
代わりにFindKeyの使用SetRange。
tblSomeTable.SetRange([SomeSearchData],[SomeSearchData]);
try
while not tblSomeTable.Eof do begin
<do something with the Record>
tblSomeTable.Next;
end;
finally
tblSomeTable.CanelRange;
end;
するときに基準性を保証一致するレコードの最大は、あなたがゼロまたは1つのレコード上記の文で取得するものであること。
所属していません StackOverflow