Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ОЧЕНЬ СРОЧНО / 7 сообщений из 7, страница 1 из 1
05.03.2007, 17:09
    #34372070
Roman20
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОЧЕНЬ СРОЧНО
Всем привет. Помогите пожалуйста, ни как не могу разобраться.
Мне нужно сделать вывод в 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
...
Рейтинг: 0 / 0
05.03.2007, 17:38
    #34372177
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОЧЕНЬ СРОЧНО
версия лисы???
вин., дос???

ну во-первых

scan
endscan

есть

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


а еще лучше репорт с группировкой
и вывод на принтер
generic \text only
...
Рейтинг: 0 / 0
05.03.2007, 17:54
    #34372227
Roman20
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОЧЕНЬ СРОЧНО
foxpro/lan2.0
для доса
А че SQL-запросами ни как?
Если возможно, то хотелось бы узнать что с моими SQL-запросами не так?
...
Рейтинг: 0 / 0
05.03.2007, 18:03
    #34372259
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОЧЕНЬ СРОЧНО
C запросами ничего особенного. И про них пока еще никто ничего не писАл. alex11100 имел ввиду команды организации циклов и ввывода в файл.
Правильность запросов применительно к твоим данным проверить невозможно в виду отсутствия последних. Еще есть путаница - в первом запросе отбираются заказы, а в вопросе речь идет о производствах.

Теперь только по тексту. Закоментированы лишние, бесполезные и замененные команды.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
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 
...
Рейтинг: 0 / 0
05.03.2007, 18:04
    #34372264
alex11100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОЧЕНЬ СРОЧНО
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
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
дебагером побегай
...
Рейтинг: 0 / 0
05.03.2007, 19:43
    #34372519
Roman20
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОЧЕНЬ СРОЧНО
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
и т.д.
...
Рейтинг: 0 / 0
05.03.2007, 20:05
    #34372552
Roman20
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ОЧЕНЬ СРОЧНО
alex11100
по вашему предложению получается так же одна шапка, но с производством (заказчиком), которое является ПЕРВОЙ записью первого SQL запроса. Поле номер вагона (nomer_vag) говорит что не известно и выглядит это так:

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

04000
09000
20000
22000
И все
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ОЧЕНЬ СРОЧНО / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]