AMこんにちは、中野と申します。いつもお世話になっています。64ビットInterBase:購入した製品にインストールされていたInterBaseを使用DBXコンポーネント群を使用SQLConnectionSQLDataSetDataSetProviderClientDataSetDataSourceDBGridデータベース系のプログラムを作りながら、データベースの取り扱いを勉強しています。DBGridに表示されたテーブルにレコードを挿入したいと考えています。ClientDataSet->Insert();これで、DBGridの画面上ではレコードは挿入されていますが、実際、セルにデータを入力してからデータベースに登録すると、DBGrid画面上の表示とは違う所に追加しています。2行目と3行目の間にレコードを挿入したい場合は、DBGridのカーソルを3行目に合わせてClientDataSet->Insert();を実行すると、DBGridの画面上では2行目と3行目の間に新しいレコードが表示されています。データベースにテーブルの変更および修正を登録すると、ランダムに新しく挿入したレコードが登録されている。インターネットで調べると、ClientDataSet->Insert();を実行する前に、カーソルがあるレコード番号を保管し、挿入後に保管したレコード番号を再び元に戻す作業が必要と記載もありました。個人的な考えですが、Insert()を実行するときは、レコードを挿入する場所を指定する必要があるのかと思っていますが、皆目見当がつきません。"";データベースに関して理解していない部分が多いのですが、DBGrid画面上の表示通りにデータベースに登録する方法ありましたら、ご助言頂けると助かります。参考になるインターネットサイトや書籍等ございましたら教えて貰えると助かります。お忙しいところ、よろしくお願いします。wrote:こんにちは、中野と申します。いつもお世話になっています。64ビットInterBase:購入した製品にインストールされていたInterBaseを使用DBXコンポーネント群を使用SQLConnectionSQLDataSetDataSetProviderClientDataSetDataSourceDBGridこんにちは、中野と申します。いつもお世話になっています。質問の内容で少し進展がありましたので報告します。結果から言いますと、解決に至っていません。テーブルにレコードを挿入する方法として、幾つか私が行った内容を記載します。"";}1.テーブル表示後にボタン1で、レコード(行)を挿入2.挿入したレコードのセルに静的または動的にデータを入力3.データベースに編集したテーブルをアップデートする。結果は、テーブルの最終行に挿入したレコードが追加されている状態。*Sender){ClientDataSet->Insert();ClientDataSet->Post();ClientDataSet->ApplyUpdates(-1);}1.テーブル表示後に、ボタン1をクリックするとレコードを挿入する。画面上では挿入している。データベースにアップデートし、テーブルを再表示すると挿入したレコードは、テーブルの最終行に追加されている。*Sender){DBGrid->DataSource->DataSet->InsertRecord(ARRAYOFCONST((”(空白)”)));ClientDataSet->ApplyUpdates(-1);}1.テーブル表示後に、ボタン1をクリックするとレコードを挿入する。画面上では挿入している。データベースにアップデートし、テーブルを再表示すると挿入したレコードは、テーブルの最終行に追加されている。個人的な考えですが、データベース系コンポーネントDBXでは、テーブルにレコードをInsert()挿入する機能がないまたは実装されていないと思っています。下記はエンバカデロ社のホームページで、「新規レコードの追加と挿入」に関して記載がありますが、内容的には出来ない様な捕らえ方もできます。http://docwiki.embarcadero.com/RADStudio/XE8/ja/%E6%96%B0%E8%A6%8F%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E8%BF%BD%E5%8A%A0また、仕様です。言われたらそれまでですが、もう一つ方法があるので試してみようと思います。<方法その4>これから行う予定テーブルに5行のレコードがあるとし、2行目と3行の間に新規レコードを挿入する。1.3行以降の全てのレコード情報を別の仮テーブルに退避させる。2.その後、現行のテーブルより3行目以降のレコード情報を削除する。3.このとき、現行のテーブルは2行のレコードのみとなります。4.ここに、Append()命令でテーブル最終行の次にレコードを追加し、アップデートする。5.次に、退避させた全レコード内容を現行のテーブルに追加させて、アップデートする。本当は、エクセルの様に行を簡単に挿入できるかと思っていましたが、今の所は全くできていません。テーブルにレコードを挿入しアップデートしても、レコード挿入位置が変化しない方法に関してご存知の方いましたらご助言頂けると助かります。参考になるインターネットサイトや書籍等ございましたら教えて貰えると助かります。お忙しいところ、よろしくお願いします。3...)を格納するフィールドに用意する。2.テーブルを表示するとき、その並び順で表示するようにする。3.ある箇所で挿入したい場合、挿入したい場所以下の並び順フィールドを1ずつ増やしたあと、データを追加。kkこんにちは、中野ともうします。様、ご助言ありがとうございます。3...)を格納するフィールドに用意する。2.テーブルを表示するとき、その並び順で表示するようにする。3.ある箇所で挿入したい場合、挿入したい場所以下の並び順フィールドを1ずつ増やしたあと、データを追加。様のご助言での方法でプログラムを組んでみました。プログラムを作成し動作させてみましたが、DBGrid上では動いていますが、データベースに登録しテーブルを再表示すると正常にDBGrid上のデータが登録されていない。現存のレコードをコピーして移動する。次の行に1行だけ移動する。"(空白)";ClientDataSet->Post();//ClientDataSet->ApplyUpdates(-1);}<作成したプログラムここまで>DBGrid上では動いていますが、データベースにテーブル内容をアップデートする際、誤った方法で登録している可能性が高いかと思っています。今後は、正確にデータベースにテーブル情報をアップデートする方法等を少し学びたいと思います。ご助言提案等、本当に有難うございました。何か解らない事で書き込みをするかも知れませんが、宜しくお願いします。3...)を格納するフィールドに用意する。4);2.テーブルを表示するとき、その並び順で表示するようにする。SNO;3.ある箇所で挿入したい場合、挿入したい場所以下の並び順フィールドを1ずつ増やしたあと、データを追加。kkこんにちは、中野です。様、、ご助言ありがとうございます。例題まで記載してもらい、有難うございます。3...)を格納するフィールドに用意する。SQLInssert;//ClientDataSet->Execute();<ここまで>TableNameには、テーブル名が入ります。2.テーブルを表示するとき、その並び順で表示するようにする。SNO;3.ある箇所で挿入したい場合、挿入したい場所以下の並び順フィールドを1ずつ増やしたあと、データを追加。SQLInssert;//ClientDataSet->Execute();<ここまで>データベースに登録はできる様になりました。テーブル再表示後にテーブル内のセルを編集し、編集内容をデータベースに登録する事は出来ません。エラーメッセージ等は、何も表示していません。セルを編集後にデータベースへ登録後に、再度、テーブルを表示すると編集する前の状態でした。私の考えでは、テーブル編集自体がロック状態に陥っている?と思っています。お忙しい所、ご助言ありがとうございました。データベースのInsert機能に関して調べて見たいと思います。