Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Access

Автор: Linda
Дата сообщения: 19.01.2004 05:40
Как создать запрос на добавление записей одной таблицы в несколько других таблиц в зависимости от условий? Проблема добавления в НЕСКОЛЬКО таблиц с помощью одного запроса.
Автор: Marvan
Дата сообщения: 19.01.2004 09:07
Насколько я знаю - в Access такой фокус сделать нельзя. Только несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу.
Автор: Sleepwalker
Дата сообщения: 19.01.2004 09:36
Marvan
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
Автор: Arion
Дата сообщения: 19.01.2004 09:56

Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2

Впервые вижу такую форму INSERT. Она явно не соответствует стандарту SQL.

Цитата:

INSERT [ INTO]
{ table_name WITH ( < table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited
}

{ [ ( column_list ) ]
{ VALUES
( { DEFAULT | NULL | expression } [ ,...n] )
| derived_table
| execute_statement
}
}
| DEFAULT VALUES

< table_hint_limited > ::=
{ FASTFIRSTROW
| HOLDLOCK
| PAGLOCK
| READCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}



Сильно сомневаюсь что это будет работать.
Автор: Marvan
Дата сообщения: 19.01.2004 10:07
Sleepwalker

Цитата:
а вот спецы говорят, что

Назвался спецом давай работающий пример.

Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.

Это не пример, это не работает.
Автор: Sleepwalker
Дата сообщения: 19.01.2004 16:38
Marvan
проверили - действительно не работает..
ну... енто недостатки Jetа...

Arion
ну дык.. вообще ANSI SQL достаточно консервативен
Автор: Linda
Дата сообщения: 20.01.2004 01:33
Применение INSERT INTO возможно только в случае добавления в ОДНУ таблицу.
Хотя можно и на VBA c помощью If, Than, Else учитывать условия, в зависимост от которых соответственно должно выполняться добавление в соответствующие таблицы.

Да, можно создать несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу, НО когда речь идет о 100 и возможно более запросах, это просто глупо, имея такие возможности Access.

Из помощника я знаю, что можно добавлять сразу в несколько таблиц, но как или хотя бы пример там не дан. Хотелось бы создать этот запрос на SQL или, если возможно, с помощью обычного бланка запроса. НО если использовать обычный бланк запроса, то при указаниии, что это запрос на добавление, выскакивает формочка, в которой нужно указать имя таблицы ОДНОЙ, в которую будут добавляться записи. Из-за невозможности указать НЕСКОЛЬКО таблиц (может я не знаю как там выделить несколько таблиц) обычный бланк запроса для решения поставленной задачи не подходит.

Какие будут предложения по поводу SQL??? Или наиболее рациональные, на Ваше усмотрение, примеры на VBA???
Автор: Marvan
Дата сообщения: 20.01.2004 09:01
'есть таблицы t1,t2,t3 c одинаковым набором полей f1,f2,f3
'процедура test выполнит два запроса на добавление в t2 и t3 в зависимости от значения t1.f1
'запросов может быть больше

Public Sub test()
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
With cn
.ConnectionString = CurrentDb().Name
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Mode = adModeReadWrite
.Open
.Execute "INSERT INTO t2 SELECT t1.* FROM t1 WHERE t1.f1<3"
.Execute "INSERT INTO t3 SELECT t1.* FROM t1 WHERE t1.f1>=3"
'.Execute ...
End With
End Sub
Автор: Linda
Дата сообщения: 19.01.2004 05:40
Как создать запрос на добавление записей одной таблицы в несколько других таблиц в зависимости от условий? Проблема добавления в НЕСКОЛЬКО таблиц с помощью одного запроса.
Автор: Marvan
Дата сообщения: 19.01.2004 09:07
Насколько я знаю - в Access такой фокус сделать нельзя. Только несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу.
Автор: Sleepwalker
Дата сообщения: 19.01.2004 09:36
Marvan
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
Автор: Arion
Дата сообщения: 19.01.2004 09:56

Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2

Впервые вижу такую форму INSERT. Она явно не соответствует стандарту SQL.

Цитата:

INSERT [ INTO]
{ table_name WITH ( < table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited
}

{ [ ( column_list ) ]
{ VALUES
( { DEFAULT | NULL | expression } [ ,...n] )
| derived_table
| execute_statement
}
}
| DEFAULT VALUES

< table_hint_limited > ::=
{ FASTFIRSTROW
| HOLDLOCK
| PAGLOCK
| READCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}



Сильно сомневаюсь что это будет работать.
Автор: Marvan
Дата сообщения: 19.01.2004 10:07
Sleepwalker

Цитата:
а вот спецы говорят, что

Назвался спецом давай работающий пример.

Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.

Это не пример, это не работает.
Автор: Sleepwalker
Дата сообщения: 19.01.2004 16:38
Marvan
проверили - действительно не работает..
ну... енто недостатки Jetа...

Arion
ну дык.. вообще ANSI SQL достаточно консервативен
Автор: Linda
Дата сообщения: 20.01.2004 01:33
Применение INSERT INTO возможно только в случае добавления в ОДНУ таблицу.
Хотя можно и на VBA c помощью If, Than, Else учитывать условия, в зависимост от которых соответственно должно выполняться добавление в соответствующие таблицы.

Да, можно создать несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу, НО когда речь идет о 100 и возможно более запросах, это просто глупо, имея такие возможности Access.

Из помощника я знаю, что можно добавлять сразу в несколько таблиц, но как или хотя бы пример там не дан. Хотелось бы создать этот запрос на SQL или, если возможно, с помощью обычного бланка запроса. НО если использовать обычный бланк запроса, то при указаниии, что это запрос на добавление, выскакивает формочка, в которой нужно указать имя таблицы ОДНОЙ, в которую будут добавляться записи. Из-за невозможности указать НЕСКОЛЬКО таблиц (может я не знаю как там выделить несколько таблиц) обычный бланк запроса для решения поставленной задачи не подходит.

Какие будут предложения по поводу SQL??? Или наиболее рациональные, на Ваше усмотрение, примеры на VBA???
Автор: Marvan
Дата сообщения: 20.01.2004 09:01
'есть таблицы t1,t2,t3 c одинаковым набором полей f1,f2,f3
'процедура test выполнит два запроса на добавление в t2 и t3 в зависимости от значения t1.f1
'запросов может быть больше

Public Sub test()
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
With cn
.ConnectionString = CurrentDb().Name
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Mode = adModeReadWrite
.Open
.Execute "INSERT INTO t2 SELECT t1.* FROM t1 WHERE t1.f1<3"
.Execute "INSERT INTO t3 SELECT t1.* FROM t1 WHERE t1.f1>=3"
'.Execute ...
End With
End Sub
Автор: Linda
Дата сообщения: 19.01.2004 05:40
Как создать запрос на добавление записей одной таблицы в несколько других таблиц в зависимости от условий? Проблема добавления в НЕСКОЛЬКО таблиц с помощью одного запроса.
Автор: Marvan
Дата сообщения: 19.01.2004 09:07
Насколько я знаю - в Access такой фокус сделать нельзя. Только несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу.
Автор: Sleepwalker
Дата сообщения: 19.01.2004 09:36
Marvan
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
Автор: Arion
Дата сообщения: 19.01.2004 09:56

Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2

Впервые вижу такую форму INSERT. Она явно не соответствует стандарту SQL.

Цитата:

INSERT [ INTO]
{ table_name WITH ( < table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited
}

{ [ ( column_list ) ]
{ VALUES
( { DEFAULT | NULL | expression } [ ,...n] )
| derived_table
| execute_statement
}
}
| DEFAULT VALUES

< table_hint_limited > ::=
{ FASTFIRSTROW
| HOLDLOCK
| PAGLOCK
| READCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}



Сильно сомневаюсь что это будет работать.
Автор: Marvan
Дата сообщения: 19.01.2004 10:07
Sleepwalker

Цитата:
а вот спецы говорят, что

Назвался спецом давай работающий пример.

Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.

Это не пример, это не работает.
Автор: Sleepwalker
Дата сообщения: 19.01.2004 16:38
Marvan
проверили - действительно не работает..
ну... енто недостатки Jetа...

Arion
ну дык.. вообще ANSI SQL достаточно консервативен
Автор: Linda
Дата сообщения: 20.01.2004 01:33
Применение INSERT INTO возможно только в случае добавления в ОДНУ таблицу.
Хотя можно и на VBA c помощью If, Than, Else учитывать условия, в зависимост от которых соответственно должно выполняться добавление в соответствующие таблицы.

Да, можно создать несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу, НО когда речь идет о 100 и возможно более запросах, это просто глупо, имея такие возможности Access.

Из помощника я знаю, что можно добавлять сразу в несколько таблиц, но как или хотя бы пример там не дан. Хотелось бы создать этот запрос на SQL или, если возможно, с помощью обычного бланка запроса. НО если использовать обычный бланк запроса, то при указаниии, что это запрос на добавление, выскакивает формочка, в которой нужно указать имя таблицы ОДНОЙ, в которую будут добавляться записи. Из-за невозможности указать НЕСКОЛЬКО таблиц (может я не знаю как там выделить несколько таблиц) обычный бланк запроса для решения поставленной задачи не подходит.

Какие будут предложения по поводу SQL??? Или наиболее рациональные, на Ваше усмотрение, примеры на VBA???
Автор: Marvan
Дата сообщения: 20.01.2004 09:01
'есть таблицы t1,t2,t3 c одинаковым набором полей f1,f2,f3
'процедура test выполнит два запроса на добавление в t2 и t3 в зависимости от значения t1.f1
'запросов может быть больше

Public Sub test()
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
With cn
.ConnectionString = CurrentDb().Name
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Mode = adModeReadWrite
.Open
.Execute "INSERT INTO t2 SELECT t1.* FROM t1 WHERE t1.f1<3"
.Execute "INSERT INTO t3 SELECT t1.* FROM t1 WHERE t1.f1>=3"
'.Execute ...
End With
End Sub
Автор: Linda
Дата сообщения: 19.01.2004 05:40
Как создать запрос на добавление записей одной таблицы в несколько других таблиц в зависимости от условий? Проблема добавления в НЕСКОЛЬКО таблиц с помощью одного запроса.
Автор: Marvan
Дата сообщения: 19.01.2004 09:07
Насколько я знаю - в Access такой фокус сделать нельзя. Только несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу.
Автор: Sleepwalker
Дата сообщения: 19.01.2004 09:36
Marvan
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
Автор: Arion
Дата сообщения: 19.01.2004 09:56

Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2

Впервые вижу такую форму INSERT. Она явно не соответствует стандарту SQL.

Цитата:

INSERT [ INTO]
{ table_name WITH ( < table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited
}

{ [ ( column_list ) ]
{ VALUES
( { DEFAULT | NULL | expression } [ ,...n] )
| derived_table
| execute_statement
}
}
| DEFAULT VALUES

< table_hint_limited > ::=
{ FASTFIRSTROW
| HOLDLOCK
| PAGLOCK
| READCOMMITTED
| REPEATABLEREAD
| ROWLOCK
| SERIALIZABLE
| TABLOCK
| TABLOCKX
| UPDLOCK
}



Сильно сомневаюсь что это будет работать.
Автор: Marvan
Дата сообщения: 19.01.2004 10:07
Sleepwalker

Цитата:
а вот спецы говорят, что

Назвался спецом давай работающий пример.

Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.

Это не пример, это не работает.
Автор: Sleepwalker
Дата сообщения: 19.01.2004 16:38
Marvan
проверили - действительно не работает..
ну... енто недостатки Jetа...

Arion
ну дык.. вообще ANSI SQL достаточно консервативен

Страницы: 12

Предыдущая тема: Выбор контрола в VC++ для вывода информации из БД


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.