このエラーが発生しています。理にかなっていないのは、結果がまだ名前フィールド以外のすべてのフィールドが正しいデータベースにポストされているということです。名前フィールドに何らかの理由で 'dmInfo'と入力します。クローズドデータセットでこの操作を実行できず、テーブルに不正なデータが入力されています
with dmQuery_u.dmInfo do
begin
dsInfo.Edit;
qryData.SQL.Clear;
qryData.SQL.Add('SELECT * FROM eventinfo ORDER BY eventnumber');
qryData.Open;
qryData.Last;
autonum := qryData['eventnumber'] + 1;
qryData.SQL.Clear;
qryData.SQL.Add(
'INSERT INTO eventinfo (eventnumber, bandname, venue, dateofevent, ticketcost, openingact, amountbooked)');
qryData.SQL.Add(
'VALUES (:eventnumber, :bandname, :venue, :dateofevent, :ticketcost, :openingact, :amountbooked)');
qryData.Parameters.ParamByName('eventnumber').Value := autonum;
qryData.Parameters.ParamByName('bandname').Value := name;
qryData.Parameters.ParamByName('venue').Value := venue;
qryData.Parameters.ParamByName('dateofevent').Value := date;
qryData.Parameters.ParamByName('ticketcost').Value := ticketcost;
qryData.Parameters.ParamByName('openingact').Value := openingact;
qryData.Parameters.ParamByName('amountbooked').Value := amountbooked;
qryData.ExecSQL;
qryData.SQL.Clear;
qryData.SQL.Add('SELECT * FROM eventinfo');
qryData.Last;
qryData.Open;
閉じたデータセットでこの操作を実行できない場合は、通常、閉じたデータセットに対して実行しようとしている操作が示されます。 'qryData.Last; qryData.Open; '疑わしいと思われます。 – nil
あなたがしようとしているのは、EventNumの既存の値の最大値を取得し、新しい行に対して1を追加することです。これはひどく非効率的で、エラーを起こしやすい方法です。どのバックエンドサーバーを使用していますか? – MartynA
はい、これを行う一般的な方法は、自動インクリメントインデックスフィールドを使用することです。 –