Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / MS SQL->VFP8.0 / 7 сообщений из 7, страница 1 из 1
18.05.2004, 10:53
    #32521615
lesha_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL->VFP8.0
Сейчас столкнулся еще с одной проблемой: раньше из фокса вызывались процедуры sql server'a, теперь нужно перенести их на фокс
1) пройдет ли такой вызов на фоксе (лично я сомневаюсь, но может vfp8.0 поддерживает?)
INSERT INTO ARHPOW(idob, id_meter, m_gr, m_adr, mpower, rpower, dattim) SELECT idob, id_meter, m_gr, m_adr, mpower, rpower, dattim FROM TMPPOW1

2) вторая процедура:
UPDATE ARHPOW SET MPOWER=TMPPOW1.MPOWER,
RPOWER =TMPPOW1.RPOWER FROM TMPPOW1
WHERE ARHPOW.M_GR =TMPPOW1.m_gr AND ARHPOW.M_ADR=TMPPOW1.m_adr AND ARHPOW.DATTIM=TMPPOW1.dattim

DELETE FROM TMPPOW1 FROM ARHPOW WHERE TMPPOW1.m_gr=ARHPOW.M_GR AND TMPPOW1.m_adr=ARHPOW.M_ADR AND TMPPOW1.dattim=ARHPOW.DATTIM

такое фокс поймет но по-моему не так как sql
...
Рейтинг: 0 / 0
18.05.2004, 11:00
    #32521634
lesha_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL->VFP8.0
по поводу insert вопрос снимается, нашел в хелпе что можно, ну а на второй жду ответов
...
Рейтинг: 0 / 0
18.05.2004, 11:05
    #32521649
lesha_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL->VFP8.0
Далее, update и delete точно не пройдут из-за синтаксиса(операторы from)
Предложите, please, фоксовский аналог
...
Рейтинг: 0 / 0
18.05.2004, 11:20
    #32521700
lesha_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL->VFP8.0
ИЗменил на такое вот
GO TOP IN TMPPOW1
DO WHILE !EOF(TMPPOW1)
UPDATE ARHPOW SET MPOWER = TMPPOW1.MPOWER, ;
RPOWER = TMPPOW1.RPOWER ;
WHERE ARHPOW.M_GR = TMPPOW1.m_gr AND ;
ARHPOW.M_ADR = TMPPOW1.m_adr;
AND ARHPOW.DATTIM = TMPPOW1.dattim
IF _TALLY != 0
SELECT TMPPOW1
DELETE
SKIP -1
ENDIF
SKIP ON TMPPOW1
ENDDO
Сейчас тестирую, но если кто сразу видит ошибки сообщите, секономьте мне время
...
Рейтинг: 0 / 0
18.05.2004, 11:50
    #32521778
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL->VFP8.0
Вместо цикла DO WHILE !EOF() используй цикл SCAN...ENDSCAN

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
* Для ускорения выполнения команды LOCATE надо сбросить главный индекс
select ARHPOW 
SET ORDER TO  0 

* Чтобы не было "дерганий" в цикле SCAN
SET DELETED OFF
select TMPPOW1
SCAN
	select ARHPOW 
	LOCATE FOR ARHPOW.M_GR =TMPPOW1.m_gr AND ;
		ARHPOW.M_ADR=TMPPOW1.m_adr AND ;
		ARHPOW.DATTIM=TMPPOW1.dattim 
	IF FOUND('ARHPOW')
		REPLACE MPOWER=TMPPOW1.MPOWER, ;
			RPOWER =TMPPOW1.RPOWER 
	ELSE
		select TMPPOW1
		DELETE
	ENDIF
ENDSCAN

Чтобы поиск по LOCATE выполнялся быстрее в таблице ARHPOW должны существовать 3 индекса по полям M_GR, M_ADR, DATTIM
...
Рейтинг: 0 / 0
18.05.2004, 12:16
    #32521854
lesha_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL->VFP8.0
Да ты понял почти все правильно, только запись удаляется если найдена, т.е. твой код только без else
...
Рейтинг: 0 / 0
18.05.2004, 12:39
    #32521929
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL->VFP8.0
Как-то сразу не подумал. Сколько записей может удовлетворять условию поиска, которе я написал в LOCATE? Мой код сработает только если не больше 1. Если же возможно несколько записей, то следует переписать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
* Для ускорения выполнения команды REPLACE надо сбросить главный индекс
select ARHPOW 
SET ORDER TO  0 

* Чтобы не было "дерганий" в цикле SCAN
SET DELETED OFF
select TMPPOW1
SCAN
	select ARHPOW 
	REPLACE MPOWER=TMPPOW1.MPOWER, ;
		RPOWER =TMPPOW1.RPOWER ;
	FOR ARHPOW.M_GR =TMPPOW1.m_gr AND ;
		ARHPOW.M_ADR=TMPPOW1.m_adr AND ;
		ARHPOW.DATTIM=TMPPOW1.dattim

	IF _TALLY> 0 
		select TMPPOW1
		DELETE
	ENDIF
ENDSCAN

Впрочем, можно оставить и UPDATE-SQL
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / MS SQL->VFP8.0 / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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