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

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

...
Рейтинг: 0 / 0
11.09.2008, 22:36
    #35535323
Андрей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор и таблица
Append From FileName берёт "добавку" из таблицы, а не из курсора. Таблицы нет, потому и ругается. Отсюда выводы: либо создать таблицу вместо курсора, либо добавлять INSERT'ами, сканируя курсор.
...
Рейтинг: 0 / 0
11.09.2008, 22:46
    #35535330
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор и таблица
Андрей КAppend From FileName берёт "добавку" из таблицы, а не из курсора. Таблицы нет, потому и ругается. Отсюда выводы: либо создать таблицу вместо курсора, либо добавлять INSERT'ами, сканируя курсор.
Направление мысли вроде бы и правильное, но вот сделанные выводы совершенно не правильные. :)
Решение я уже показал.
...
Рейтинг: 0 / 0
12.09.2008, 09:26
    #35535595
гость...
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор и таблица
Курсор ведь храниться не только в памяти, но и на диске.
Остается узнать где он находиться и с каким именем, т.е. сама дбф-ка. Для этого и есть функция dbf('alias')
Единственное, что Сергей кавычки не поставил в функции dbf()
...
Рейтинг: 0 / 0
12.09.2008, 09:32
    #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
12.09.2008, 09:43
    #35535638
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор и таблица
гость...Курсор ведь храниться не только в памяти, но и на диске.
Остается узнать где он находиться и с каким именем, т.е. сама дбф-ка. Для этого и есть функция dbf('alias')
Единственное, что Сергей кавычки не поставил в функции dbf()
Да-с, и на старуху бывает проруха...
...
Рейтинг: 0 / 0
12.09.2008, 10:29
    #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
12.09.2008, 13:07
    #35536289
Андрей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Курсор и таблица
Спасибо, 12345вышелзайчикпогулять!
Курсор-адаптер как раз собрался изучить на предмет перехода под MS SQL
...
Рейтинг: 0 / 0
12.09.2008, 13:50
    #35536417
Курсор и таблица
авторкак раз собрался изучить

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

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


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