Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.146.237] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Цитата Создать mdw для текущей базы и использовать ее. Bas, как ее создавать понятно (свойство установить в true), но вот не могу понять где она создается. и что потом придется каждый раз создавать системную таблицу после того как я из архива извлеку основную базу данных? системная таблица привязана к определенной базе данных. поэтому нужно при распаковке базы из архива делать заново и системный файл. |
Сообщ.
#17
,
|
|
|
Как используя ADO можно получить информацию из системной таблицы базы MS Access
Подключаясь к базе данных MS Access используя ADO-технологию может потребоваться информация, которая хранится в системной таблице MSysObject вашей базы данных. Например, Вам нужно знать есть ли какая-то таблица (table), запрос (query) или представление (view) в вашей базе. В базе MS Access пишем запрос SELECT Count(*) FROM msysobjects WHERE msysobjects.Type=5 AND msysobjects.Name = MyView Если представление MyView существует, то запрос вернет одно поле, в котором будет будет стоять единица, в противном случае получим поле c нулем. Для того, чтобы заставить работать наш запрос в среде Delphi нужно настроить строку подключения, например, вот так ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+ 'Data Source='+pathDB+';'+ 'Jet OLEDB:Create System Database=true;'+ 'Jet OLEDB:System database='+pathSysDB; В этой строке: pathDB – путь к вашей базе, pathSysDB – путь к файлу рабочей группы. Предварительно можно создать свой файл рабочей группы (можно использовать и системный файл, который располагается по умолчанию C:\Documents and Settings\user\Application Data\Microsoft\Access). Чтобы создать файл рабочей группы нужно запустить MS Access->Сервис->Защита->Администратор рабочих групп->Создать… После подключения файла рабочей группы можно обращаться с запросами к системной таблице MSysObject непосредственно из среды Delphi. ------- Уважаемые господа Представляю на обсуждение решение поднятой мною проблемы. Уважаемые модераторы Достойно ли предложенное описание решения проблемы ФАКа? |
Сообщ.
#18
,
|
|
|
Через DNS
[ODBC] DRIVER=Microsoft Access Driver (*.mdb) UID=admin UserCommitSync=Yes Threads=3 SystemDB=C:\Program Files\Common Files\SYSTEM\SYSTEM.MDW SafeTransactions=0 ReadOnly=1 PageTimeout=5 MaxScanRows=8 MaxBufferSize=2048 FIL=MS Access Exclusive=0 DriverId=25 DefaultDir=D:\temp\Dom\S DBQ=D:\temp\Dom\S\db1.mdb В вступлении опиши ошибку и почему она возникает Цитата tomsksmile, 5.12.04, 18:11, 533506 При этом не забудьте раздать права.Чтобы создать файл рабочей группы Добавь рассшифровку значения Type, а также этот тип подключения являеться общим для Delphi,C++ Builder,VB - для всех кто использует ADO,ODBC - BDE не исключение. |
Сообщ.
#19
,
|
|
|
Q.Как получить информацию из системных таблиц MS Access?
Q.Как узнать существует таблица (запрос,представление) в базе MS Access? Приведем пример с использованием таблицы MSysObject базы MS Access: Подключаясь к базе данных MS Access используя какую-либо технологию (ADO, ODBC, BDE) может потребоваться информация, которая хранится в системной таблице MSysObject вашей базы данных. Например, Вам нужно знать есть ли какая-то таблица (table), запрос (query) или представление (view) в вашей базе. В базе MS Access пишем запрос SELECT Count(*) FROM msysobjects WHERE msysobjects.Type=5 AND msysobjects.Name = MyView Если представление MyView существует, то запрос вернет одно поле, в котором будет стоять единица, в противном случае получим поле c нулем. Если, соблюдая синтаксис языка SQL, написать запрос в среде программирования Delphi/BCB, то будет выдаваться сообщение о том, что «Записи не могут быть прочитаны, отсутствует разрешение на чтение данных для 'msysobjects'». Для того, чтобы получить разрешение на чтение данных из среды Delphi/BCB нужно настроить строку подключения (ADO-технология), например, вот так ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+ 'Data Source='+pathDB+';'+ 'Jet OLEDB:Create System Database=true;'+ 'Jet OLEDB:System database='+pathSysDB; В этой строке: pathDB – путь к вашей базе, pathSysDB – путь к файлу рабочей группы. По умолчанию будут использоваться системный файл (system.mdw), который располагается C:\Documents and Settings\user\Application Data\Microsoft\Access. Если на вашем компьютере несколько пользователей, будут возникать проблемы с правами использования данного файла. Чтобы создать свой файл рабочей группы нужно запустить MS Access->Сервис->Защита->Администратор рабочих групп->Создать… и в стоке подключения указать путь pathSysDB к созданному системному файлу. После подключения файла рабочей группы можно обращаться с запросами к системной таблице MSysObject непосредственно из программирования Delphi/BCB. Приведем значения, которое может принимать Type: Type Пояснение 1 таблица 6 присоединенная таблица 5 запрос/представление 8 отношения,связи (Relationships) -32768 форма -32764 отчет -32766 макрос -32761 модуль |
Сообщ.
#20
,
|
|
|
имеет ли значение на какой операционке сделана системная таблица?
таблицу делал с помощью аксесс2002 на winXP (апгрейn с home до pro), при запуске программы на win2000 я не вижу, что системная таблица работает. |
Сообщ.
#21
,
|
|
|
Цитата tomsksmile,8.01.05, 08:06 @ имеет ли значение на какой операционке сделана системная таблица? На какой OC - значение не имеет. А значение имеет версия Access'а принцып такой "старшие" - понимают "младших" и пытаються "подтянуть" до себя, "младшие" не понимают "старших". Сообщения были разделены в тему "Получить доступ к системным таблицам" |