скопировать таблицу в mdb файле

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
МNР
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 04.08.2005 (Чт) 15:29

скопировать таблицу в mdb файле

Сообщение МNР » 04.08.2005 (Чт) 15:34

При попытке из VB6 создать таблицу в baza.mdb командой
SELECT * into таблица2 FROM таблица1
Бейсик ругается: "Отсутсвует разрешение на изменение макета таблицы..."
Подключаюсь так:
Код: Выделить всё
Set conn = CreateObject("ADODB.Connection")
    stroka = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "D:\BASA\baza.mdb" + ";Jet OLEDB:Database Password=123;"
    conn.Open stroka

Однако команда
Код: Выделить всё
DROP TABLE таблица2

выполняется без проблем. (если таблицу2 предварительно создать руками)
Разрешений никаких не нестраивал, все выставлено по умолчанию, пользователь один - admin
Подскажите что сделать?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.08.2005 (Чт) 15:47

SELECT * INTO? Это как?
Может лучше делать INSERT?
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 04.08.2005 (Чт) 15:47

А разве не так:

Код: Выделить всё
insert into tblSomeTable (select * from tblOtherTable)
?
А я все практикую лечение травами...

МNР
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 04.08.2005 (Чт) 15:29

Сообщение МNР » 04.08.2005 (Чт) 16:24

Команду
Код: Выделить всё
SELECT * into таблица2 FROM таблица1
я взял из книжки по аксесу и там она работает.
а
Код: Выделить всё
insert into ...
предполагает что выходная таблица уже существует. Или нет?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 04.08.2005 (Чт) 16:28

Да, предполагает. А создать слабо? :wink:
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.08.2005 (Чт) 16:29

Нет, таблица будет создана.
Но ты можешь создать таблицу и кодом.
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 04.08.2005 (Чт) 16:32

Нет, таблица будет создана.

Разве??? Блин, нигде об этом не слышал...
А я все практикую лечение травами...

МNР
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 04.08.2005 (Чт) 15:29

Сообщение МNР » 04.08.2005 (Чт) 16:48

Таблица не создается, только что проверил.
А создать действительно слабо. Лень перечислять поля после create table. Может есть более быстрый способ чтоб создать новую таблицу на основе структуры старой.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.08.2005 (Чт) 16:54

Правда не создается?
Хм... Ну тогда предварительно CREATE TABLE
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 04.08.2005 (Чт) 16:55

Да ладно, один раз перечисли и всю жизнь пользуйся, не миллион же их...
ЩАС заглянул в книженку которая есть на работе, но копирование структуры таблиц не нашел...
А я все практикую лечение травами...

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 30.08.2006 (Ср) 7:56

А разве нельзя в Access скопировать уже имеющуюся таблицу, затем дать команду вставить. Пойдет запрос: только структуру или с данными? Ответ: структуру. И никаких проблем...
Там все просто.
Или я чего-нибудь не понял в теме топика?
Последний раз редактировалось Summer.05 01.09.2006 (Пт) 14:03, всего редактировалось 2 раз(а).

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.08.2006 (Ср) 8:24

insert into вставляет записи в _существующую_ таблицу
select into _создает_ таблицу и вставляет записи

может ты делаешь select into при существующей таблице?

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.08.2006 (Ср) 8:32

Summer.05 писал(а):А разве нельзя в Access скопировать уже имеющуюся таблицу, затем дать команду вставить.

"Копирование структуры":
Код: Выделить всё
select top 1 * into t2 from t1
delete from t2

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 30.08.2006 (Ср) 9:15

может ты делаешь select into при существующей таблице?
select into предварительно дропает существующую таблицу.
"Копирование структуры":
Во-первых можно select top 0, чтобы без delete, во-вторых этим способом копируются только типы полей, а индексы, defaultы и т.п. - нет.
Лучший способ понять что-то самому — объяснить это другому.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.08.2006 (Ср) 9:22

Antonariy писал(а):select into предварительно дропает существующую таблицу
Хм, по крайней мере в DAO не дропает: "Таблица 't2' уже существует"

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 30.08.2006 (Ср) 9:27

Запрос, выполняемый в самом аксе дропает. Или предупреждает, если предупреждения включены. А сам акс вроде использует dao?
Лучший способ понять что-то самому — объяснить это другому.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.08.2006 (Ср) 9:32

Проверил в Access 2000 через CurrentDb (DAO 3.6) - ругается см.выше

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.08.2006 (Ср) 9:39

Antonariy писал(а):А сам акс вроде использует dao?

Насчет 2000 не уверен, но в XP используется ADO, хотя и DAO тоже подключена. Впрочем, в 2000 тоже подключены обе библиотеки.
Lasciate ogni speranza, voi ch'entrate.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 30.08.2006 (Ср) 10:12

Опытным путем дошел до
Код: Выделить всё
Application.CodeProject.Connection.Execute "select * into t2 from t1"
Это вроде уже ADO, ошибка см.выше


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList