[anydac][DApt]-400.Fetch コマンドは [1] レコードではなく [0] をフェッチしました。考えられる理由: 更新テーブルに PK または行識別子がありません。レコードが別のユーザーによって変更/削除されました。
実行時
SingleTestRunADQuery.Append();
SingleTestRunADQuery.FieldByName('run_id').Value := StartRecordingButton.Tag;
SingleTestRunADQuery.FieldByName('ph_value').Value := FloatToStr(ph_reading);
SingleTestRunADQuery.FieldByName('conductivity_value').Value := conductivity_reading;
SingleTestRunADQuery.FieldByName('cod_value').Value := cod_reading;
SingleTestRunADQuery.Post();
の上
mysql> describe measurements;
+------------------------+-----------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------+------+-----+-------------------+-------+
| run_id | int(11) | NO | MUL | NULL | |
| measurement_time_stamp | timestamp | NO | PRI | CURRENT_TIMESTAMP | |
| ph | float | NO | | NULL | |
| conductivity | float | NO | | NULL | |
| cod | float | NO | | NULL | |
+------------------------+-----------+------+-----+-------------------+-------+
5 rows in set (0.03 sec)
ご覧のとおり、テーブルには PK があります。また、プログラムはシングルスレッドであり、1 つのコピーのみが実行されているため、他の誰も更新していません。
SingleTestRunADQuery.MasterFields=run_id and IndexFieldNames=run_id
すべてのテスト実行の概要を保持するテーブルの PK として設定しました。2 番目のテーブルには、テスト中に取得された測定値が保持され、run_id
1 回のテスト実行のすべての測定値が示されます (このエラーを取り除くために、tiemstamp に PK を追加しただけですが、機能せず、削除できると思います)。
マスター データ ソースは次のとおりです。
mysql> describe test_runs;
+------------------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+-------------------+----------------+
| run_id | int(11) | NO | PRI | NULL | auto_increment |
| start_time_stamp | timestamp | NO | | CURRENT_TIMESTAMP | |
| end_time_stamp | timestamp | YES | | NULL | |
| description | varchar(64) | YES | | NULL | |
+------------------+-------------+------+-----+-------------------+----------------+
4 rows in set (0.05 sec)
何が問題なのですか?
[更新] @mj2008 は、一部のフィールドの名前が異なることを指摘しています。これは歴史的な理由によるものです (私はまだ何かを試していますが、まだ変更したくありません)、これらはクエリによって適応されます:
SELECT run_id,
measurement_time_stamp,
ph as ph_value,
conductivity as conductivity_value,
cod as cod_value
FROM photo_catalytic.measurements
ORDER BY measurement_time_stamp DESC