Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2009, 12:51   #1
AndreyF
Пользователь
 
Регистрация: 15.10.2008
Сообщений: 44
По умолчанию Query, TserviceApplication

Добрый день!
Народ выручайте неделю уже бьюсь, безрезультатно.
Задача следующая, выгрузить данные из базы (*.FDB) в базу (*.DBF), полученный файл заархивировать и отправить на ftp. Работаю на Windows XP. Написал приложение которое 100% работает, но теперь надо это всё переделать в службу (чтоб работало без сеанса пользователя). Взял в Delphi7 шаблон TServiceApplication и в него весь код перетащил из своего приложения, далее зарегистрировал в службы.
Код:
try 
IBDatabase1.Connected:=true;
IBTransaction1.StartTransaction;
IBSQL1.SQL.Text:='select IP.num_id,IP.date_delo, IP.d_ip_out,IP.name_d,IP.inn_d,IP.vidd_ttl from IP';
IBSQL1.ExecQuery;
Query1.Close;
Query1.SQL.Text:='insert into ":ALLIAS:'+name_file+'" (num_id,date_delo,d_ip_out,name_d,inn_d,vidd_ttl) values'
                            +' (:num_id,:date_delo,:d_ip_out,:name_d,:inn_d,:vidd_ttl)';
while not IBSQL1.Eof do
   begin
      Query1.ParamByName('num_id').AsString:=IBSQL1.Fields[0].AsString;
      Query1.ParamByName('date_delo').AsString:=IBSQL1.Fields[1].AsString;            
      Query1.ParamByName('d_ip_out').AsString:=IBSQL1.Fields[3].AsString;
      Query1.ParamByName('name_d').AsString:=IBSQL1.Fields[3].AsString;
      Query1.ParamByName('inn_d').AsString:=IBSQL1.Fields[4].AsString;
      Query1.ParamByName('vidd_ttl').AsString:=IBSQL1.Fields[4].AsString;             
      Query1.ExecSQL;//Не может вставить в *.DBF, на этой строке уходит в except **************************************************
      IBSQL1.Next;
   end;
IBTransaction1.Rollback;
except
end;
Query1.ExecSQL - почему не может выполнить эту строчку, хотя бы в каком направлении копать?
Весь именно этот код пересён из моего рабочего приложения.
AndreyF вне форума Ответить с цитированием
Старый 22.12.2009, 20:26   #2
Eofol
Пользователь
 
Аватар для Eofol
 
Регистрация: 20.12.2007
Сообщений: 15
По умолчанию

А с каким исключением уходит в except?
Eofol вне форума Ответить с цитированием
Старый 22.12.2009, 20:47   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Код:
Query1.ParamByName('d_ip_out').AsString:=IBSQL1.Fields[3].AsString;
Query1.ParamByName('name_d').AsString:=IBSQL1.Fields[3].AsString;
Query1.ParamByName('inn_d').AsString:=IBSQL1.Fields[4].AsString;
Query1.ParamByName('vidd_ttl').AsString:=IBSQL1.Fields[4].AsString;

Последний раз редактировалось mihali4; 22.12.2009 в 20:50.
mihali4 вне форума Ответить с цитированием
Старый 23.12.2009, 09:23   #4
AndreyF
Пользователь
 
Регистрация: 15.10.2008
Сообщений: 44
По умолчанию

Цитата:
Код:
Query1.ParamByName('d_ip_out').AsSt ring:=IBSQL1.Fields[3].AsString;
Query1.ParamByName('name_d').AsStri ng:=IBSQL1.Fields[3].AsString;
Query1.ParamByName('inn_d').AsStrin g:=IBSQL1.Fields[4].AsString;
Query1.ParamByName('vidd_ttl').AsSt ring:=IBSQL1.Fields[4].AsString;
У меня просто около 40 полей в *.DBF файле поэтому и накопировал невнимательно, с этим всё в порядке.
Цитата:
А с каким исключением уходит в except?
- вот этого не знаю, смотрел "Просмотр событий" - там написано:
1. Ошибка.
Не найдено описание для события с кодом (0) в источнике (EIGS.exe) - мой сервис.
Возможно, на локальном компьютере нет нужных данных в реестре или файлов DLL сообщений для отображения сообщений удаленного компьютера.
Попробуйте использовать ключ /AUXSOURCE= для получения этого описания, - дополнительные сведения об этом содержатся в справке.
В записи события содержится следующая информация: Процесс службы не может установить связь с контроллером службы.
2. Ошибка.
Бывает также промелькивает:
Не найдено описание для события с кодом (0) в источнике (EIGService).
Возможно, на локальном компьютере нет нужных данных в реестре или файлов DLL сообщений для отображения сообщений удаленного компьютера.
Попробуйте использовать ключ /AUXSOURCE= для получения этого описания, - дополнительные сведения об этом содержатся в справке.
В записи события содержится следующая информация: Service failed on execute: Alias is not currently opened. Alias: ALLIAS.

Каких то dll якобы не хватает? В приложение то весь этот код работает.
Прилагаю весь код, у кого хватит желания может посмотреть.
Надеюсь что кто-нибудь мне всё-таки поможет разобраться.
Вложения
Тип файла: txt Unit1.txt (25.5 Кб, 111 просмотров)
AndreyF вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Query Potrashitel БД в Delphi 13 27.09.2009 11:44
Query artemavd БД в Delphi 1 24.08.2008 10:34
QUERY werser Помощь студентам 2 10.06.2008 19:13
Query mma БД в Delphi 5 17.02.2008 22:11