![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Сделал вот такой запрос
Код:
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
|
|||
|
|||
![]() Если правильно помню, то ADO очень не любит создавать параметры динамически. Попробуй просто в сам запрос добавить значение AG1 вместо того, что бы использовать параметр.
|
#3
|
|||
|
|||
![]() Цитата:
Начинающий |
#4
|
|||
|
|||
![]() А у тебя случаем в гриде поля не созданы?
Очень похоже, что ошибка несовпадения типов возникает в момент, когда после присвоения DataSource, связанный с ним грид пытается обновиться и падает на несовпадении типов. |