powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Курсор и таблица
12 сообщений из 12, страница 1 из 1
Курсор и таблица
    #35531546
Jimy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
программно создаю курсор со структурой, аналогичной основной таблице.
Заполняю его, произвожу вычисления. Затем нужно перекинуть данные из него в
основную таблу.
Append from crs_table
Ругается, говорит нет такого. Но ведь он есть! Его в Browse видно...
Подскажите, как заполнит таблицу данными из курсора
...
Рейтинг: 0 / 0
Курсор и таблица
    #35531561
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
Append from dbf(crs_table)
...
Рейтинг: 0 / 0
Курсор и таблица
    #35531710
Затем нужно перекинуть данные из него в
основную таблу.

не желаете воспользоваься курсорадаптером?
...
Рейтинг: 0 / 0
Курсор и таблица
    #35534845
Гость....
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])]
   SELECT SELECTClauses [UNION UnionClause SELECT SELECTClauses ...]

...
Рейтинг: 0 / 0
Курсор и таблица
    #35535323
Андрей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Append From FileName берёт "добавку" из таблицы, а не из курсора. Таблицы нет, потому и ругается. Отсюда выводы: либо создать таблицу вместо курсора, либо добавлять INSERT'ами, сканируя курсор.
...
Рейтинг: 0 / 0
Курсор и таблица
    #35535330
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей КAppend From FileName берёт "добавку" из таблицы, а не из курсора. Таблицы нет, потому и ругается. Отсюда выводы: либо создать таблицу вместо курсора, либо добавлять INSERT'ами, сканируя курсор.
Направление мысли вроде бы и правильное, но вот сделанные выводы совершенно не правильные. :)
Решение я уже показал.
...
Рейтинг: 0 / 0
Курсор и таблица
    #35535595
гость...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Курсор ведь храниться не только в памяти, но и на диске.
Остается узнать где он находиться и с каким именем, т.е. сама дбф-ка. Для этого и есть функция dbf('alias')
Единственное, что Сергей кавычки не поставил в функции dbf()
...
Рейтинг: 0 / 0
Курсор и таблица
    #35535617
гость...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
CREATE CURSOR c1 (ccc c( 100 ))
INSERT INTO c1 (ccc) VALUES  ( DBF('c1'))
BROWSE
а имя файла с путем имеет вид примерно такой:
C:\DOCUME~1\UserGS~1\LOCALS~1\TEMP\00004ZK900DK.TMP
...
Рейтинг: 0 / 0
Курсор и таблица
    #35535638
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гость...Курсор ведь храниться не только в памяти, но и на диске.
Остается узнать где он находиться и с каким именем, т.е. сама дбф-ка. Для этого и есть функция dbf('alias')
Единственное, что Сергей кавычки не поставил в функции dbf()
Да-с, и на старуху бывает проруха...
...
Рейтинг: 0 / 0
Курсор и таблица
    #35535749
2Андрей К

я не настаиваю - просто в качестве информации

в фокспро есть курсорадаптер

если у Вас часто доб-ся записи ми хочется не задумываться над механизмом
переброски потроганных или добавленных записей в основную табличку,
то можно поступить так:

1. есть таблица
2. поднимаете курсорадаптер по условию .f. - в курсоре будет 0 записей
3. добавляете в курсор курсорадаптера что желаете
4. далее вам нужно будет сделать только тэйблапдейт и посмотреть результат этого

этим Вы получаете абстрактный механизм, + если Вы сделаете
это создав универсальный класс, то сможете его применять для различных табличек

нечто похожее по функции, только для ODBC t_sql

Код: 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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
* метод переливает данные из локального курсора в табличку на сервере
lparameters tcCreateTableCmd, ; && можно не передавать, если есть уже табличка
			;
			tcTableName,      ; && имя таблички на сервере
			tcKeyField,		  ; && id в табличке
			tcTableFields,    ; && поля таблицы
			;
			tcCursorName,     ; && курсор на локале
			tcCursorFields,   ; && поля курсора
			tcWhere             && условие отбора записей из курсора


if !empty(tcCreateTableCmd) 
	local lcAddCmd
	if  at("#", tcTableName)> 0 
		* удаляем только временные таблицы
		text to lcAddCmd  noshow textmerge pretext  3 
			if object_id('tempdb.<<tcTableName>>') is not null drop table <<tcTableName>>
			
		endtext
	else
		lcAddCmd = ""
	endif
	if oServer.SqlExec(lcAddCmd + tcCreateTableCmd)< 0 
		return .f.
	endif
endif


local loCad, llSuccess
loCad = this.createCadObject(this,				;
							 tcTableName,		;	&& таблица на сервере
							 tcKeyField,		;	&& ключь-линк в таблице
							 "#ALLFIELDS#",		;   && обновляемые поля в таблице
							 .f.,				;	&& схема - преобразов-е типов
							 "1=0", 			;   && условие в запросе
							 tcTableFields, 	;   && поля в строке запроса к таблице сервера
							 "", 				;	&& group by
							 "",			    ;	&& order by
							 "",				;	&& добавчик к SelectCmd
							 "", 				;   && если уж совсем нестандартный запрос
							 "SavedTable")			&& имя алиаза
							 
if 	vartype(loCad)="O"

	tcWhere = iif( empty(tcWhere), ".t.", tcWhere)
	try 
		insert into SavedTable ( &tcTableFields ) ;
			select &tcCursorFields ;
				from (tcCursorName) with (buffering=.t.) ;
				where &tcWhere
		llSuccess = .t.
	catch
		messagebox("Ошика запроса из курсора",  16 , "oServer.SaveTable") 
	endtry
	
	if llSuccess and loCad.SaveCursor()
		return .t.
	else
		return .f.
	endif 	

else
	return .f.
endif						 


еще раз для всех - я не настаиваю - это просто информация о возможностях фокспро -
для незнавшего это будет оч.хорошей и полезной инф-ей

если кто-то заинтересуется, то я покажу пример
...
Рейтинг: 0 / 0
Курсор и таблица
    #35536289
Андрей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, 12345вышелзайчикпогулять!
Курсор-адаптер как раз собрался изучить на предмет перехода под MS SQL
...
Рейтинг: 0 / 0
Курсор и таблица
    #35536417
авторкак раз собрался изучить

ок, пожалуйста

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


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