Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Все таблици в одну / 16 сообщений из 16, страница 1 из 1
16.11.2004, 07:37:34
    #32783355
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
Здравствуй уважаемый ОЛЛ!
Не знаю как правильно сформулировать, но ситуация такая
Есть база данных в которой много таблиц с одинаковой структурой
Есть ли возможность програмно слить данные всех этих таблиц в одну
И если да, то с какой стороны к этому подступиться?
...
Рейтинг: 0 / 0
16.11.2004, 08:03:05
    #32783366
S l
S l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
INSERT INTO ... SELECT ...
...
Рейтинг: 0 / 0
16.11.2004, 08:04:03
    #32783368
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
в лоб
currentdb.execute "INSERT INTO Таблица1 SELECT * FROM Таблица2"
currentdb.execute "INSERT INTO Таблица1 SELECT * FROM Таблица3"

Если их как-то можно выделить от прочих -
перебирать TableDefs и
давать
currentdb.execute "INSERT INTO Таблица1 SELECT * FROM " & TableName"
или делать рекордсет на запросе к таблице MSysObjects (поиск по форуму) и перебирая его поступать аналогично
...
Рейтинг: 0 / 0
16.11.2004, 08:04:10
    #32783369
S l
S l
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
CurrentDb.execute "INSERT INTO ... SELECT ...;"
...
Рейтинг: 0 / 0
16.11.2004, 08:10:28
    #32783372
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
а union в Access нету?
...
Рейтинг: 0 / 0
16.11.2004, 08:16:44
    #32783380
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
Есть. А как написать такой запрос на вставку?
...
Рейтинг: 0 / 0
16.11.2004, 08:18:42
    #32783382
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
Спасибо за бурные отклики
Юнион есть, вот только мне надо название таблиц програмно заполнить, а я этого не умею делать.
Насколько я поняла, так я получу названия всех таблиц
Код: plaintext
1.
2.
SELECT MSysObjects.Type, MSysObjects.Name
FROM MSysObjects
WHERE (((MSysObjects.Type) In ( 6 , 1 )));

Код: plaintext
currentdb.execute "INSERT INTO Таблица1 SELECT * FROM " & TableName"
Сдесь тоже понятно,
а как мне присвоить TableName по очередно все имена таблиц?
...
Рейтинг: 0 / 0
16.11.2004, 08:23:59
    #32783390
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
Код: plaintext
1.
2.
3.
4.
5.
6.
select * into some_table from
(
select field1, field2, ... fieldn from table1
union
....
select field1, field2, ... fieldn from tablen
) as a

Так не прокатит в Аксессе? я то скуэлю на MS SQL в основном... там такое прокатывает
...
Рейтинг: 0 / 0
16.11.2004, 08:27:02
    #32783395
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
где-то так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim rst As ADODB.Recordset
Dim strSQL As String
Set rst = New ADODB.Recordset
strSQL = "SELECT MSysObjects.Type, MSysObjects.Name........"
rst.Open strSQL, CurrentProject.Connection
rst.MoveFirst
Do While Not rst.EOF
If Not rst!Name = "Таблица1" Then
CurrentDb.Execute "INSERT INTO Таблица1 SELECT * FROM " & rst!Name
End If
rst.MoveNext
Loop
rst.Close
set rst=nothing
...
Рейтинг: 0 / 0
16.11.2004, 08:33:44
    #32783399
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
Shurgenz
Код: plaintext
1.
2.
3.
select * into some_table from
(
select field1, field2, ... fieldn from table1
) as a

Так не прокатит в Аксессе? я то скуэлю на MS SQL в основном... там такое прокатывает
Прокатит. Можно и так. Единственное, что если число таблиц переменное - каждый раз собирать его будет муторно.
...
Рейтинг: 0 / 0
16.11.2004, 08:36:53
    #32783402
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
Что касается union - его собирать никогда не муторно.... контрол-С - контрол -V.

Названия то полей одни и те же.
...
Рейтинг: 0 / 0
16.11.2004, 08:46:37
    #32783410
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
ShurgenzЧто касается union - его собирать никогда не муторно.... контрол-С - контрол -V.

Названия то полей одни и те же.
речь то идет о программном слиянии.

Конечно, можно склеивать строку SQL с UNION в коде в зависимости от количества таблиц, но все равно нужно получать имена таблиц. Тут по сложности кода не уверен, что будет проще.
...
Рейтинг: 0 / 0
16.11.2004, 08:56:39
    #32783423
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
Dim rst As ADODB.Recordset
Ошибка компиляции ADO подключена
Это для mdb код?
...
Рейтинг: 0 / 0
16.11.2004, 09:20:36
    #32783449
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
Для mdb. Эта строка будет работать и в adp :)
...
Рейтинг: 0 / 0
16.11.2004, 09:29:45
    #32783463
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
С сылками разобралась
Спасибо большое
Буду смотреть дальше
...
Рейтинг: 0 / 0
16.11.2004, 09:47:14
    #32783499
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Все таблици в одну
Все работает, большое спасибо
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Все таблици в одну / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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