Я пытаюсь обновить старую таблицу Paradox (BDE) с помощью более старого приложения Delphi XE6. Одна конкретная таблица имеет два поля; поле даты и поле BCD. Я не могу опубликовать новую запись в таблице (FuelSurch) из-за поля BCD (FuelSur), которое выдает ошибку «Число вне диапазона».
Поэтому я написал быстрый тест, но все еще та же проблема. Вот спецификации полей таблицы FuelSurch.
Я только что добавил кнопку в форму, и эта процедура срабатывает при нажатии.
procedure TTestForm.BCDTestBtnClick(Sender: TObject);
var
Bcd: TBcd;
begin
POE_Data.FuelSurch.Open;
POE_Data.FuelSurch.Insert;
Bcd:= StrToBcd('2.01');
showMessage('Bcd = ' + BcdToStr(Bcd)); // This works and shows 'Bcd = 2.01'
POE_Data.FuelSurchFuelSur.AsBCD := Bcd; // Line produces "Number is out of range." error
POE_Data.FuelSurch.Post;
POE_Data.FuelSurch.Close;
end;
Соединение с базой данных подтверждено настолько хорошо, насколько я могу отправлять сообщения в другие таблицы. Просто мне кажется, что этот тип поля BCD вызывает у меня проблемы.
Нужно ли форматировать строку по-другому, прежде чем назначать ее переменной Bcd?
Data.DB.pas
. Вы пробовали это? Должны ли мы закрыть этот вопрос как дубликат? - person Tom Brunberg   schedule 11.09.2020showmessage()
это уже подтвердил). Я предполагаю, что машина Paradox (если другая) также настроена с точкой в качестве десятичного разделителя, не так ли? МодификацияData.DB.pas
была предложена во втором ответе на ваш предыдущий вопрос 6-летней давности. Я не проверял это и поэтому не подтверждаю это. - person Tom Brunberg   schedule 11.09.2020Data.DB.pas
, но не смог заставить ее работать. Это кажется довольно простой задачей для базы данных. Я не уверен, почемуPOE_Data.FuelSurchFuelSur.AsBCD := StrToBcd('2.01');
не работает. Есть ли определенный способ форматирования строки, чтобы база данных (поле BCD) приняла ее? - person Hackbrew   schedule 11.09.2020POE_Data.FuelSurchFuelSur.AsBCD := StrToBcd('2.01');
- person Hackbrew   schedule 12.09.2020