トランザクションとデータベース対応コンポーネントを使用してDelphiデータベースアプリケーションを作成するための好ましい方法は何ですか?
InnoDBテーブルにアクセスするクライアントアプリを作成し、トランザクション内でマスター/詳細のようなことを行う必要があります。(一般的な観点から)トランザクションに関する調査を行った後、データを認識しないコンポーネントと手動でコーディングされたSQLがトランザクションの「完全一致」であると謙虚に結論付けました。しかし、データベース対応コンポーネントはそうではありません。彼らはお互いのために作られているようには見えません。
トランザクションを使用する必要が本当にありますが、一方で、データ対応コンポーネントは非常に単純化されているため、単に破棄することはできませんでした。
誰かが私を教えてくれませんか?私はそれをグーグルで検索してきましたが、有用な答えは見つかりませんでした。おそらく私の英語が十分ではなく、キーワードが限られているためです。
ところで、私はDelphi 7を使用しており、現在、データアクセスライブラリとしてUniDACを評価しています。
ありがとうございました。
編集
私の質問の側面を説明する例:
2つのDBGridが含まれるフォームを想像してみてください。最初のグリッドはMasterGridで、その上に[追加]、[編集]、[削除]のボタンがあります。2番目のグリッドはDetailGridです。ユーザーが[追加]をクリックすると、次のようになります。
- Connection.StartTransaction
- Master.Append、Master.Post、Master.Editの順に(マスターデータセットに自動インクリメントの主キーがあり、編集可能になりました)
- ユーザーがマスターレコードに入力する編集フォームをモーダルに表示し、別のフォームを使用して詳細レコードを追加します。
- ユーザーが[OK]をクリックすると、アプリはMaster.PostとConnection.Commitを実行します。ユーザーが[キャンセル]をクリックすると、アプリはConnection.Rollbackを実行します。
トランザクションはできるだけ短くする必要があることは知っていますが、トランザクションはユーザーがフォームに入力する速度と同じくらい短いことがわかります。
データ非対応のコンポーネントを使用している場合は、ユーザー入力に基づいてカスタム挿入SQLを作成し、StartTransactionとCommitの間でSQLを実行します。だから私は非常に短いトランザクションを達成することができます。
編集2
皆様のご参加に感謝申し上げます。それが私の現在のニーズに最も近い解決策であるため、私はvcldeveloperから答えを選びます。