Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка SQL-запроса из файла, используется TADOQuery 
:(
    Опции темы
koven
Дата 2.11.2006, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



Здравствуйте!
Подскажите, как можно загрузить SQL-запрос из файла?
Используется ADOQuery. Проблема в том, что ADOQuery.SQL - типа TWideStrings (и delphi ругается на несоответствие типов, например, при загрузке из INI-файла (TIniFile))
PM MAIL   Вверх
Akella
Дата 2.11.2006, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(koven @  2.11.2006,  09:22 Найти цитируемый пост)
например, при загрузке из INI-файла (TIniFile)) 

а зачем тебе ini-файл?

код в студию и файл прикрепи к посту.

Это сообщение отредактировал(а) Akella - 2.11.2006, 09:26
PM MAIL   Вверх
koven
Дата 2.11.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



Код

procedure TMForm.LoadSettings;
var S: TStringList;
begin
  ADOQuery.SQL.Clear;

  if FileExists (ExtractFilePath(Application.ExeName) + 'sql.txt') then
  begin
    S := TStringList.Create;
    S.LoadFromFile( ExtractFilePath(Application.ExeName) + 'sql.txt' );
    ADOQuery.SQL.AddStrings(S);
    S.Free;
  end else
  begin
    Application.MessageBox('Файл с SQL-запросом не найден!'+#13#10+
                  'Будет использован стандартный запрос',
                  'Ошибка',
                  MB_OK+MB_ICONERROR);
    ADOQuery.SQL.Add('SELECT SC31.DESCR, SC33.DESCR, SP6521, SP102, SP3755 - SP102'+#13#10+
                       'FROM RG99, SC33, SC31'+#13#10+
                       'WHERE'+#13#10+
                       'SP3603 = 0 AND'+ #13#10+
                       'SP102 < SP3755 AND'+#13#10+
                       'SP101 LIKE SC33.ID AND'+#13#10+
                       'SP100 LIKE SC31.ID');
    ShowMessage('Загружен стандартный SQL запрос');
  end;
end;


Но с этим кодом вылетает exeption - "Unknown field RG99" (хотя это поле 100% есть и если вписать этот же sql-запрос в ObjectInspector'e - то все работает)
PM MAIL   Вверх
Akella
  Дата 2.11.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Код

procedure TMForm.LoadSettings;
begin
  ADOQuery.SQL.Clear;
  if FileExists (IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'sql.txt') then
    ADOQuery.SQL.LoadFromFile(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'sql.txt');
  else begin
    Application.MessageBox('Файл с SQL-запросом не найден!'+#13#10+
                  'Будет использован стандартный запрос',
                  'Ошибка',
                  MB_OK+MB_ICONERROR);
    ADOQuery.SQL.Add('SELECT SC31.DESCR, SC33.DESCR, SP6521, SP102, SP3755 - SP102'+#13#10+
                       'FROM RG99, SC33, SC31'+#13#10+
                       'WHERE'+#13#10+
                       'SP3603 = 0 AND'+ #13#10+
                       'SP102 < SP3755 AND'+#13#10+
                       'SP101 LIKE SC33.ID AND'+#13#10+
                       'SP100 LIKE SC31.ID');
    ShowMessage('Загружен стандартный SQL запрос');
  end;
end


и я бы на твоём месте на ставил бы столько сообщений. Может такое произойти что файл часто будет отсутствовать, тогда эти сообщения на третий уже раз начинают портить нервы. Но в любом случает - это всего лишь совет, тебе решать.

Это сообщение отредактировал(а) Akella - 2.11.2006, 09:45
PM MAIL   Вверх
koven
Дата 2.11.2006, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



Цитата

и я бы на твоём месте на ставил бы столько сообщений


да, Вы правы, это лишнее, забыл убрать smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.