powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / CreateTableDef - прилинкованная таблица
22 сообщений из 22, страница 1 из 1
CreateTableDef - прилинкованная таблица
    #32462133
Ander Borisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно создать прилинкованную таблицу через DAO. Читаю HELP:

Код: plaintext
1.
Set таблица = базаДанных.CreateTableDef (имя, атрибуты, источник, подключение)


Пишу:
Set MyTable = CurrentDb.CreateTableDef("temp", dbAttachedTable, "CLIENTS", "D:\temp\dat.mdb")

Ругается ошибкой 3001 - Invalud Argument. База - Access 97, mdb.

Кто-нибудь подскажет в чем проблема???
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462136
Ander Borisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точнее, пишу
Set MyTable = CurrentDb.CreateTableDef("temp", dbAttachedTable, "CLIENTS", ";DATABASE=D:\temp\dat.mdb") ... ругается
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462147
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй разделить на строки и лови в какой ошибка...
Типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Sub LinkTable
Dim db as DataBase, tdf as Tabledef
set db = currentdb
set tdf = db.createtable( "MyTable" )
tdf.connect =  ";database = c:\mybase.mdb" 
tdf.sourcetablename =  "mytable" 
db.tabledefs.append tdf
refreshdatabasewindow
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462165
Ander Borisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ругается на атрибут ...
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462171
Ander Borisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Для объекта TableDef свойство Attributes задает характеристики таблицы, представляемой данным объектом.  Значение данного свойства может быть выражено как сумма констант типа Long из следующего списка:

Константа	Описание
dbAttachExclusive	Указывает для баз данных, использующих ядро Microsoft Jet, что таблица является присоединенной таблицей и открыта в режиме монопольного доступа.  Эта константа может быть задана для добавленного объекта TableDef для локальной, но не для удаленной таблицы.
dbAttachSavePWD	Указывает для баз данных, использующих ядро Microsoft Jet, что код пользователя и пароль доступа к удаленной присоединенной таблице следует сохранить вместе со сведениями о присоединении.  Эта константа может быть задана для добавленного объекта TableDef для удаленной, но не для локальной таблицы.
dbSystemObject	Таблица является системной таблицей ядра Microsoft Jet.  Эта константа может быть задана для добавленного объекта TableDef.
dbHiddenObject	Таблица является скрытой таблицей ядра Microsoft Jet.  Эта константа может быть задана для добавленного объекта TableDef.
dbAttachedTable	Таблица является присоединенной таблицей из базы данных, не являющейся источником данных ODBC, например, из базы данных с ядром Microsoft Jet или базы данных Paradox (только чтение).
dbAttachedODBC	Таблица является присоединенной таблицей из базы данных ODBC, например, из базы данных Microsoft SQL Server (только чтение).
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462241
Ander Borisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нарыл похожую проблему в форуме по VB ...
Ссылка на проблему в Win98 SE (у меня как раз он). а в WIn2k все прокатывает ...

Может что-то с DAO?!?!?!
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462329
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
варианты

1
прилинкуй таблицу руками
затем просмотри в приведенном выще коде
установленные свойства
- увидишь где может скрываться ошибка

2
прилинкуй нужное количество таблиц сразу
в будущем только изменяй путь к таблицам
пример - поиск по форуму
ключевое слово prilinkovka
там есть пример
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462368
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
слушайте, немного в сторону, но меня просто что-то сомнения гложат вот на какую тему, вразумите меня:

есть у клиента в mdb прилинкованная таблица из другого mdb, который выступает в качестве сервера и находится в локалке на другом компе. Ну такая ст. файл-серверная технология.
Вопрос: когда я запускаю на клиенте запрос (типа SELECT) по ПРИЛИНкованной таблице, он случаем не тащит через локалку всю таблицу на клиента и выполняет его потом уже у себя???
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462380
ешкин кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в
tdf.connect = ";database = c:\mybase.mdb"
убери пробелы
tdf.connect = ";database=c:\mybase.mdb"
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462434
Ander Borisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Alexus12
прилинкуй нужное количество таблиц сразу
У меня около 50 удаленных точек, причем часть из них в других городах!!! Всем прилинковать руками невозможно ...
Нужно из одной MDB в другую перекинуть кучу данных. Хочется сделать линк и перебросить INSERT-ом, а не Recordset делать ...
прилинкуй таблицу руками
затем просмотри в приведенном выще коде
установленные свойства
- увидишь где может скрываться ошибка

Уже делал ... Attributes = 1073741824 ... dbAttachedTable - тоже

To ешкин кот
Я же говорю, что пишу:
Set MyTable = CurrentDb.CreateTableDef("temp", dbAttachedTable, "CLIENTS", ";DATABASE=D:\temp\dat.mdb") - как видишь, все без пробелов ... Когда по-отдельности, то ругается на атрибут!!!
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462471
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тебе говорят
не делай каждый раз через CREATETABLEDEF
делай ПЕРЕЛИНКОВКУ существующей (руками линкованной) таблы
через ту функцию, которую тебе рекомендуют
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462479
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>не тащит через локалку всю таблицу
Слухами земля полнилась:
если в есть запросе WHERE по полям, на которых используются индексы
(не СТОЯТ, а именно ИСПОЛЬЗУТСЯ Jet при выполнении запроса)
- то качается индекс, отбирается, затем согласно отобранному качаются записи

если индекса нет / не используется - вся табла качается по сети
(некому исполнить запрос в удаленной базе - это же не сервер)

Пусть поправят старшие, если что не то говорю
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462481
e_basil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SergeySV

именно так, и потащит все полные таблицы, которые будут в join-ах
вся работа с таблицами ведется на клиенте, он грузит всю таблицу, и здесь ее проверяет на условие запроса
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462487
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 e_basil
именно так, и потащит все полные таблицы, которые будут в join-ах
вся работа с таблицами ведется на клиенте, он грузит всю таблицу, и здесь ее проверяет на условие запроса
Садись, двойка
Прочитаешь про индексы - приходи на пересдачу.
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462496
Ander Borisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне не нужен постоянный линк!!!

Нужно сделать линкованную таблицу, перекинуть пару десятков тысяч записей INSERT-ом и удалить прилинкованную таблицу!

Если текущая база - то можно сделать через DoCMD.TransferDatabase. А если обе базы другие файлы ... :-(((

Альтернатива - рекордсет, конечно ... но зачем, если есть INSERT!!!
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462507
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
>не тащит через локалку всю таблицу
Слухами земля полнилась:
если в есть запросе WHERE по полям, на которых используются индексы
(не СТОЯТ, а именно ИСПОЛЬЗУТСЯ Jet при выполнении запроса)
- то качается индекс, отбирается, затем согласно отобранному качаются записи

если индекса нет / не используется - вся табла качается по сети
(некому исполнить запрос в удаленной базе - это же не сервер)

Пусть поправят старшие, если что не то говорю


Так, а если в WHERE мне попадается ОДНО поле, которое не проиндексировано, то тащится:
- весь этот столбец
- полные кранты, тащится вся таблица
(p.s. при том что запрос у меня - SELECT *)
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462519
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отдельный столбец (не индексированный) точно не тянется
так что или индексируй, или кранты
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462525
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ander Borisov
Тебе для одного запроса даже линкованная таблица не нужна
Код: plaintext
1.
2.
INSERT INTO таблица IN 'c:\db1.mdb'
Values (трампампам)
Select траппампам итд
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462564
ешкин кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дык я о том же
в строке
db.tabledefs.append tdf
ругается на атрибут, если пробелы вокруг ( = ) есть,
не ругается, если их нет (Аксесс97)


при полном задании в строке, не может подцепить с dbAttachedTable
но цепляет с dbAttachExclusive, правда поменять Атрибуты после создания (ни до ни после присоединения) уже не удается (ругань на атрибут).
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462591
Ander Borisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Лох Позорный
Блин, во я дурак ... точно!!!! можно же файл указать в запросе ...
Правда Values и Select вместе конечно же не покатят :-)))

newDB.EXECUTE ("INSERT INTO Таблица IN 'Файл'
SELECT * FROM Таблица1") - это если все поля.

а без файла я обычно делаю так:
INSERT INTO Таблица (поле1, поле 2 ...)
SELECT (поле1, поле2 ...) FROM Таблица1... WHERE ... -

С IN-ом у меня что-то не получилось, но возможно я просто ошибся где-то с порядком полей.

Спасибо! Все супер ...

посыпаю голову пеплом .... себе :-)))
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462620
Ander Borisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 ешкин кот

Точно ... с эксклюзивом сработало ... Сразу бы написал :-)))
...
Рейтинг: 0 / 0
CreateTableDef - прилинкованная таблица
    #32462634
ешкин кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел. (и для подключения строкой)
чтобы после подключения скинуть атрибут из эксклюзива
прокатит
MyTable.Attributes = 0

т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
Set MyTable = CurrentDb.CreateTableDef( "temp" , dbAttachExclusive,  "DOCS" ,  ";DATABASE=c:\mybase.mdb" )
On Error Resume Next
MyTable.Attributes =  0  'dbAttachedTable
db.TableDefs.Append MyTable
Select Case MyTable.Attributes
Case dbAttachExclusive
    Debug.Print  "dbAttachExclusive" 
Case dbAttachedTable
    Debug.Print  "dbAttachedTable" 
Case Else
    Debug.Print MyTable.Attributes
End Select
RefreshDatabaseWindow
End Sub

в отладке:
Код: plaintext
1.
LinkTable
dbAttachedTable


О как.
Занятный баг. :0)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / CreateTableDef - прилинкованная таблица
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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