Поскольку вы используете Delphi 2010 в тегах (я не имею Delphi-здесь, чтобы проверить), удобный метод будет хранящим SQL в отдельных текстовых файлах вместе с RC-файлом, содержащим директивы для компилятора ресурсов.
Файлы RC будет содержать имена ресурса вы хотите использовать вместе с именами файлов, содержащими SQLs вы хотите сохранить. Содержание для примера будет выглядеть следующим образом:
My_First_Speaking_ResourceName RCDATA "MyFirstSQL.sql"
My_Second_Speaking_ResourceName RCDATA "MySecondSQL.sql"
Там нет необходимости вызывать BRCC32 непосредственно, если включить ресурс, содержащий RC и результирующий RES:
{$R 'MySQLResources.res' 'resources\MySQLResources.rc'}
Вы можете обернуть использование TResourceStream для вашего удобства, как показано в примере будет использовать строки, которые вы могли бы также работать с потоком непосредственно, как упомянуто TLama MyQuery.SQL.LoadFromStream(rs);
implementation
{$R *.dfm}
{$R 'MySQLResources.res' 'resources\MySQLResources.rc'}
function LoadSqlResource(resourceName: string): string;
var
rs: TResourceStream;
sl: TStringList;
s : string;
begin
sl := TStringList.Create;
try
rs := TResourceStream.Create(hinstance, resourceName, RT_RCDATA);
try
rs.Position := 0;
sl.LoadFromStream(rs);
Result := sl.Text;
finally
rs.Free;
end;
finally
sl.Free;
end;
end;
procedure CallOneSql(Q:TADOQuery;ResourceName:String);
begin
Q.SQL.Text := LoadSqlResource('My_First_Speaking_ResourceName');
Q.ExecSQL;
end;
По телефону CallOneSql(MyQuery,'My_First_Speaking_ResourceName');
Обязательно создайте проект, а не просто скомпилируйте, если вы внесли изменения в RC или файлы SQL.
Например, вы можете разместить его как содержимое «TMemo» в своей форме, затем скрыть его во время выполнения и просто прочитать текст из него. Существуют также сторонние невизуальные компоненты, содержащие тексты в DFM. PS: с файлом ресурсов вам нужно будет правильно сохранить текст как UTF-16 или не-Unicode для разных версий Delphi. Это возможно, но это неприятность. Какова ваша настоящая версия Delphi и что вы пытаетесь выполнить, и что именно проблема? PS: BDE действительно, действительно устарел сегодня. Подумайте о переключении в какую-то прямую библиотеку! –
Что именно вы не можете понять с помощью TQuery.SQL.Text? Он будет сохранен для вас уже. Каков ваш реальный вопрос? –
Конечно, есть способ. Свойство 'SQL' является обычным потоком' TStrings', поэтому сохраняйте ваши SQL-запросы в виде текстового ресурса и используйте метод 'TQuery.SQL.LoadFromStream' для' TResourceStream', где вы загрузите ресурс с запросом. – TLama