Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.02.2025, 15:32
Volhv Volhv вне форума
Прохожий
 
Регистрация: 14.01.2013
Сообщения: 6
Версия Delphi: XE3
Репутация: 10
По умолчанию Ошибка при выполнении SQL-запроса

Сделал вот такой запрос

Код:
          AG1 := StrToInt(FormFind.Age.Text);
          ADOQuery1.Close;
          ADOQuery1.SQL.Clear;
          ADOQuery1.SQL.Add('SELECT Pacient.*, Pacient.SName & '' '' & Pacient.FName & '' '' & Pacient.TName AS FIO, Pacient.IDPc & ''_'' & Anketa.IDPc AS IDPc, Anketa.*');
          ADOQuery1.SQL.Add('FROM Pacient');
          ADOQuery1.SQL.Add('INNER JOIN Anketa ON Pacient.IDPc = Anketa.IDPc');
          ADOQuery1.SQL.Add('WHERE Pacient.AGE = :Ag');
          ADOQuery1.Parameters.ParamByName('Ag').Value := AG1;
          ADOQuery1.Open;
          DateSource1.DataSet := ADOQuery1;

Загружает все поля из таблиц Pacient и Anketa с объединением трех полей в одно новое FIO и слиянием двух полей Pacient.IDPc и Anketa.IDPc в одно поле IDPc с условие по Pacient.AGE. Во время выполнение последней строчки в вызывает Vcl.Controls

Код:
procedure TWinControl.MainWndProc(var Message: TMessage);
begin
  try
    try
      WindowProc(Message);
    finally
      FreeDeviceContexts;
      FreeMemoryContexts;
    end;
  except
    Application.HandleException(Self);
  end;
end;

В строке Application.HandleException(Self) выходит ошибка "Несовпадение типов".
Сделать маленький проект новый с тем-же точно запросом и с теми-же таблицами ни какой ошибки нет. Значить ошибка где-то в проекте а где не могу понять.

Помогите люди добрые!
__________________
Начинающий
Ответить с цитированием
  #2  
Старый 28.02.2025, 18:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,082
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если правильно помню, то ADO очень не любит создавать параметры динамически. Попробуй просто в сам запрос добавить значение AG1 вместо того, что бы использовать параметр.
Ответить с цитированием
  #3  
Старый 28.02.2025, 22:01
Volhv Volhv вне форума
Прохожий
 
Регистрация: 14.01.2013
Сообщения: 6
Версия Delphi: XE3
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Если правильно помню, то ADO очень не любит создавать параметры динамически. Попробуй просто в сам запрос добавить значение AG1 вместо того, что бы использовать параметр.
С этим проблем нету. Я же писал что создал точно такой же запрос в тестовом маленьком проекте тот же запрос те-же таблицы и там все работает. Проблема в другом
__________________
Начинающий
Ответить с цитированием
  #4  
Старый 02.03.2025, 08:20
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,082
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А у тебя случаем в гриде поля не созданы?
Очень похоже, что ошибка несовпадения типов возникает в момент, когда после присвоения DataSource, связанный с ним грид пытается обновиться и падает на несовпадении типов.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025