powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Преобразовать XML в DBF
25 сообщений из 90, страница 3 из 4
Преобразовать XML в DBF
    #37994087
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991IgorNG, вы не поняли скорее всего. в программе человек выбирает из первого комбо месяц из второго год и на основании этого выбора программа должна найти папку такую же. выбрали допустим Январь 2012 программа ищет в h:\strafs папку 201201 и там ищет файл T05M501201050130.xml и с ним работает. В названии файла xml зашифрован месяц и год T05M501201050130.xml

сfolder = this.combo.value не или что у тебя в комбобоксе будет преобразовать к виду "201201"
cfile = "h:\strafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 2) + "050130.xml"
IF FILE(cfile)
...
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994119
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miv32, сделал чтобы при выборе месяца и года в программе в переменную shifr записывался результат сложения значений год+месяц т.к. надо искать такую папку получилось допустим 201209. такая папка есть в h:\strafs. Теперь шаблон функции ADIR такой

ADIR(ArrayName [, cFileSkeleton [, cAttribute [, nFlag]]])

название массива понятно, что писать в атрибуте файла и fileskeleton непонятно. т.к. мне надо теперь найти папку название которой равно значению переменной shifr и в этой папке найти xml файл в названии которого зашифрован год и месяц T05M501209050130. Вот что я не догоняю
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994125
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторсfolder = this.combo.value не или что у тебя в комбобоксе будет преобразовать к виду "201201"
cfile = "h:\strafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 2) + "050130.xml"
IF FILE(cfile)
...

этот код позволяет делать следующее? если пользователь выбрал месяц и число в комбобоксах искать такую же папку в h:\strafs и в этой найденной папке искать файл xml в названии которого зашифрован выбранный месяц и год? Если да то после этого кода возможно ли использовать переменную cfile в том коде который вы ранее писали для создания dbf, если точнее в xmltocursor?
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994163
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тут пишет cfile = "h:\strafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 2) + "050130.xml" variable cfolder not found. до этого из двух комбобоксов делаю cfolder при выборе месяца такой код mecyac=combo.value при выборе года такой god=combo2.value cfolder=god+mecyac
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994201
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991тут пишет cfile = "h:\strafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 2) + "050130.xml" variable cfolder not found. до этого из двух комбобоксов делаю cfolder при выборе месяца такой код mecyac=combo.value при выборе года такой god=combo2.value cfolder=god+mecyac

ну и выведи после этого
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994204
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot IgorNG]Дима1991тут пишет cfile = "h:\strafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 2) + "050130.xml" variable cfolder not found. до этого из двух комбобоксов делаю cfolder при выборе месяца такой код mecyac=combo.value при выборе года такой god=combo2.value cfolder=god+mecyac

ну и выведи после этого MESSAGEBOX(cfolder)
и посмотри что ты наваял
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994480
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG, в комбо1 выбираю 09 это месяц а в комбо2 выбираю год 2012 в cfolder записывается 201209. вроде как правильно.
а как теперь в этом коде применить cfile и cfolder

авторCREATE cursor pacient_strah ( ;
id I, ;
id_sch I, ;
vpolis I, ;
spolis C(3), ;
npolis C(9), ;
fam C(30), ;
im C(30), ;
ot C(30), ;
dr d, ;
w I,;
smo C(5), ;
stat I, ;
name_error C(30), ;
kol_strax I, ;
kol_uslugi N(5,2), ;
kol_kd N(5,2), ;
sumv N(10, 2), ;
code_mo C(6), ;
name_mo C(50), ;
smo_tmp C(5))



XMLTOCURSOR("h:\shtrafs\T05M501209050130.xml", "pacient_strah", 512)
COPY TO "h:\shtrafs\pacient_strah"

если написать вместо pacient_strah cfile он создаст таблицу и названием cfile а мне надо чтобы таблица называлась также как и xml файл
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994496
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пишу так:
авторcfile = "c:\shtrafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 2) + "050130.xml"
IF FILE(cfile)

CREATE cursor pacient_strah ( ;
id I, ;
id_sch I, ;
vpolis I, ;
spolis C(3), ;
npolis C(9), ;
fam C(30), ;
im C(30), ;
ot C(30), ;
dr d, ;
w I,;
smo C(5), ;
stat I, ;
name_error C(30), ;
kol_strax I, ;
kol_uslugi N(5,2), ;
kol_kd N(5,2), ;
sumv N(10, 2), ;
code_mo C(6), ;
name_mo C(50), ;
smo_tmp C(5))

XMLTOCURSOR("c:\shtrafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 2) + "050130.xml", "pacient_strah", 512)
COPY TO "c:\shtrafs\cfolder\pacient_strah"


ничего нигде не создается.. как мне записать тут пути правильно чтобы создался dbf с таким же названием и в папке c\strafs\cfolder сfolder это сформированный в программе
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994500
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и так пишу все равно ничего

XMLTOCURSOR(cfile, "pacient_strah", 512)
COPY TO "c:\shtrafs\"+cfolder+"\pacient_strah"
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994523
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел в чем проблема надо 4 символа выделять в substr а не 2. создается. протестирую сейчас
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994526
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
осталось только вместо жесткого указанного имени pacient_strah создавать динамически такое имя как и у xml
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994528
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разобрался
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994532
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите единственное. я же делаю выборку из созданной таблицы как мне в запросе указывать постоянно меняющуюся таблицу. может в переменную можно воткнуть название таблицы и в селекте вместо таблицы писать переменную?
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994540
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991,

Естественно, можно...

Код: sql
1.
2.
3.
4.
5.
6.
7.
lcFileNamePacient = "pacient_strah" && здесь можно указать то имя, какое надо

COPY TO "c:\shtrafs\"+cfolder+"\"+lcFileNamePacient

select * from (lcFileNamePacient)
* или
select * from ("c:\shtrafs\"+cfolder+"\"+lcFileNamePacient)
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994545
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM, а просто в скобки взять что ли :) буду знать
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994569
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще такой вопрос: в xml файле поля smo и npolis имеют значения 05701 и 000016757 соответственно. Это конечно же один из примеров. в коде который мне тут писали написано так smo C(5) т.е. что поле smo символьное длиною 5 символов. но при создании dbf передние нули отбрасываются в обеих полях. как сделать чтобы нули не отбрасывались
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994632
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991,

1) "Просто в скобки взять" возможно не везде. Иногда приходится использовать макроподстановку. В любом случае, "взять в скобки" в терминах FoxPro называется "выражение имени". Так что вдумчивое изучение хелп'а поможет понять, где что можно делать. Впрочем, в большинстве случаев (естественно, в качестве замены параметров команд - символьными переменными) достаточно использовать выражения имени, и только потом - макроподстановку через &
2) Судя по всему, в XML- схеме эти поля отнюдь не символьные. С другой стороны, можно сделать проще - мы знаем, что поля должны содержать 5 (или 9) символов-цифр, и при этом после импорта обрезаются только лидирующие нули... ну так после импорта сделаем update (или replace) с выравниванием по правому краю:
Код: sql
1.
2.
3.
4.
replace all ;
 smo with right(replicate('0',5)+rtrim(smo),5), ;
 npolis with right(replicate('0',9)+rtrim(npolis),9) ;
 in pacient_strah
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994662
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM, у меня таблица каждый раз создается с разными именами в соответствии с выбранным месяцем и годом. я пишу так но ошибка выдается. пробовал занести название таблицы в переменную и ее использовать тоже ошибка. или просит указать путь к таблице. в in так как я пишу нельзя писать?

replace all ;
smo with right(replicate('0',5)+rtrim(smo),5), ;
npolis with right(replicate('0',9)+rtrim(npolis),9) ;
in ("c:\shtrafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 4) + "050130")
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994740
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм-м-м... (глубокомысленно перебирает ссылки на посты A&K89 и обнаруживает, что нечитательство даже хелпа - общая беда всех нынешних студентов).

Если бы Вы удосужились прочесть:
Синтаксис REPLACE
...
[IN nWorkArea | cTableAlias]
...
[IN nWorkArea]
Указывает рабочую область таблицы в которой обновляются записи.
[IN cTableAlias]
Указывает алиас таблицы в которой обновляются записи.

Если nWorkArea и cTableAlias опущены, обновляется таблица в текущей активной области.то поняли бы, что:
1) Таблица с нужным вам именем должна быть уже открыта. Поскольку никакого вашего предыдущего кода не видать, телепатически предположу, что это вообще вышепредложенный вам курсор.
2) IN <Name> означает именно имя. Алиаса, если имя - символьное. Так что любые пути - побоку. И кто вам запрещал проверить вариант
Код: sql
1.
2.
3.
replace all ;
...
 in ("050130")

?
И, естественно, вместо явной символьной строки - в выражении имени может просто быть любая переменная памяти или выражение, возвращающее приводимую к символьной строку...
Впрочем, ваше желание использовать чисто числовое имя для таблицы - может привести к неоднозначности. Тогда - кто вам запрещает использовать replace сразу после импорта, пока таблица открыта в текущей рабочей области - и, естественно, никакого IN вообще в команде не требуется...
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994819
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM, вот у меня тут создается курсор и данные копируются в таблицу

авторCREATE table ("T05M50 + SUBSTR(cfolder, 3, 4) + 050130") ( ;
id I, ;
id_sch I, ;
vpolis I, ;
spolis C(3), ;
npolis C(9), ;
fam C(30), ;
im C(30), ;
ot C(30), ;
dr d, ;
w I,;
smo C(5), ;
stat I, ;
name_error C(30), ;
kol_strax I, ;
kol_uslugi N(5,2), ;
kol_kd N(5,2), ;
sumv N(10, 2), ;
code_mo C(6), ;
name_mo C(50), ;
smo_tmp C(5))

XMLTOCURSOR(cfile, "T05M50" + SUBSTR(cfolder, 3, 4) + "050130", 512)

COPY TO "c:\shtrafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 4) + "050130"

replace all ;
smo with right(replicate('0',5)+rtrim(smo),5), ;
npolis with right(replicate('0',9)+rtrim(npolis),9) ;
in ("T05M50" + SUBSTR(cfolder, 3, 4) + "050130")


если в in написать "050130" пишет такой алиас не найдет. если писать так как я написал пишет аргумент functiom argment value type
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994940
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991AndreTM, вот у меня тут создается курсор и данные копируются в таблицу

авторCREATE table ("T05M50 + SUBSTR(cfolder, 3, 4) + 050130") ( ;
id I, ;
id_sch I, ;
vpolis I, ;
spolis C(3), ;
npolis C(9), ;
fam C(30), ;
im C(30), ;
ot C(30), ;
dr d, ;
w I,;
smo C(5), ;
stat I, ;
name_error C(30), ;
kol_strax I, ;
kol_uslugi N(5,2), ;
kol_kd N(5,2), ;
sumv N(10, 2), ;
code_mo C(6), ;
name_mo C(50), ;
smo_tmp C(5))

XMLTOCURSOR(cfile, "T05M50" + SUBSTR(cfolder, 3, 4) + "050130", 512)

COPY TO "c:\shtrafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 4) + "050130"

replace all ;
smo with right(replicate('0',5)+rtrim(smo),5), ;
npolis with right(replicate('0',9)+rtrim(npolis),9) ;
in ("T05M50" + SUBSTR(cfolder, 3, 4) + "050130")


если в in написать "050130" пишет такой алиас не найдет. если писать так как я написал пишет аргумент functiom argment value type

А что, не судьба вот это
"T05M50 + SUBSTR(cfolder, 3, 4) + 050130"
в переменную загнать?
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37994958
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG, загонял ведь. писал tablica="T05M50 + SUBSTR(cfolder, 3, 4) + 050130" алиас tablica не найдет пишет
когда использую его в replace
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37995103
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима1991писал tablica="T05M50 + SUBSTR(cfolder, 3, 4) + 050130" алиас tablica не найдет пишетЛогично. Вы присвоили строковой переменной "tablica" значение "T05M50" + SUBSTR(cfolder, 3, 4) + "050130". Никаких таблиц с алиасом "tablica" не открывали и не создавали. Очевидно, что такой алиас будет отсутствовать.
И, кстати, лучше все операции (replace и т.п.) сразу над курсором проделать, а уж потом сохранять его (copy to ...)
Дима1991пишет аргумент functiom argment value typeЧто-то не припомню я такого. Вы в курсе, что при появлении сообщения об ошибке можно нажать Ctrl-C, в результате чего текст сообщения скопируется в буфер обмена? А потом это сообщение можно вставить (Ctrl-V) на форум в "родном" виде, а не переписывать с грамматическими ошибками...
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37995140
Дима1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, в курсе.

вот мой код: приведу весь код чтобы было понятно что у меня там

авторcfolder=god+mes
cfile = "h:\shtrafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 4) + "050130.xml"

IF FILE(cfile)
&&CREATE cursor pacient_strah ( ;
CREATE cursor T05M50 + SUBSTR(cfolder, 3, 4) + 050130 ( ;
id I, ;
id_sch I, ;
vpolis I, ;
spolis C(3), ;
npolis C(9), ;
fam C(30), ;
im C(30), ;
ot C(30), ;
dr d, ;
w I,;
smo C(5), ;
stat I, ;
name_error C(30), ;
kol_strax I, ;
kol_uslugi N(5,2), ;
kol_kd N(5,2), ;
sumv N(10, 2), ;
code_mo C(6), ;
name_mo C(50), ;
smo_tmp C(5))

XMLTOCURSOR(cfile, "T05M50" + SUBSTR(cfolder, 3, 4) + "050130", 512)
COPY TO "h:\shtrafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 4) + "050130"

tablica="T05M50 + SUBSTR(cfolder, 3, 4) + 050130"
SELECT tablica
replace all ;
smo with right(replicate('0',5)+rtrim(smo),5), ;
npolis with right(replicate('0',9)+rtrim(npolis),9) ;
in tablica

выдает ошибку авторAlias 'TABLICA' is not found.. что мне дописать и где что-то не разберусь
...
Рейтинг: 0 / 0
Преобразовать XML в DBF
    #37995151
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
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.
cfolder=god+mes
cfile = "h:\shtrafs\" + cfolder + "\T05M50" + SUBSTR(cfolder, 3, 4) + "050130.xml"

IF FILE(cfile)
	CREATE cursor tempcursor ( ;
	id I, ;
	id_sch I, ;
	vpolis I, ;
	spolis C(3), ;
	npolis C(9), ;
	fam C(30), ;
	im C(30), ;
	ot C(30), ;
	dr d, ;
	w I,;
	smo C(5), ;
	stat I, ;
	name_error C(30), ;
	kol_strax I, ;
	kol_uslugi N(5,2), ;
	kol_kd N(5,2), ;
	sumv N(10, 2), ;
	code_mo C(6), ;
	name_mo C(50), ;
	smo_tmp C(5)) 
		
	XMLTOCURSOR(cfile, "tempcursor", 512)

       SELECT tempcursor
	replace all ;
        smo with right(replicate('0',5)+rtrim(smo),5), ;
       npolis with right(replicate('0',9)+rtrim(npolis),9)

	COPY TO (forceext(cfile,'dbf'))


ЗЫ. Хотя пока писал, подумал, что в вашем коде достаточно было бы, наверное, поменять
Код: sql
1.
SELECT tablica

на
Код: sql
1.
SELECT (tablica)
...
Рейтинг: 0 / 0
25 сообщений из 90, страница 3 из 4
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Преобразовать XML в DBF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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