Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 ОЧЕНЬ СРОЧНО  [new]
Roman20
Member

Откуда:
Сообщений: 306
Всем привет. Помогите пожалуйста, ни как не могу разобраться.
Мне нужно сделать вывод в txt файл из одной таблицы oplat_va.
Смысл в следующем: из таблицы oplat_va выводятся все данные по конкретному производству за определенную дату, с перегоном в txt файл. После того как данные по этому производству заканчиваются, то после в этот же txt файл выводим данные по следующему производству. И так пока все производства не законьчатся.
Ниже мой программный текст, в Делфи сделал бы за 10 минут, а тут засада. Может я что то не так делаю? Вместо этого он мне выводит данные чисто по первому производству, а остальные игнорирует. Помогите пожалуйста срочно надо.

close all
select distinct kod_zakz,naim_zakz from oplat_va into table mm_mm.dbf
where (dtoc(data_nakl)='08/02/2007')
close all
set devi to file c:\test.txt
sele 20
use mm_mm.dbf alias mm_mm
go top in mm_mm
do while.T.
IF EOF()
exit
ELSE
store kod_zakz to k_z
store 1 to i
select * from oplat_va into table m_m_m.dbf
where oplat_va.kod_zakz=k_z.and.dtoc(data_nakl)='08/02/2007'
* sele 1
use m_m_m.dbf alias m_m_m
go top in m_m_m
@i,1 say ' (В/Т/И) О Т Ч Е Т Э К С П Е Д И Ц И И N '+str(no_o,3)
@i+1,1 say ' за '+dtoc(data1)
@i+2,1 say ' по пpоизводству '+m_m_m.kod_zakz+' '+m_m_m.naim_zakz
@i+3,1 say ' Куpс валюты 0.00'
@i+4,1 say ' ────────────────────────────────────────────'
@i+5,1 say ' Hомеp │ Hомеp │ Груз │ Вес │ Кол│ Станция │ Дорога | Таpиф |
@i+6,1 say ' вагона док-та
@i+7,1 say '---------------------------------------------------------------------------------- '
do while.T.
if eof()
exit
else
i=i+1
@i,1 say nomer_vag pict '999999999'
endif
skip in m_m_m
enddo
skip in mm_mm
ENDIF
enddo
5 мар 07, 17:09    [3865199]     Ответить | Цитировать Сообщить модератору
 Re: ОЧЕНЬ СРОЧНО  [new]
alex11100
Guest
версия лисы???
вин., дос???

ну во-первых

scan
endscan

есть

во вторых
set textmerge в старших версиях strtofile


а еще лучше репорт с группировкой
и вывод на принтер
generic \text only
5 мар 07, 17:38    [3865423]     Ответить | Цитировать Сообщить модератору
 Re: ОЧЕНЬ СРОЧНО  [new]
Roman20
Member

Откуда:
Сообщений: 306
foxpro/lan2.0
для доса
А че SQL-запросами ни как?
Если возможно, то хотелось бы узнать что с моими SQL-запросами не так?
5 мар 07, 17:54    [3865532]     Ответить | Цитировать Сообщить модератору
 Re: ОЧЕНЬ СРОЧНО  [new]
Sergey Sizov.
Guest
C запросами ничего особенного. И про них пока еще никто ничего не писАл. alex11100 имел ввиду команды организации циклов и ввывода в файл.
Правильность запросов применительно к твоим данным проверить невозможно в виду отсутствия последних. Еще есть путаница - в первом запросе отбираются заказы, а в вопросе речь идет о производствах.

Теперь только по тексту. Закоментированы лишние, бесполезные и замененные команды.
Close All
Select Distinct kod_zakz,naim_zakz From oplat_va Into cursor mm_mm ;
Where Dtoc(data_nakl)='08/02/2007'
**	Close All
Set Devi To File c:\test.txt
**	Sele 20
**	Use mm_mm.Dbf Alias mm_mm
**	Go Top In mm_mm
**	Do While.T.
scan
**		If Eof()
**			Exit
**		Else
		Store kod_zakz To k_z
		Store 1 To i
		Select * From oplat_va Into cursor m_m_m ;
		Where oplat_va.kod_zakz=k_z And Dtoc(data_nakl)='08/02/2007'
* sele 1
**			Use m_m_m.Dbf Alias m_m_m
**			Go Top In m_m_m
		@i,1 Say ' (В/Т/И) О Т Ч Е Т Э К С П Е Д И Ц И И N '+Str(no_o,3)
		@i+1,1 Say ' за '+Dtoc(data1)
		@i+2,1 Say ' по пpоизводству '+m_m_m.kod_zakz+' '+m_m_m.naim_zakz
		@i+3,1 Say ' Куpс валюты 0.00'
		@i+4,1 Say ' --------------------------------------------'
		@i+5,1 Say ' Hомеp ¦ Hомеp ¦ Груз ¦ Вес ¦ Кол¦ Станция ¦ Дорога | Таpиф |
		@i+6,1 Say ' вагона док-та
		@i+7,1 Say '---------------------------------------------------------------------------------- '
**			Do While.T.
		scan
**				If Eof()
**					Exit
**				Else
				i=i+1
				@i,1 Say nomer_vag Pict '999999999'
			Endif
**				Skip In m_m_m
**			EndDo
		EndScan 
**			Skip In mm_mm
	Endif
**	Enddo
EndScan 
5 мар 07, 18:03    [3865601]     Ответить | Цитировать Сообщить модератору
 Re: ОЧЕНЬ СРОЧНО  [new]
alex11100
Guest
Close All
Select Distinct kod_zakz,naim_zakz From oplat_va Into cursor mm_mm
Where (Dtoc(data_nakl)='08/02/2007')
SET TEXTMERGE ON
Set textmerge to c:\test.txt
select mm_mm
scan
		k_z = kod_zakz 
		i = 1
		Select * From oplat_va Into cursor m_m_m ;
			Where oplat_va.kod_zakz=k_z.And.Dtoc(data_nakl)='08/02/2007'
		select m_m_m
		
		\\  (В/Т/И) О Т Ч Е Т Э К С П Е Д И Ц И И N <<Str(no_o,3)>>
		\\   за <<Dtoc(data1)>>
		\\   по пpоизводству <<m_m_m.kod_zakz>>  <<m_m_m.naim_zakz>>
		\\   Куpс валюты 0.00
		\\   --------------------------------------------
		\\   Hомеp ¦ Hомеp ¦ Груз ¦ Вес ¦ Кол¦ Станция ¦ Дорога | Таpиф |
		\\   вагона док-та
		\\   ---------------------------------------------------------------------------------- 
		
		scan
			\\ <<transform(nomer_vag,'999999999')>>
		Endscan
endscan

set textmerge to


вместо курсоров переделайте на тэйбл (как было)

set step on
дебагером побегай
5 мар 07, 18:04    [3865607]     Ответить | Цитировать Сообщить модератору
 Re: ОЧЕНЬ СРОЧНО  [new]
Roman20
Member

Откуда:
Сообщений: 306
Sergey Sizov
если делать по вашему тексту, то в итоге в текстовом файле получается:
Одна шапка с производством (заказчиком), которое является последней записью первого SQL запроса. И вместо нужных данных по этому производству за указанную дату, выдаются все записи из БД:


(В/Т/И) О Т Ч Е Т Э К С П Е Д И Ц И И N 267
по пpоизводству 22000 ПППО
Куpс валюты 0.00
─────────────────────────────────────────────────────── Hомеp │ Hомеp │ Груз │ Вес │ Кол│ Станция │ Дорога │ Таpиф │
вагона док-та ───────────────────────────────────────────────────────


67010629 22000
61367728 22000
62736335 22000
64744659 22000
52534435 09000
68268556 22000
62723523 22000
68677087 22000
68320340 22000
68323682 22000
68158344 22000
52518594 09000
68766450 22000
28066496 09000
26500595 09000
519410660 17000
и т.д.
5 мар 07, 19:43    [3866041]     Ответить | Цитировать Сообщить модератору
 Re: ОЧЕНЬ СРОЧНО  [new]
Roman20
Member

Откуда:
Сообщений: 306
alex11100
по вашему предложению получается так же одна шапка, но с производством (заказчиком), которое является ПЕРВОЙ записью первого SQL запроса. Поле номер вагона (nomer_vag) говорит что не известно и выглядит это так:

по пpоизводству 04000 СКП
Куpс валюты 0.00
────────────────────────────────────────────────── Hомеp │ Hомеp │ Груз │ Вес │ Кол│ Станция │ Дорога │ Таpиф │ Сбор за │ Ваг/
вагона док-та
───────────────────────────────────────────────────

04000
09000
20000
22000
И все
5 мар 07, 20:05    [3866111]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить