Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADOQuery "Неправильно опеределен объект Parameter", Выгрузка данных из FireBird 2.5 в DBF 
V
    Опции темы
GraNit
Дата 30.11.2022, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



Здравствуйте, уважаемые форумчане!
Ох долго же меня тут не было smile)) А тут понадобилось процедурку набросать выгрузки данных из FireBird в DBF-файлы, а навык уже не тот smile))
Ладно, в сторону лирику.
Проблема в следующем: при выполнении запроса
Код

Insert into "MYFile.DBF" (FILIAL_N, ID_CONTR, ACC_DATE, PRC, INSR, STRG, PEN) VALUES (:Param1, :Param2, :Param3, :Param4, :Param5, :Param6, :Param7)

Получаю ошибку: Неправильно определен объект Parameter. Предоставлены несогласованные или не полные данные.
Более глубокое изучение проблемы выявило то, что при передаче данных вот здесь:
Код

     // myQuery - результат запроса в FireBird
     // ADOQuery - запрос который представлен выше, он пишет данные в DBF
     while not myQuery.Eof do
        begin
          for j := 0 to myFieldsCount do // Переберем все столбцы в результате запроса FireBird. Данные переменной уже меньше на 1
              begin
                myParamName := 'Param'+IntToStr(j+1); // Сформируем имя параметра
                  Form1.ADOQuery1.Parameters.ParamByName(myParamName).Value := myQuery.Fields[j].Value   //Здесь мы передаем данные в вышеуказанный запрос
          end;
          Form1.ADOQuery1.ExecSQL; //Вот здесь получаю ошибку, т.е. при записи данных в файл.
         myQuery.Next;
      end;

некоторые данные имеют значение nil. Видать ADOQuery это не устраивает и он ругается.
Не могу понять, как заставить данные принять нормальный вид, т.е. есть это целое число, то "0", если строка то пустая строка. Если идея проверять тип данных в поле и приводить данные параметра к этому типу, но по моему будет слишком громоздко. Может есть более изящный и красивый путь?
Что скажете? Прошу помощи.
PM MAIL   Вверх
GraNit
Дата 1.12.2022, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



Дополню.
Получается, что результат запроса из FireBird-а содержит некоторые записи с пустыми значениями полей, т.е. они не имеют значений. По этой причине значение равно NULL, т.е. не ноль, а не имеет значения. Соответственно, когда я передаю данные значения в виде параметра во время переноса данных, то получаю эту ошибку.
Надо бы заполнять значениями во время запроса...

...тихо сам с собою, я веду беседу...  smile 
PM MAIL   Вверх
GraNit
Дата 1.12.2022, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



Все решил я проблему. В запросе использовал Coalesce(); Теперь все поля у меня заполнены значениями.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1016 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.