Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / insert / 9 сообщений из 9, страница 1 из 1
06.07.2004, 13:00
    #32591166
lesha_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert
мне нужно вставить в table2 все поля из table1 кроме одного(idob'a)
структура table2:
idob(не тот же что в table1) | все поля table1 кроме idob'a | дата

Можно ли это сделать без insert into table2(имена полей) values(имена полей table1)
Суть вопроса в том что в table1 куча полей(около 30) и очень в лом их всех писать.
Вопрос конечно немного абсурдный, извините если кого отвлек от важных дел.
...
Рейтинг: 0 / 0
06.07.2004, 13:05
    #32591187
insert
А SCATTER TO Array и INSERT FROM Array не подойдут?
...
Рейтинг: 0 / 0
06.07.2004, 13:19
    #32591235
lesha_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert
спасибо за ответ, полезная штука. Но я прочитал свой вопрос еще раз и понял что это невозможно. Или можно сделать insert from array не во все поля таблицы?
...
Рейтинг: 0 / 0
06.07.2004, 13:47
    #32591309
insert
Если последовательность полей в этих таблицах одинакова, и только значение одного поля изменяется, то Вы каким-то образом вычисляете это значение?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
LOCAL aBuff[ 1 ]
select alias1
go top 
scan 
   scatter to aBuff
   aBuff[ 1 ] = функция, вычисляющая значение поля idob
   insert into alias2 from array aBuff
endscan 
В примере предполагается, что поле idob - первое в таблице.
Подойдёт?
...
Рейтинг: 0 / 0
06.07.2004, 13:48
    #32591315
vitali_z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert
А если так

SELE table1
SCATTER MEMO MEMVAR
SELE table2
idob = CTOD('')
APPEND BLANK
GATHER MEMO MEMVAR
...
Рейтинг: 0 / 0
06.07.2004, 14:06
    #32591369
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert
Кроме одного - используй except:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
private all
select table1
scan all
     scatter memvar memo
     select table2
     append blank
     gather memvar memo fields except твое_исключительное_поле
endscan
...
Рейтинг: 0 / 0
06.07.2004, 14:24
    #32591414
insert
to Анатолий Широков

Поясните, пожалуйста, следующий фрагмент Вашего кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
private all - это для чего?
...
scan all
     ...
     select table2
     ...
* А как с рабочей областью table1?
endscan
...
Рейтинг: 0 / 0
06.07.2004, 14:38
    #32591463
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert
авторprivate all - это для чего?

Если до вызова процедуры и были глобальные переменные с именами полей, то private all скрывает их, тем самым, предотвращая их изменение. Вот пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public field
field = "hello"
foo()
+? m.field
boo()
? m.field

function foo
private field
    field = "foo" 
endfunc
function boo
    field = "boo" 
endfunc

авторА как с рабочей областью table1?

SCAN автоматически восстанавливает рабочую область, так что явное переключение рабочей области на table1 не требуется.
...
Рейтинг: 0 / 0
07.07.2004, 11:37
    #32592945
lesha_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert
2Клепенин: твой вариант немного не подходит. table2 отличается от table1 содержанием одного поля и наличием двух дополнительных полей.
2Широков: спасибо. то что надо:)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / insert / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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