問題タブ [tdataset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - DataSetがDelphiのマスター/詳細関係のマスターであるかどうかを確認するにはどうすればよいですか?
TDataSet
呼び出されたときに子孫の現在のレコードを複製する「レコードの複製」アクションを作成したいと思います。データセットがマスター/詳細関係のマスターデータセットであるかどうかを確認するにはどうすればよいですか?TClientDataSet
かなり簡単ですが、このアクションをのすべての子孫で使用する必要がありますTDataSet
。
delphi - Master/Detail データセットで TDataSet.DisableControls を使用する方法
呼び出すTDataSet.DisableControls
と、マスター/詳細データセット間のリンクが無効になります。マスター/詳細関係に影響を与えずに、データベース対応コントロールの更新を無効にする別の方法はありますか? DataSource
個々のコンポーネントをに設定できることは知っていますnil
が、これは私にとって実用的な方法ではありません。
delphi - フィルタを適用するときにデータセットを更新する
Delphi 5のTRxQuery(TQueryの子孫)がグリッドにバインドされています。フィルタ編集ボックスを追加していて、ユーザーが入力したときにグリッドをフィルタリングしたいと思います。不要なちらつきが発生するため、クエリを閉じて再度開くことなくデータセットをフィルタリングする方法はありますか?
どうもありがとう
delphi - あるテーブルから別のテーブルにレコードをコピーできない
BDE とフラット テーブルを使用しています。2 つの同一のテーブルがtblOne
ありtblTwo
、あるテーブルから別のテーブルにデータをコピーしようとしています。DB全体ではなく、これを使用する特定の1つのレコードのみ:
これをステップ実行すると、すべての値が From テーブルの「Null」になります。
Post の後、空白のレコードが に追加されますtblTo
。すべての値が Null であることは驚くべきことではありません。:)
データのコピーでどこが間違っていますか? コピー機能にはなっていません。
私はこれを数時間行っており、機能させることができません。おそらく、私が見落としている単純なものです。「var」パラメーターを追加して、違いがあるかどうかを確認しましたが、違いはありませんでした。
ところで、両方のファイルの最初のフィールドがAutoInc
.
delphi - Delphi TDataSet をフィルタリングする場合、NULL キーワードと BLANK キーワードに違いはありますか?
TDataSet の Filter プロパティを使用する場合、次のフィルタを入力します。
BLANK は空であるが null ではないことを意味しますか、それとも同等ですか、またはこれら 2 つのフィルターの間に他の違いがありますか?
delphi - グリッドの最初の行が選択されていない状態で RowCount > VisibleRowCount を実行すると、DBGrid の一番上の行に表示されるデータセットの行はどれですか?
基になるデータセットのレコード数が現在選択されている行ではない場合、DBGrid の一番上の行にある基になるデータセットから表示される行番号を取得することは可能ですか? DBGrid に表示される行数、および DBGrid がスクロールされました。
これが私の問題です。DBGrid に接続されたドラッグ/ドロップ イベント ハンドラから、MyGrid.MouseCoord(X,Y).Y を使用して、DBGrid のどの可視行にドロップ イベントが関連付けられているかを判断できます。基になるデータセットに含まれるレコード数が、DBGrid に表示される行数と同じかそれ以下の場合、この値は基になるデータセット内の関連付けられたレコードの行番号でもあります。
基になるデータセットに DBGrid の表示可能な行数よりも多くのレコードが含まれている場合、MyGrid.MouseCoord(X, Y).Y と TDataSet(MyGrid.DataSource.DataSet).RecNo は、データセットの最初の行が表示されたときにのみ同じになります。グリッドの最初の行。
DBGrid 行を選択せずに、DBGrid の一番上に表示されているレコードの基になるデータセット (またはオフセット) のレコード番号を特定する方法はありますか? DBGrid の一番上の行を実際に選択すると、TDataSet(MyGrid.DataSource.DataSet).RecNo を使用して、基になるデータセットの現在のレコード番号を取得できることがわかっています。ただし、DBGrid.OnDragOver または DBGrid.OnDragDrop イベントからは、DBGrid とマウス座標への参照しかありません (そこから、グリッドのどの行がドロップのターゲットであったかを判断できます)。
たとえば、DBGrid が基になるデータセットの 3 番目のレコードをグリッドの一番上の行に表示していると判断できれば、問題は解決します。同様に、特定の行 (一番上の行など) の基になる TField を、その行を選択せずに読み取ることができれば、必要なものはすべて揃っています。ただし、これを行う方法がわかりません。
どんな提案でも大歓迎です。
編集: 以前、DBGrid へのドラッグ アンド ドロップに関するブログを投稿しました。この新しい情報を使用して、既知の問題を解決できます。今週中にそのブログを更新し、そのブログへのリンクをここに追加します。
追加の問題があります。表示されている行の数が基になるレコードの数よりも少ない場合、表示されている最後の行の後にドロップが発生した場合のドロップの計算にも対応する必要があります。表示されている最後の行の後にドロップすると、MouseCoord(x,y).Y は -1 を返します。
その目的を達成するための Uwe のコードの変更を次に示します。
編集:元の質問で述べたように、DBGRid へのドラッグ アンド ドロップを実装するコードの動作を修正するために、この回答に興味がありました。この回答で、ドラッグ アンド ドロップの動作を更新し、この更新についてブログに書きました。元のブログ投稿へのリンクを含むこのディスカッションは、次の URLにあります。
database - Delphi - 実行時にフィールドを計算フィールドに変更します。これは良い習慣ですか?
質問のタイトルにあるように、計算フィールドの使用方法について同僚と議論しています。私の知る限り、実行時に計算フィールドをクエリに追加するという質問に対するフランソワの回答のように、計算フィールドは実行時に作成されます。同じ質問には、sabri.arslan からの別の回答があり、既存のフィールドを計算されたフィールドに変更することを提案しています (以下のコード)。
この変更は、指定された TField の未知の動作につながると思います。ランタイムでデータセット フィールドを計算フィールドに変更しても安全ですか? これにより、どのような問題が発生する可能性がありますか?
LE: これは質問です。その目的は、実行時にデータセットに計算フィールドを追加するための優れた方法を示すことです。そして、はい、実行時に計算フィールドを追加するのは悪い設計です。
LE2: これは、「このようにしないでください」の単なる例です。議論として、これを行った後の議論でフィールドの動作は何かを尋ねました。そのフィールドはどのように機能しますか?
delphi - IsFirstRecord と IsLastRecord を実装するには?
ユーザーがコントロールをクリックしても無意味な場合は、コントロールを無効にするのが好きです。
特殊なケースの 1 つは、標準の最初、前、次、および最後のボタンをエミュレートする一連のカスタム メニュー ボタンですTDBNavigator
。
ユーザーが最初のボタンをクリックすると、最初のボタンと前のボタンの両方が無効になります。
次にユーザーが次のボタンと前のボタンをクリックすると、基になるボタンはTDataSet
以前と同じレコードに配置されますが、最初のボタンと前のボタンは両方とも有効なままです。
現在の実装は次のようになります。
Bof
Eof
現在のレコードが最初/最後のレコードになるかどうかを事前に知る必要があるため、ボタンを無効にする正しい方法ではありません。
IsFirstRecord
そこで、 andIsLastRecord
メソッドを使用してこれを書き直すことを考えました。
最初のレコードが正しくないケースを見たことがあるので、これは良い考えではないと思いRecNo = 0
ます。(つまり、フィルタリングされた TADSQuery)
と の信頼できる実装IsFirstRecord
とはIsLastRecord
? TDataSet
現在のアーキテクチャを使用することは可能ですか?