Что я делаю неправильно здесь, так как данные не вставлены в таблицу ARCHIVE , хотя в моей таблице T_Main есть 3 записи, в которых ACCOMPLISHED = True?Почему данные не вставлены?
База данных является Accuracer.
procedure TForm1.AdvGlowButton1Click(Sender: TObject);
begin
case cxRadioGroup1.ItemIndex of
0: begin
if MessageDlg('Are you sure ?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then
begin Exit;
end else
Data_Module.T_MAIN.First;
while not Data_Module.T_MAIN.Eof do begin
Data_Module.INS_ARCH.Close;
Data_Module.INS_ARCH.SQL.Clear;
Data_Module.INS_ARCH.SQL.Text :='INSERT INTO ARCHIVE (T_ID,FOR_DATE,DONE_WHEN)'
+ 'SELECT :a3,:a4,:a5 FROM T_MAIN WHERE ACCOMPLISHED =True ';
Data_Module.INS_ARCH.Params.ParamByName('a3').AsInteger := Data_Module.T_MAIN.FieldByName('T_ID').AsInteger;
Data_Module.INS_ARCH.Params.ParamByName('a4').AsDate := Data_Module.T_MAIN.FieldByName('FOR_DATE').AsDateTime;
Data_Module.INS_ARCH.Params.ParamByName('a5').AsDate := Data_Module.T_MAIN.FieldByName('DONE_WHEN').AsDateTime;
Data_Module.T_MAIN.Next;
Data_Module.INS_ARCH.ExecSQL;
end;
end;
end;
Вы уверены, что ваш запрос на самом деле вернуть некоторые данные? Попробуйте выполнить только выбор в SQL DB, чтобы узнать, являются ли они данными возврата. Если он вернется, значит, ошибка указана в коде. Или, может быть, вам нужно какое-то утверждение commit в конце? –
выберите T_ID, FOR_DATE, DONE_WHEN из T_ID, где ACCOMPLISHED = True; ---- возвращает правильные данные. – user763539
Итак, если вы можете попробовать ручную вставку - может быть вставка не работает (например, ПК, Великобритания и т. Д.). Или проверьте, подключитесь ли вы к БД-подсказки (я сделал эту ошибку один раз). –