Никогда ничего специально не делал. В АВС всё нормально отрабатывается. Access:File.Close(), и достаточно. Пользователь выходит из программы, коннект прерывается. Если нужно при работающем пользователе его коннект прервать, то административными способами (я не помню как, в понедельник на работе могу спросить). Есть ещё тонкий момент. Например, если сделать в IBExpert'е запрос в SQLEditor и его не закоммитить, то Кларионовская программа будет ждать коммита (висеть, по-русски говоря).Игорь Столяров писал(а):Если позволите, еще маленький вопрос: как грамотно закончить работу с базой Firebird из Clarion ?
Так как prop:SQL можно применить только к файл/таблице и кларионовской вьюхе, то есть два варианта.BBR писал(а):Как можно загрузить ркезультаты произвольной выборки по нескольким таблицам
(используя prop:SQL) в очередь (подготовленную заранее)?
1. Через вьюху (как в шаблонах), можно посмотреть, что делает сам Кларион. Но вкратце так. Создаём вьюху, например:
Код: Выделить всё
LOC:View	    VIEW(Titles)
                       PROJECT(TIT:TitleNameOut)
                       PROJECT(TIT:TitleDate)
                       PROJECT(TIT:Year)
                       PROJECT(TIT:ID)
                       PROJECT(TIT:OperationID)
                       PROJECT(TIT:Addressee2ID)
                       PROJECT(TIT:Addressee1ID)
                       PROJECT(TIT:DocID)
                       JOIN(DOC:IDKey,TIT:DocID)
                         PROJECT(DOC:Name)
                         PROJECT(DOC:ID)
                       END
                       JOIN(ADR1:IDKey,TIT:Addressee2ID)
                         PROJECT(ADR1:Name)
                         PROJECT(ADR1:ID)
                       END
                       JOIN(ADR:IDKey,TIT:Addressee1ID)
                         PROJECT(ADR:Name)
                         PROJECT(ADR:ID)
                       END
                     END
Потом пишем:
Код: Выделить всё
 open(LOC:View)
 set(LOC:View) 
 LOC:View{prop:SQL} = 'select ...' 
 loop
   next(LOC:View) 
   if fileerrorcode()
     break
   end
   ...
   LOC:Queue.LOC:Field1 = TIT:ID
   ...
   add(LOC:Queue)
  
end    
Ну и пишем:
Код: Выделить всё
 ZZZ{prop:SQL} = 'select ...' 
 loop
   next(ZZZ) 
   if fileerrorcode()
     break
   end
   ...
   LOC:Queue.LOC:Field1 = clip(ZZZ.A1) 		! clip() - необязательно
   ...
   add(LOC:Queue)
  
end    
