問題タブ [tadodataset]
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 - 「bof または eof のいずれかが true であるか、現在のレコードが削除されています..」削除操作を含む applyupdates のエラー
ClientDatset から TAdoDataset (アクセス テーブルにバインドされている) への削除操作を解決しているときに、このエラーが発生します。Delphi 2010 を使用しています。
TClientDataset と TAdoDataset の間の私の DatasetProvider :
TDataSetResolver.EndUpdate() によって呼び出されるこの関数でエラーが発生します。
delphi - 独立したクローン TADODataSet を実現するには?
シナリオは次のようになります。
SQL テーブルがあります。このテーブルで SQL クエリを実行しており、TADOQuery オブジェクトに結果が含まれています。
したがって、DataSet のクローンを作成した後、qryClone は独立したデータを保持する必要があります (少なくとも私はそう思いました)。ただし、qryOryginal で削除を実行すると、qryClone でも同じ操作が行われます。私はそれをしたくありません。
何か案は?
おそらく TClientDataSet にデータを保存できることはわかっていますが、最初に上記のソリューションを試してみたいと思います。
お時間をいただきありがとうございます。
sql-server - nchar(1) フィールドを扱う Delphi XE Unicode
Delphi XEで dbGo を使用してTADODataset
、SQL Server 2008 テーブルからデータを読み取ります。すべての文字列フィールドは nvarchar または nchar です。
nvarchar フィールドTWideStringField
は問題なくマップされます。
問題はフィールドにあります。これは罰金nchar(1)
にマップされますが、フィールドにはマップされません。フィールドを次のように構成すると、エラーが発生します。TStringField
TWideStringField
TWideStringField
フィールド の型が一致し
'foobar'
ません。予想:WideString
実際:FixedChar
a を使用する際の問題TStringField
は、それが UTF8 であり、アプリケーションを完全に Unicode に準拠させたいことです。
これに関する提案はありますか?
delphi - ADO コンポーネント CommandTimeout
TADOQuery、TADOCommand、または TADODataSet でのクエリ実行タイムアウトの設定に問題があります (それぞれで試しました)。データベースに接続し、結果としてデータセットを返すストアド プロシージャを定期的に実行する小さなアプリケーションがあります。私の目的は、このアプリケーションを常にオンラインに保つことですが、私の問題は、接続が失われると、(前述のコンポーネントの 1 つを介して) 実行されたばかりのコマンドのタイムアウトにデフォルトの 30 秒かかることです。私は解決策を探していましたが、何もうまくいきません。 CommandTimeout を 5 秒以上に設定して、自分のタイムアウトを尊重するために ADODB.pas を変更する方法を教えてください。
set DataComponent.Connection.CommandTimeout := 1; のように、これには多くの「解決策」がありました。しかし、実際には何も機能しません。私はD2009、MSSQL2005を使用しており、データコンポーネントとともに接続がスレッドで動的に作成されます。
最後に、私が試したのはこれです
どうもありがとう :)
delphi - ADODataset:一時ファイルなしでXML(ADOスキーマのDBに事前に保存されている)データをロードする方法は?
警告:完全に書き直します。
シナリオ:
TCustomADODatasetの子孫にデータベースからいくつかのデータをロードしました。その後、このデータをXML一時ファイルに(TCustomADODataset.SaveToFileを使用して)保存し、XMLデータを文字列として取得し、データベーステーブルにテキストblobとして保存できるようにしました。これはエクスポートテーブルです。
別のプログラム(XMLを格納したプログラムとは異なります)は、そのデータを取得し、内部の要素を表示して、ユーザーがメインデータベーススキーマにインポートする要素を選択できるようにします。
問題:
上記のアプローチの問題は、TCustomADODatasetがLoadFromFileメソッドを使用できるようにするための一時ファイルの必要性です。
データベースエクスポートテーブルにテキストとして保存されているXMLデータを一時ファイルを必要としないTCustomADODatasetにロードする他の方法はありますか?
ノート:
- この場合、TClientDatasetはオプションではありません。
sql - 結合されたテーブルからのADODataSetの削除
次のようなクエリからプレイされたゲームのリストを表示するDelphiアプリがあります。
DBNavigatorの削除ボタンをクリックすると、game_typesテーブルの結合されたレコードも削除されます。他の多くのゲームも同じタイプである可能性があるため、これは問題です。
ゲームのみが削除され、ゲームタイプは削除されないようにするには、どうすればよいですか?
delphi - 実行時に TDataSet ルックアップ フィールドを作成する方法
TADODataSet
(D7)を使用しています。
DataSet を使用してデザイン モードで永続フィールドを作成しません。
[すべてのフィールドを追加] をダブルクリックしdsItems
、[新しいフィールド] をクリックしてルックアップ フィールドを定義すると、すべて正常に動作します。結果dsItems
には次が含まれている必要があります。ID, ItemName, UserIDCreate, LoginName_Lookup
設計時にこれをすべて行うことを避け、DataSet が開かれた後/または前に (わからない) ルックアップ フィールドを追加するにはどうすればよいでしょうか。
言い換えれば、 「すべてのフィールドを追加」をエミュレートしてから「新規フィールド」をエミュレートして、実行時にルックアップファイルを追加するにはどうすればよいですか?
注:
IDE から John のコードを実行すると、例外が発生します。DataSet: を開こうとすると、例外が発生しますEOleException with message 'An unknown error has occured'
。
function TCustomADODataSet.LocateRecord (ADODB.pas)
列をなしてif FieldCount = 1 then FLookupCursor.Find...
コンパイルされたプログラムが機能しているため、回答を受け入れています。
IDE 内でフォームを実行するときに例外が発生する (または発生しない) ことを誰かが確認できるとよいでしょう。
delphi - ストリーミング フィールドを持つ TADODataSet コンポーネントを複製しますか?
コンポーネントとそのイベントを複製するために、これと非常によく似たコードがあります。TADODataSet
したがって、以前のコンポーネントの正確な複製コンポーネントとしてADODataSet1
新しいインスタンスを作成したい場合。ADODataSet2
すべて正常に動作しますが、それでもストリーミング フィールド( ADODataSet1PollID
、ADODataSet1Title
、ADODataSet1Description
)を複製できません。
私が抱えているもう1つの問題は、 にADODataSet1
設定するActive=True
と、 を呼び出すとms.ReadComponent(Dest)
、前Active
にストリームが発生し、例外「Missing Connection or ConnectionString」が発生することです。書き込み後にActive を設定するにはどうすればよいですか? (回避策は、複製する前に設定することです)。 Connection
False
ms.WriteComponent(Source)
ADODataSet1.Active := False
注:データセット (TADODataSet.Clone) でカーソル/レコードセットを複製したくないので、「重複した質問」と見なさないでください。
delphi - Delphi - ADODataSet サブセット
サービスのドロップダウンと選択したサービスのアドオンのグリッドを持つフォームを Delphi で作成しています。私が取得しているデータは API から取得され、サービスのデータを次のように ADODataSet に格納しています。
ドロップダウンからの選択に基づいて、グリッドに AddOn データを入力したいと思います (各サービスには、アドオンの異なるリストがあります)。サービス情報に関連付けられるように、アドオン情報を保存するにはどうすればよいですか? 2 番目の ADODataSet を作成する必要がありますか、それともサービスと同じ ADODataSet に格納する方法はありますか?
アドオンには次のフィールドがあります。
私は Delphi 2005 を使用しており、Indy for Delphi を使用しています。
編集
データセットのフィールド エディターを調べてみると、「DataSet」タイプのフィールドを作成できることがわかりました。これで2つを結び付けることができますか?もしそうなら、誰かがそれがどのように行われるか説明できますか?
2 番目のデータセット (ADODataSetAddOns) を作成し、最初のデータセット (ADODataSetServices.AddOns) のデータセット フィールドに新しいデータセットを割り当てることでそれを実行しようとしましたが、「データセットに一致する ADO データ型がありません」というエラー メッセージが表示されます。データセットが見つからない AddOns フィールドを参照しています。
delphi - SQL Server データベースで発生した変更を検出する方法は?
SQL Server データベースを使用TADODataSet
して接続するアプリケーションがあります。TADOConnection
データベースで発生した変更を検出したいと思います。
変更 = 挿入、更新、削除
TADODataset
どのテーブルが変更されたかを知りたいです。
ローカル ネットワーク上で動作するマルチユーザー アプリケーションがあるため、これを行っています。ユーザーはテーブルのレコードを追加、削除、または編集する可能性があるため、データセットを更新して新しい変更を表示したいと考えています。
また、これでログを作成したいと考えています。
TTime
変更を監視し続けるために使用したくありません。
トリガーを使いたくない
からのメッセージを希望しますTADOConnection
。
ADO コンポーネントで SQL Server 2005 と Delphi 2007 を使用しています。
新しい変更: SQL Server 2000 で必要です
よろしく。