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

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

Код:
1
2
3
4
5
6
7
8
9
10
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

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TWinControl.MainWndProc(var Message: TMessage);
begin
  try
    try
      WindowProc(Message);
    finally
      FreeDeviceContexts;
      FreeMemoryContexts;
    end;
  except
    Application.HandleException(Self);
  end;
end;

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

Помогите люди добрые!
__________________
Начинающий
Ответить с цитированием