Я хочу выбрать строки из таблицы с вычисляемым полем, определенным с помощью запроса выбора.
Например, мой выбор может быть:
Select FirstName,
LastName,
iif(Cast('Now' as date)-BirthDate<18, 'Minor', 'Major') as StatAge
from TableUsers;
С Lazarus я хочу фильтровать StatAge.
Я попробовал свой запрос непосредственно в моей базе данных с помощью инструмента.
Я могу фильтровать с помощью Where в моем запросе следующим образом:
Select *
from (
Select FirstName,
LastName,
iif(Cast('Now' as date)-BirthDate<18, 'Minor', 'Major') as StatAge
from TableUsers
)
Where StatAge = 'Minor';
Но это не работает на lazarus с TSQLQuery.Filter
. Я могу фильтровать по другим полям и без проблем. Моя проблема только с этим вычисляемым полем.
Так что, может быть, мне нужно создать представление в моей базе данных? Но у меня есть ошибка, когда я пытался добавить свое представление с моим запросом.
Мой код SQL для создания представления приведен ниже, и ошибка
«Неудачное обновление метаданных не может отформатировать сообщение 8:132 — файл сообщения C:\WINDOWS\SYSTEM32\firebird.msg не найден.
Я никогда не видел, что в прошлом:
CREATE VIEW "TSTT_SELECT" ("ID_SENT", "Eng", "Char", "ID_STT", "Order", "Stat", "StartSAE", "RetSAE", "ArrSAE", "StartSHE", "RetSAE")
AS
Select "EMAIL_SENT"."ID", "EMAIL_SENT"."COMMANDE_TABLE", "EMAIL_SENT"."CHAR", "TSTT"."ID", "TSTT"."ORDER", iif("TSTT"."RETOUR_PREV" Is Not Null AND ("TSTT"."RETOUR_PREV">cast('Now' as date)), 'En retard', iif("TSTT"."Depart_SAE" Is Null, 'A expedier', iif("TSTT"."Depart_SAE" Is Not Null And "TSTT"."Arrivee_SHE" Is Not Null And "TSTT"."Depart_SHE" is null,'Chez le STT',iif("TSTT"."Depart_SHE" Is Not Null, 'Au depart STT', iif("TSTT"."Arrivee_SAE" Is Not Null, 'Récéptionné', ''))))) as "Statut", "TSTT"."Depart_SAE", "TSTT"."RETOUR_PREV", "TSTT"."Arrivee_SHE", "TSTT"."Depart_SHE", "TSTT"."Arrivee_SAE"
from "EMAIL_SENT"
Left join "TSTT" on "EMAIL_SENT"."ID" = "TSTT"."ID_EMAIL";
TSQLQuery.Filter
в FPC/Lazarus и создание представлений в Firebird. Это разные проблемы и про разные программы. В.р.т. Firebird - похоже, вы не установили клиент Firebird в системе. Таким образом, рядом сfbclient.dll
нет файлаfirebird.msg
, поэтому он не может предоставить вам текст ошибки. Найдите файл msg последней версии Firebird и поместите его рядом с клиентской dll, которую использует ваша программа. P.S. также может быть лучше использоватьCURRENT_DATE
var, firebirdsql.org/refdocs/langrefupd25-now.html< /а> - person Arioch 'The   schedule 15.02.2019TSTT_SELECT
. - person Mark Rotteveel   schedule 15.02.20190x14000000 | (facility << 16) | (number & 0xFFFF)
, здесь объект - 8, а номер - 132. Хотя я мог бы также искать вsrc/msgs/message2.sql
на8, 132
. - person Mark Rotteveel   schedule 16.02.2019