質問

使用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ない"中立の立場で".しかし常に少ないオプション:

  1. セットのデータセットに挿入追加記録モードになります。なので、制御コードが見を空にします。ご注意いがちなみに割り当てデータの分野での新記録が掲載されます。
  2. によってデータアクセスの部品を使用しているときにデータセットをキャッシュの更新モードでは、挿入後の新しい空の記録へのデータセット、マークのすべての変更として適用されます。それを割り当てるフィルター、通常は拒否することを空にします。そのコードでスイッチのフィルター上での拒絶するすべての記録を除き、この空にします。
  3. 考えるの切断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つのレコード上記の文で取得するものであること。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top