Как создать запрос на добавление записей одной таблицы в несколько других таблиц в зависимости от условий? Проблема добавления в НЕСКОЛЬКО таблиц с помощью одного запроса.
» Access
Насколько я знаю - в Access такой фокус сделать нельзя. Только несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу.
Marvan
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
Цитата:
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
}
Сильно сомневаюсь что это будет работать.
Sleepwalker
Цитата:
Назвался спецом давай работающий пример.
Цитата:
Это не пример, это не работает.
Цитата:
а вот спецы говорят, что
Назвался спецом давай работающий пример.
Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
Это не пример, это не работает.
Marvan
проверили - действительно не работает..
ну... енто недостатки Jetа...
Arion
ну дык.. вообще ANSI SQL достаточно консервативен
проверили - действительно не работает..
ну... енто недостатки Jetа...
Arion
ну дык.. вообще ANSI SQL достаточно консервативен
Применение INSERT INTO возможно только в случае добавления в ОДНУ таблицу.
Хотя можно и на VBA c помощью If, Than, Else учитывать условия, в зависимост от которых соответственно должно выполняться добавление в соответствующие таблицы.
Да, можно создать несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу, НО когда речь идет о 100 и возможно более запросах, это просто глупо, имея такие возможности Access.
Из помощника я знаю, что можно добавлять сразу в несколько таблиц, но как или хотя бы пример там не дан. Хотелось бы создать этот запрос на SQL или, если возможно, с помощью обычного бланка запроса. НО если использовать обычный бланк запроса, то при указаниии, что это запрос на добавление, выскакивает формочка, в которой нужно указать имя таблицы ОДНОЙ, в которую будут добавляться записи. Из-за невозможности указать НЕСКОЛЬКО таблиц (может я не знаю как там выделить несколько таблиц) обычный бланк запроса для решения поставленной задачи не подходит.
Какие будут предложения по поводу SQL??? Или наиболее рациональные, на Ваше усмотрение, примеры на VBA???
Хотя можно и на VBA c помощью If, Than, Else учитывать условия, в зависимост от которых соответственно должно выполняться добавление в соответствующие таблицы.
Да, можно создать несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу, НО когда речь идет о 100 и возможно более запросах, это просто глупо, имея такие возможности Access.
Из помощника я знаю, что можно добавлять сразу в несколько таблиц, но как или хотя бы пример там не дан. Хотелось бы создать этот запрос на SQL или, если возможно, с помощью обычного бланка запроса. НО если использовать обычный бланк запроса, то при указаниии, что это запрос на добавление, выскакивает формочка, в которой нужно указать имя таблицы ОДНОЙ, в которую будут добавляться записи. Из-за невозможности указать НЕСКОЛЬКО таблиц (может я не знаю как там выделить несколько таблиц) обычный бланк запроса для решения поставленной задачи не подходит.
Какие будут предложения по поводу SQL??? Или наиболее рациональные, на Ваше усмотрение, примеры на VBA???
'есть таблицы 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
'процедура 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
Как создать запрос на добавление записей одной таблицы в несколько других таблиц в зависимости от условий? Проблема добавления в НЕСКОЛЬКО таблиц с помощью одного запроса.
Насколько я знаю - в Access такой фокус сделать нельзя. Только несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу.
Marvan
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
Цитата:
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
}
Сильно сомневаюсь что это будет работать.
Sleepwalker
Цитата:
Назвался спецом давай работающий пример.
Цитата:
Это не пример, это не работает.
Цитата:
а вот спецы говорят, что
Назвался спецом давай работающий пример.
Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
Это не пример, это не работает.
Marvan
проверили - действительно не работает..
ну... енто недостатки Jetа...
Arion
ну дык.. вообще ANSI SQL достаточно консервативен
проверили - действительно не работает..
ну... енто недостатки Jetа...
Arion
ну дык.. вообще ANSI SQL достаточно консервативен
Применение INSERT INTO возможно только в случае добавления в ОДНУ таблицу.
Хотя можно и на VBA c помощью If, Than, Else учитывать условия, в зависимост от которых соответственно должно выполняться добавление в соответствующие таблицы.
Да, можно создать несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу, НО когда речь идет о 100 и возможно более запросах, это просто глупо, имея такие возможности Access.
Из помощника я знаю, что можно добавлять сразу в несколько таблиц, но как или хотя бы пример там не дан. Хотелось бы создать этот запрос на SQL или, если возможно, с помощью обычного бланка запроса. НО если использовать обычный бланк запроса, то при указаниии, что это запрос на добавление, выскакивает формочка, в которой нужно указать имя таблицы ОДНОЙ, в которую будут добавляться записи. Из-за невозможности указать НЕСКОЛЬКО таблиц (может я не знаю как там выделить несколько таблиц) обычный бланк запроса для решения поставленной задачи не подходит.
Какие будут предложения по поводу SQL??? Или наиболее рациональные, на Ваше усмотрение, примеры на VBA???
Хотя можно и на VBA c помощью If, Than, Else учитывать условия, в зависимост от которых соответственно должно выполняться добавление в соответствующие таблицы.
Да, можно создать несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу, НО когда речь идет о 100 и возможно более запросах, это просто глупо, имея такие возможности Access.
Из помощника я знаю, что можно добавлять сразу в несколько таблиц, но как или хотя бы пример там не дан. Хотелось бы создать этот запрос на SQL или, если возможно, с помощью обычного бланка запроса. НО если использовать обычный бланк запроса, то при указаниии, что это запрос на добавление, выскакивает формочка, в которой нужно указать имя таблицы ОДНОЙ, в которую будут добавляться записи. Из-за невозможности указать НЕСКОЛЬКО таблиц (может я не знаю как там выделить несколько таблиц) обычный бланк запроса для решения поставленной задачи не подходит.
Какие будут предложения по поводу SQL??? Или наиболее рациональные, на Ваше усмотрение, примеры на VBA???
'есть таблицы 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
'процедура 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
Как создать запрос на добавление записей одной таблицы в несколько других таблиц в зависимости от условий? Проблема добавления в НЕСКОЛЬКО таблиц с помощью одного запроса.
Насколько я знаю - в Access такой фокус сделать нельзя. Только несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу.
Marvan
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
Цитата:
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
}
Сильно сомневаюсь что это будет работать.
Sleepwalker
Цитата:
Назвался спецом давай работающий пример.
Цитата:
Это не пример, это не работает.
Цитата:
а вот спецы говорят, что
Назвался спецом давай работающий пример.
Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
Это не пример, это не работает.
Marvan
проверили - действительно не работает..
ну... енто недостатки Jetа...
Arion
ну дык.. вообще ANSI SQL достаточно консервативен
проверили - действительно не работает..
ну... енто недостатки Jetа...
Arion
ну дык.. вообще ANSI SQL достаточно консервативен
Применение INSERT INTO возможно только в случае добавления в ОДНУ таблицу.
Хотя можно и на VBA c помощью If, Than, Else учитывать условия, в зависимост от которых соответственно должно выполняться добавление в соответствующие таблицы.
Да, можно создать несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу, НО когда речь идет о 100 и возможно более запросах, это просто глупо, имея такие возможности Access.
Из помощника я знаю, что можно добавлять сразу в несколько таблиц, но как или хотя бы пример там не дан. Хотелось бы создать этот запрос на SQL или, если возможно, с помощью обычного бланка запроса. НО если использовать обычный бланк запроса, то при указаниии, что это запрос на добавление, выскакивает формочка, в которой нужно указать имя таблицы ОДНОЙ, в которую будут добавляться записи. Из-за невозможности указать НЕСКОЛЬКО таблиц (может я не знаю как там выделить несколько таблиц) обычный бланк запроса для решения поставленной задачи не подходит.
Какие будут предложения по поводу SQL??? Или наиболее рациональные, на Ваше усмотрение, примеры на VBA???
Хотя можно и на VBA c помощью If, Than, Else учитывать условия, в зависимост от которых соответственно должно выполняться добавление в соответствующие таблицы.
Да, можно создать несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу, НО когда речь идет о 100 и возможно более запросах, это просто глупо, имея такие возможности Access.
Из помощника я знаю, что можно добавлять сразу в несколько таблиц, но как или хотя бы пример там не дан. Хотелось бы создать этот запрос на SQL или, если возможно, с помощью обычного бланка запроса. НО если использовать обычный бланк запроса, то при указаниии, что это запрос на добавление, выскакивает формочка, в которой нужно указать имя таблицы ОДНОЙ, в которую будут добавляться записи. Из-за невозможности указать НЕСКОЛЬКО таблиц (может я не знаю как там выделить несколько таблиц) обычный бланк запроса для решения поставленной задачи не подходит.
Какие будут предложения по поводу SQL??? Или наиболее рациональные, на Ваше усмотрение, примеры на VBA???
'есть таблицы 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
'процедура 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
Как создать запрос на добавление записей одной таблицы в несколько других таблиц в зависимости от условий? Проблема добавления в НЕСКОЛЬКО таблиц с помощью одного запроса.
Насколько я знаю - в Access такой фокус сделать нельзя. Только несколько отдельных запросов с проверкой условия, где каждый запрос добавляет данные в определённую таблицу.
Marvan
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
а вот спецы говорят, что можно...
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
факт что можно.. далее вопрос оптимизации запроса...
Цитата:
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
}
Сильно сомневаюсь что это будет работать.
Sleepwalker
Цитата:
Назвался спецом давай работающий пример.
Цитата:
Это не пример, это не работает.
Цитата:
а вот спецы говорят, что
Назвался спецом давай работающий пример.
Цитата:
INSERT INTO t1.f1,t1.f2,t2.f1,t2.f2 FROM source.f1,sourse.f2,source.f1,sourse.f2
ну и т.д.
Это не пример, это не работает.
Marvan
проверили - действительно не работает..
ну... енто недостатки Jetа...
Arion
ну дык.. вообще ANSI SQL достаточно консервативен
проверили - действительно не работает..
ну... енто недостатки Jetа...
Arion
ну дык.. вообще ANSI SQL достаточно консервативен
Предыдущая тема: Выбор контрола в VC++ для вывода информации из БД
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.