Я пытался отладить следующую проблему уже несколько недель - этот метод вызывается из нескольких мест в одном и том же модуле данных, но это исключение (из строки темы этого поста) происходит только тогда, когда целые числа для определенной цели (заказы на вывоз по сравнению с заказами, которые мы отправляем через перевозчика) - и не спрашивайте меня, как приложение может определить разницу между целью одного целого и другим! Кроме того, я не могу продублировать эту проблему на своем компьютере - ошибка возникает на компьютере хранилища, но не на моем компьютере разработчика, даже при работе с той же производственной базой данных. Я подозревал конфликт версий MDAC между двумя компьютерами, но запустил средство проверки версий и подтвердил, что на обеих машинах работает 2.8, и дополнительно подтвердил это, зарегистрировав свойство TAdoDataset .Version во время выполнения.
function TdmESShip.SecondaryID(const PrimaryID : Integer ): String;
begin
try
with qESPackage2 do
begin
if Active then
Close;
LogMessage('-----------------------------------');
LogMessage('Version: ' + FConnection.Version);
LogMessage('DB Info: ' + FConnection.Properties['Initial Catalog'].Value + ' ' + FConnection.Properties['Data Source'].Value);
LogMessage('Setting the parameter.');
Parameters.ParamByName('ParameterName').Value := PrimaryID;
LogMessage('Done setting the parameter.');
Open;
Девяносто девять раз из 100 этот код регистрации регистрирует успешную операцию следующим образом:
Версия: 2.8
Информация БД: (имя базы данных и экземпляр)
Настройка параметра.
Завершено настройка параметра.
Открыл набор данных.
Но тогда, когда обрабатывается «пикап», это исключение выдается при каждом открытии набора данных:
Версия: 2.8
Информация о БД: (имя и экземпляр базы данных)
Настройка параметра.
Закончена настройка параметра.
GetESPackageID () вызвал исключение. Тип: EOleException, Сообщение: Аргументы имеют неправильный тип, находятся вне допустимого диапазона или конфликтуют друг с другом
Ошибка: Аргументы имеют неправильный тип, находятся вне допустимого диапазона или конфликтуют друг с другом для packageID 10813711
Я попытался исключить параметр и создал командный текст для этого набора данных программно, подозревая, что некоторая часть конфигурации TParameter может быть не в порядке, но та же ошибка возникает при тех же обстоятельствах. Я испробовал каждую комбинацию свойств TParameter, о которой могу подумать - это миллионный TParameter, который я создал для своего миллионного набора данных, и я никогда не сталкивался с этой ошибкой. Я даже создал второй набор данных с нуля и удалил все ссылки на исходный набор данных на случай, если какое-либо свойство исходного набора данных в .dfm может быть повреждено, но такая же ошибка возникает при тех же обстоятельствах.
Текст команды для этого набора данных является простым
select ValueA from TableName where ValueB = @ParameterB
Я готов сделать что-то экстремальное, например, написать веб-сервис для поиска этих значений - сейчас мне кажется, что я могу уничтожить свой компьютер, перестроить его, переписать все это приложение с нуля и приложение по-прежнему знает, что нужно выдавать исключение всякий раз, когда я пытаюсь найти вторичное значение из первичного значения, но только для заказов на получение и только с одного компьютера на складе, , но Я, наверное, упускаю что-то простое. Поэтому любая помощь, которую кто-либо может оказать, будет принята с благодарностью.