2017-02-22 12 views
0

У меня есть следующий массив, который содержит строки в SQL заявления:FireDAC не распознает параметр запроса

SQLQueryLines : array [00..04] of string = 
     ('select "Costumer"."Name", ', 
       '"Costumer"."Age", ', 
       '"Costumer"."Gender" ' 
     'from  "Costumer" ' 
     'where "Costumer"."Name" = :aCostumerName'); 

во время выполнения, я делаю следующее назначение:

Query.SQL.Add (SQLQueryLines [0]); 
    Query.SQL.Add (SQLQueryLines [1]); 
    Query.SQL.Add (SQLQueryLines [2]); 
    Query.SQL.Add (SQLQueryLines [3]); 
    Query.SQL.Add (SQLQueryLines [4]); 

но FireDAC не в состоянии распознать параметр «aCostumerName».

Тем не менее, признает этот параметр, если я делаю назначение непосредственно:

 Query.SQL.Add ('select "Costumer"."Name", '); 
     Query.SQL.Add (  '"Costumer"."Age", ',); 
     Query.SQL.Add (  '"Costumer"."Gender" '); 
     Query.SQL.Add ('from "Costumer" '); 
     Query.SQL.Add ('where "Costumer"."Name" = :aCostumerName'); 

Запрос является TFDQuery.

Я не могу понять, почему FireDAC должен по-разному обрабатывать вышеуказанные задания, и я не нашел никакой помощи в поиске в Интернете. У кого-нибудь есть ответ на этот вопрос ?. Спасибо

ответ

0

Нет никакой разницы между заполнением списка строк строк из массива строк и константами. Но ваш второй опубликованный код даже не будет компилироваться (из-за последней запятой во второй строке). Поэтому постарайтесь убедиться, что вы каким-то образом не изменили свой запрос в своем реальном коде.

КПП. вы можете упростить заполнение этой коллекции с петлей:

var 
    Line: string; 
begin 
    for Line in SQLQueryLines do 
    Query.SQL.Add(Line); 
end; 

Или в старых Delphi, как:

var 
    Index: Integer; 
begin 
    for Index := Low(SQLQueryLines) to High(SQLQueryLines) do 
    Query.SQL.Add(SQLQueryLines[Index]); 
end; 
+0

Привет Victoria.Appreciated Ваш комментарий. Некоторое время назад этот вопрос был опубликован. Фактически, я нашел и исправил поток, но, честно говоря, я не могу вспомнить, что это было. Во всяком случае, спасибо за помощь. – user2383818

+0

@ user2383818, определенно не что-то связанное с различием между заполнением коллекции списков строк запроса SQL из константного массива и строковых констант :) – Victoria