Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Insert Recordset  [new]
john doe
Member

Откуда:
Сообщений: 16
Можно ли вставить рекордсет в таблицу не перебирая отдельные стоблцы:

insert into FlatArrest_cen(.........) values(...." & rs(...) & ".....)

adp 2002
23 апр 04, 15:23    [646658]     Ответить | Цитировать Сообщить модератору
 Re: Insert Recordset  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
А что мешает пройти циклом по rs.fields?
23 апр 04, 15:28    [646685]     Ответить | Цитировать Сообщить модератору
 Re: Insert Recordset  [new]
john doe
Member

Откуда:
Сообщений: 16
дело в том, что таблиц много, не хочется для каждой перечислять все поля.
может можно вставить строку как-нибудь типа: insert into table rs.fields, в цикле?
23 апр 04, 16:45    [647006]     Ответить | Цитировать Сообщить модератору
 Re: Insert Recordset  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Дарю функцию:

function AllFields(rs as dao.recordset)as string


dim s as string,f as dao.field

s=""
for each f in rs.fields
if s>"
" then s=s & ","
s=s & f.name
next
AllFields=s

end function

И теперь можно писать:

insert into FlatArrest_cen(.........) values(" & AllFields(rs) & ")"
23 апр 04, 16:49    [647023]     Ответить | Цитировать Сообщить модератору
 Re: Insert Recordset  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Поправка. Надо ведь заботиться о правильном порядке полей. Поэтому надо иметь отдельно список их значений, а отдельно список имен. Та функция, которую я привел выше, дает список имен. Вот более правильный вариант:

function AllFields(rs as dao.recordset,sWhat as string)as string


dim s as string,f as dao.field

s=""
for each f in rs.fields
if s>"
" then s=s & ","
select case sWhat
case "
names":s=s & f.name
case "
values":s=s & cstr(f.value)
end select
next
AllFields=s

end function

И тогда:

insert into FlatArrest_cen(" & AllFields(rs,"names") & ") values(" & AllFields(rs,"values") & ")"

Но случай "values" я сделал пока только на случай числовых данных. Если данные другие, то функцию надо еще дорабатывать.
23 апр 04, 16:55    [647049]     Ответить | Цитировать Сообщить модератору
 Re: Insert Recordset  [new]
john doe
Member

Откуда:
Сообщений: 16
спасибо
23 апр 04, 17:02    [647076]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить