Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2012, 13:38   #1
danxiel
Новичок
Джуниор
 
Регистрация: 04.09.2012
Сообщений: 2
По умолчанию Переход с одной строки на другую в DBF сканировании

Стоит задача из dbf файла сделать xml. Нашел программу похожую по выполняем функциям на то что мне надо, переделал под себя, возникла проблема что когда данные записываются в хмл фаил всегда записывается первая строчка из дбф. Например у меня в дбф файле 10 строчек, и получается хмл фаил в котором записана 10 раз первая строчка. Как сделать что бы он перескакивал на след строчку.
Ниже код приведен.
Код:
CLEAR
CLEAR ALL

SET SAFETY OFF
SET DATE BRITISH
SET PROCEDURE TO all_proc.prg
Set SysMenu off

WITH _screen
	.Visible= .t.
	.Caption="конвертер DBF to XML"
ENDWITH
cod_smo=''
cod_lpu=''
date1=CTOD('')
n_schet=''
d_schet=CTOD('')

tbl=GETFILE('dbf')
USE &tbl ALIAS cur0 IN 0
SELECT RECNO() as idn, * FROM cur0 INTO CURSOR cur1

LOCAL x as msxml2.DOMDocument.6.0
LOCAL lev1 as MSXML2.IXMLDOMNodeList
LOCAL lev2 as MSXML2.IXMLDOMNodeList
LOCAL lev3 as MSXML2.IXMLDOMNodeList
x=CREATEOBJECT('msxml2.DOMDocument.6.0')
x.async = .F.
x.validateOnParse = .T.
x.preserveWhiteSpace=.T.
x.resolveExternals=.t.
x.Load("etalon_opop.xml")

lev1=x.childNodes(1)
newNode = x.createNode(1, "FILENAME", x.namespaces.namespaceURI(3))
lev1.appendChild(newNode)
lev1.lastChild.text = "*********"
newNode = x.createNode(1, "TYPE", x.namespaces.namespaceURI(3))
lev1.appendChild(newNode)
lev1.lastChild.text = "S*****"
newNode = x.createNode(1, "VERSION", x.namespaces.namespaceURI(3))
lev1.appendChild(newNode)
lev1.lastChild.text = "1.0"
newNode = x.createNode(1, "DATE", x.namespaces.namespaceURI(3))
lev1.appendChild(newNode)
lev1.lastChild.text = DtoODBC(DATE())

newNode = x.createNode(1, "PU", x.namespaces.namespaceURI(3))
lev1.appendChild(newNode)
	lev2 = lev1.lastChild 
	newNode = x.createNode(1, "ID", x.namespaces.namespaceURI(3))
	lev2.appendChild(newNode)
	lev2.lastChild.text = "******"
	newNode = x.createNode(1, "TEXT", x.namespaces.namespaceURI(3))
	lev2.appendChild(newNode)
	lev2.lastChild.text = "********"
	newNode = x.createNode(1, "OPERATOR", x.namespaces.namespaceURI(3))
	lev2.appendChild(newNode)
	lev2.lastChild.text = "*******"
	newNode = x.createNode(1, "PHONE", x.namespaces.namespaceURI(3))
	lev2.appendChild(newNode)
	lev2.lastChild.text = "******"
newNode = x.createNode(1, "COUNT", x.namespaces.namespaceURI(3))
lev1.appendChild(newNode)
lev1.lastChild.text = "1.0"
newNode = x.createNode(1, "REG_SERV", x.namespaces.namespaceURI(3))
lev1.appendChild(newNode)
	lev2 = lev1.lastChild 
	newNode = x.createNode(1, "REG_PER", x.namespaces.namespaceURI(3))
	lev2.appendChild(newNode)
	lev2.lastChild.text = ALLTRIM(STR(year(date1))) + ALLTRIM (STR(month(date1)))
jj=0
jjj=1
SELECT distinct fio, vozrast, sex, sub_fed, rayon, profil, ds, dat_postup, data_wipis, kol_dney, povtor_gos, n_ist_bol FROM cur1 INTO CURSOR cur_pat1
SELECT RECNO() as idn_patient, * FROM cur_pat1 INTO CURSOR cur_pat

SELECT COUNT(*) as x FROM cur_pat INTO CURSOR cur_cnt
SELECT cur_pat
SCAN
	jj=jj+1
	WAIT "Запись "+ALLTRIM(STR(jj))+" из "+ALLTRIM(STR(cur_cnt.x)) WINDOW NOWAIT
	newNode = x.createNode(1, "ZAP", x.namespaces.namespaceURI(3))
	lev1.appendChild(newNode)
		lev2 = lev1.lastChild 
		newNode = x.createNode(1, "MED_CARE", x.namespaces.namespaceURI(3))
		lev2.appendChild(newNode)
			lev3 = lev1.lastChild 
			newNode = x.createNode(1, "IST_BOL", x.namespaces.namespaceURI(3))
			lev3.appendChild(newNode)
			lev3.lastChild.text = ALLTRIM(cur_pat1.n_ist_bol)
			newNode = x.createNode(1, "FIO", x.namespaces.namespaceURI(3))
			lev3.appendChild(newNode)
			lev3.lastChild.text = ALLTRIM(cur_pat1.fio)
			newNode = x.createNode(1, "VOZRAST", x.namespaces.namespaceURI(3))
			lev3.appendChild(newNode)
			lev3.lastChild.text = ALLTRIM(cur_pat1.sex)
			newNode = x.createNode(1, "SEX", x.namespaces.namespaceURI(3))
			lev3.appendChild(newNode)
			lev3.lastChild.text = ALLTRIM(cur_pat1.sex)
			
ENDSCAN
danxiel вне форума Ответить с цитированием
Старый 04.09.2012, 14:06   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сканируешь по записям cur_pat, а обращение идет к данным одной записи курсора cur_pat1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.09.2012, 14:15   #3
danxiel
Новичок
Джуниор
 
Регистрация: 04.09.2012
Сообщений: 2
По умолчанию

Невнимательность - зло. Спасибо.
danxiel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MS SQL SERVER 2005 копирование таблицы из ОДНОЙ БД В другую или перенести все строки из одной таблицы в другую reihtmonbern БД в Delphi 4 17.07.2012 23:25
Переход из одной программы в другую T.E.A.M. C# (си шарп) 2 13.09.2011 15:38
Переход из одной папки в другую sanya_oz PHP 3 03.01.2011 23:54
Переход из одной формы в другую Axlen Microsoft Office Access 2 22.04.2010 07:40
Копирование записей из одной DBF таблицы в другую ИВэТэшка БД в Delphi 0 20.03.2009 22:37