Цитата: 
	
	
		
			
				Вместо этого участка кода попробуй использовать такой вариант в одну строку 
 
 
	Код: 
	dm.zapros.SQL.Text:= 'запрос'+inttostr(i);  
 
 
Да и здесь можно использовать одну строку, потому что значение не изменяются 
 
	Код: 
	WorkBook.SaveAs(Tempkp+'\файл'+inttostr(i)+' от '+dt+'.csv',6);  
 
 
			
		 | 
	 
	 
 
Прошу прощения, я, видимо, вас слегка запутал написав
 
	Цитата: 
	
	
		| 
			
				Имеется следующий цикл, который распределяет полученную информацию из запроса, который соответствует i
			
		 | 
	 
	 
 
Имелось ввиду, что файлы создаются так:
 
	Код: 
	case i of
          1: WorkBook.SaveAs(Tempkp+'\файл_M60 от '+dt+'.csv',6);
          2: WorkBook.SaveAs(Tempkp+'\M60_krygl от '+dt+'.csv',6);
          3: WorkBook.SaveAs(Tempkp+'\M90_s1 от '+dt+'.csv',6);
          4: WorkBook.SaveAs(Tempkp+'\M90_s2 от '+dt+'.csv',6);
          5: WorkBook.SaveAs(Tempkp+'\ALL от '+dt+'.csv',6); 
 
Т.е i прямо влияет на то, какое будет название файла и он не должен там вообще фигурировать в названии.
 
	Цитата: 
	
	
		
			
				Можно просто написать 
 
	Код: 
	Sheet.Cells[r,1].Value := dm.zapros.FieldByName('path').AsString;
Sheet.Cells[r,2].Value := dm.zapros.FieldByName('kol').AsInteger; 
 
			
		 | 
	 
	 
 
Тут вы правы, я косякнул, не подумал.
 
	Код: 
	    if i = 3 then
      dm.aqLoc.SQL.Text := 'SELECT path,kol,E,F,G,' + ' switch(right(path,2)=' + quotedstr('rh') +
       ',1,right(path,2)=' + quotedstr('iz') + ',2,right(path,2)=' + quotedstr('av') + ',3, ' + ' right(path,2)=' + quotedstr('lv') +
       ',4) as srt FROM Dallan where typ=' + inttostr(i) + ' ORDER BY H, E DESC, switch(right(path,2)=' + quotedstr('rh') +
       ',1,right(path,2)=' + quotedstr('iz') + ',2,right(path,2)=' + quotedstr('av') + ',3, ' + ' right(path,2)=' + quotedstr('lv') + ',4),path'
    else if i = 1 then
      dm.aqLoc.SQL.Text := 'SELECT * FROM Dallan where typ=' + inttostr(i) + ' or typ=99 ORDER BY typ,F,E,G,path'
    else if (i = 5) then
      dm.aqLoc.SQL.Text := 'SELECT * FROM (SELECT path,kol,e,f,g,h,typ, iif(typ=5,1,iif(typ=6,3,iif(typ=7,2,iif(typ=8,4,iif(typ=9,6,5))))) as tt '
      + 'FROM Dallan where typ>=5 and typ<=10) main ORDER BY tt,F,E,G,path,H'          //if i in [5,6,9,10]
          //then dm.aqLoc.SQL.Text:='SELECT * FROM Dallan where typ='+inttostr(i)+' ORDER BY F,E,path' 
 
Вот тут я сейчас привёл прямой пример как в зависимости от i меняется запрос.
 
Пример: когда у нас i становится равно 3, то мы выполняем запрос, который я вставил выше в if i = 3 then
 
Далее идёт проверка на i и проставления значений в определённых ячейках( покажу на вашем примере:
 
	Код: 
	03: begin
                  Sheet.Cells[r,4].Value:=dm.zapros.FieldByName('E').AsInteger;
                end; 
 
Далее уже в зависимости от i выбирается название файла. В нашем случае будет
 
	Код: 
	3: WorkBook.SaveAs(Tempkp+'\M90_s1 от '+dt+'.csv',6);  
 
В принципе вы дали мне отличный совет с case в цикле while, когда меня посетила мысль сделать так, то я посчитал что слишком заморочено и не стал так делать.
 
Мне посоветовали методы и запросы засунуть в объекты, которые в свою очередь засунуть в массив. Не думаю, что имеет смысл настолько сильно заморачиваться, да и не пойму как это организовать. 
 
И спасибо вам!!!!  
		
	
		
		
		
		
		
	
		
			
			
			
			
				 
			
			
			
			
		 
		
	
	
	 |