Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Insert into Glupij vopros / 17 сообщений из 17, страница 1 из 1
20.06.2006, 18:41
    #33803730
dj_raven
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
sory, no nikak v helpe ne mogu najti, ranshe eto kak-to delal da zabil. Kak bilo s ispolzovanijem INSERT INTO i SELECT v odnom zaprose perekinutj dannije iz odnoj tablici v druguju? Kazhetsja dolzhno bitj chto-to takoje:
Код: plaintext
1.
2.
INSERT INTO add_edit (fld_id, fld_tbl, fld_name);
	FROM (Select * FROM gh_fields)
Tablici polnostju identichni
...
Рейтинг: 0 / 0
20.06.2006, 18:47
    #33803755
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
В 9-ке так:
Код: plaintext
INSERT INTO add_edit Select * FROM gh_fields
...
Рейтинг: 0 / 0
20.06.2006, 19:05
    #33803790
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
проходящийВ 9-ке так:
Код: plaintext
INSERT INTO add_edit Select * FROM gh_fields


Ну, ещё можно так

Insert into Table (f1, f2, f3,....) select f1,f2,f3,... from table2
...
Рейтинг: 0 / 0
20.06.2006, 19:08
    #33803800
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
Можно. Главное: список полей должен быть одинаковый.
...
Рейтинг: 0 / 0
20.06.2006, 19:10
    #33803811
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
Ну и типы полей, тоже. :))
...
Рейтинг: 0 / 0
20.06.2006, 19:24
    #33803843
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
Ну ясен перец!
...
Рейтинг: 0 / 0
21.06.2006, 10:28
    #33804534
dj_raven
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
Senks, schas zatestim :)
...
Рейтинг: 0 / 0
21.06.2006, 10:34
    #33804557
dj_raven
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
U menja stoit semjerka i ni odin variant ne prokativajet. Synatax error
...
Рейтинг: 0 / 0
21.06.2006, 10:48
    #33804608
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
А почитать HELP по команде INSERT-SQL ?

Для VFP7 такая конструкция вообще работать не будет, поскольку она синтаксически некорректна. Для VFP7 допустимо только прямое перечисление значений. Либо напрямую через VALUE, либо через массив. Но в любом случае, команда INSERT-SQL вставляет по одной записи за раз.

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

Код: plaintext
1.
2.
3.
4.
SELECT * FROM gh_fields INTO CURSOR curTmp NOFILTER
SELECT add_edit 
APPEND FROM (DBF("curTmp"))
USE IN curTmp


PS:

Конструкция INSERT INTO ... SELECT ... появилась только в VFP8. Причем совпадение типов вовсе не обязательно. Если типы не совпадают, то будет произведена их автоматическая конвертация. Насколько крректно - это уже другой вопрос...
...
Рейтинг: 0 / 0
21.06.2006, 10:52
    #33804628
dj_raven
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
Nu eto uzhe interesnej, ne nado i kursor vruchnuju sozdavatj :) senks
...
Рейтинг: 0 / 0
21.06.2006, 11:24
    #33804752
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
ВладимирМПричем совпадение типов вовсе не обязательно. Если типы не совпадают, то будет произведена их автоматическая конвертация.

На самом деле совпадение типов обязательно (за исключением implicit conversion), а для explicit, вообще конвертация будет проигнорирована, поскольку

ВладимирМНасколько крректно - это уже другой вопрос...

вот этот другой вопрос является основополагающим, хотим ли мы получить из данных мусор или нет.
...
Рейтинг: 0 / 0
21.06.2006, 11:30
    #33804772
dj_raven
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
Tak, na etoj zhe pochve voznik drugoj vopros. A Update na kursori ne dejstvujet chtoli? Mne nuzhno chto-to vremennogo s buferami s dannimi, kotorij potom mozhno budet, srazu neskolko desjatkov zapisej, zagnatj v nuzhnije tablici i udallitj ego
...
Рейтинг: 0 / 0
21.06.2006, 15:14
    #33805929
dj_raven
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
Otkazalsja ja ot ispolzovanija kursora, delaju naprjamuju v tablicu. Teperj problemma sledujuschaja. Napisal sledujuschij kod:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
PUBLIC ARRAY temp_data[ 8 ]
SELECT gh_tables
GOTO TOP

SELECT field_values
REQUERY("field_values")

SELECT * from field_values insert INTO TABLE add_edit

UPDATE add_edit set data= 0 . 00 , mode_id= 1 

SELECT * from field_values insert INTO TABLE add_edit

UPDATE add_edit set data= 0 . 00 , mode_id= 2  WHERE mode_id!= 1 

Pervij raz kak i nado, dannije v tablice perepisivajutsja polnostju, a vot so vtorim Select problemmi. On stirajet danije s pervogo zahoda i pishet poverh novije. A mne oni nuzhni vse. estj li vozmozhnostj eto sdelatj? I esche, kak potom udalitj etu tablicu, ona ne prinadlezhit ni odnoj baze
...
Рейтинг: 0 / 0
21.06.2006, 15:18
    #33805953
Возмущённый
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
А по-русски нельзя написать?
...
Рейтинг: 0 / 0
21.06.2006, 15:45
    #33806092
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
Зачем надо модифицировать данные ПОСЛЕ вставки? Разве нельзя это сделать ДО?

Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT *,  0 . 00  as data,  1  as mode_id ;
FROM gh_fields INTO CURSOR curTmp NOFILTER

SELECT add_edit 
APPEND FROM (DBF("curTmp"))
USE IN curTmp
...
Рейтинг: 0 / 0
21.06.2006, 17:02
    #33806400
dj_raven
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
v obschem, zaparilsja ja s etimi kursorami, sdelal tak:
Код: 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.
PUBLIC rec_count
SELECT gh_tables
GOTO TOP

SELECT field_values
REQUERY("field_values")

rec_count=RECCOUNT("field_values")
PUBLIC ARRAY field_count[rec_count,  8 ]

COPY TO ARRAY field_count
SELECT add_edit
DELETE FROM add_edit
 FOR x= 1  TO rec_count
 	field_count[x,  7 ]= 0 . 00 
 	field_count[x,  8 ]= 1 
 ENDFOR 

APPEND FROM ARRAY field_count

 FOR x= 1  TO rec_count
 	field_count[x,  8 ]= 2 
 ENDFOR 

APPEND FROM ARRAY field_count
Vsje rabotajet :)
...
Рейтинг: 0 / 0
24.06.2006, 18:24
    #33813054
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Insert into Glupij vopros
Hi dj_raven!

В массиве есть свои ограничения (в частности по размеру)

Если идёт выборка в курсор командой SELECT то тебе поможет опция READWRITE -
иначе курсор будет только для чтения. Кроме того выборка - это всегда
создание нового курсора или новой таблицы - "добавить" через SELECT ничего
нельзя - только INSERT ... SELECT или APPEND FROM поможет.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Insert into Glupij vopros / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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