|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
Дима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) ... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 16:32 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
miv32, сделал чтобы при выборе месяца и года в программе в переменную shifr записывался результат сложения значений год+месяц т.к. надо искать такую папку получилось допустим 201209. такая папка есть в h:\strafs. Теперь шаблон функции ADIR такой ADIR(ArrayName [, cFileSkeleton [, cAttribute [, nFlag]]]) название массива понятно, что писать в атрибуте файла и fileskeleton непонятно. т.к. мне надо теперь найти папку название которой равно значению переменной shifr и в этой папке найти xml файл в названии которого зашифрован год и месяц T05M501209050130. Вот что я не догоняю ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 16:50 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
авторс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? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 16:55 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
тут пишет 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 17:11 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
Дима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 ну и выведи после этого ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 17:28 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
[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) и посмотри что ты наваял ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 17:29 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
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 файл ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 20:22 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
пишу так: автор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 это сформированный в программе ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 20:34 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
и так пишу все равно ничего XMLTOCURSOR(cfile, "pacient_strah", 512) COPY TO "c:\shtrafs\"+cfolder+"\pacient_strah" ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 20:40 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
нашел в чем проблема надо 4 символа выделять в substr а не 2. создается. протестирую сейчас ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 20:55 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
осталось только вместо жесткого указанного имени pacient_strah создавать динамически такое имя как и у xml ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 20:57 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
разобрался ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 21:00 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
подскажите единственное. я же делаю выборку из созданной таблицы как мне в запросе указывать постоянно меняющуюся таблицу. может в переменную можно воткнуть название таблицы и в селекте вместо таблицы писать переменную? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 21:05 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
Дима1991, Естественно, можно... Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 21:18 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
AndreTM, а просто в скобки взять что ли :) буду знать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 21:23 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
еще такой вопрос: в xml файле поля smo и npolis имеют значения 05701 и 000016757 соответственно. Это конечно же один из примеров. в коде который мне тут писали написано так smo C(5) т.е. что поле smo символьное длиною 5 символов. но при создании dbf передние нули отбрасываются в обеих полях. как сделать чтобы нули не отбрасывались ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 21:54 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
Дима1991, 1) "Просто в скобки взять" возможно не везде. Иногда приходится использовать макроподстановку. В любом случае, "взять в скобки" в терминах FoxPro называется "выражение имени". Так что вдумчивое изучение хелп'а поможет понять, где что можно делать. Впрочем, в большинстве случаев (естественно, в качестве замены параметров команд - символьными переменными) достаточно использовать выражения имени, и только потом - макроподстановку через & 2) Судя по всему, в XML- схеме эти поля отнюдь не символьные. С другой стороны, можно сделать проще - мы знаем, что поля должны содержать 5 (или 9) символов-цифр, и при этом после импорта обрезаются только лидирующие нули... ну так после импорта сделаем update (или replace) с выравниванием по правому краю: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 23:02 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
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") ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2012, 23:30 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
Хм-м-м... (глубокомысленно перебирает ссылки на посты A&K89 и обнаруживает, что нечитательство даже хелпа - общая беда всех нынешних студентов). Если бы Вы удосужились прочесть: Синтаксис REPLACE ... [IN nWorkArea | cTableAlias] ... [IN nWorkArea] Указывает рабочую область таблицы в которой обновляются записи. [IN cTableAlias] Указывает алиас таблицы в которой обновляются записи. Если nWorkArea и cTableAlias опущены, обновляется таблица в текущей активной области.то поняли бы, что: 1) Таблица с нужным вам именем должна быть уже открыта. Поскольку никакого вашего предыдущего кода не видать, телепатически предположу, что это вообще вышепредложенный вам курсор. 2) IN <Name> означает именно имя. Алиаса, если имя - символьное. Так что любые пути - побоку. И кто вам запрещал проверить вариант Код: sql 1. 2. 3.
? И, естественно, вместо явной символьной строки - в выражении имени может просто быть любая переменная памяти или выражение, возвращающее приводимую к символьной строку... Впрочем, ваше желание использовать чисто числовое имя для таблицы - может привести к неоднозначности. Тогда - кто вам запрещает использовать replace сразу после импорта, пока таблица открыта в текущей рабочей области - и, естественно, никакого IN вообще в команде не требуется... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 01:00 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 06:45 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
Дима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" в переменную загнать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 09:36 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
IgorNG, загонял ведь. писал tablica="T05M50 + SUBSTR(cfolder, 3, 4) + 050130" алиас tablica не найдет пишет когда использую его в replace ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 09:46 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
Дима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) на форум в "родном" виде, а не переписывать с грамматическими ошибками... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 10:45 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
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.. что мне дописать и где что-то не разберусь ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 11:00 |
|
Преобразовать XML в DBF
|
|||
---|---|---|---|
#18+
Код: 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.
ЗЫ. Хотя пока писал, подумал, что в вашем коде достаточно было бы, наверное, поменять Код: sql 1.
на Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 11:06 |
|
|
start [/forum/topic.php?fid=41&msg=37994958&tid=1583397]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 269ms |
total: | 424ms |
0 / 0 |