Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Список таблиц базы данных.... [D7, MSSQL]


Страницы:   1 2

RustiK ©   (2004-02-10 13:58:00) 

Привет, всем!!!
У меня вопрос какой SQL командой можно получить спиок всех таблиц в базе данных...
Заранее спасибо!!!


RustiK   (2004-02-11 14:48:00) [1]


> про Jet OLEDB:System database=system.mdb

вообще такого файла не существует. Хотя есть запись в реестре именно на него. Есть system.mdw...
Пробовал подключать результат тот же "Отказ в доступе на чтение записи(ей) для объекта MSysObjects".


RustiK   (2004-02-11 14:45:00) [2]

Listbox1 компонент на клиенте.
а вот ошибка: "Type not allowed in Variant Disphatch call".

А может я вам свои исходники по почте пришлю?


sniknik   (2004-02-11 14:39:00) [3]

> Решил на Admin пароль поставить. Поставил. Теперь при открытии базы в аксессе требует пароль
раз отлично от по умолчанию то см. > sniknik © (11.02.04 13:15) [19]
про Jet OLEDB:System database=system.mdb

> тут я коечто другое накодил но почему-то ошибка вылазиет может объясните?
> DCOMConnection1.AppServer.AdoConnection1.GetTableNames(ListBox1.Items, false);
;о) вряд ли работать будет, ListBox1.Items это чей компонент? клиента. а у клиента и сервера не общее пространство, сервер про него и не знает (про компонет).
а какую ошибку хоть выдает? мне такое в голову не приходило, да и счас лень тест делать.


RustiK   (2004-02-11 14:18:00) [4]


> начала проверить без трехзвенки прямым коннектом

Проверил и вот такая странность получается. Все открывает без проблем. Решил на Admin пароль поставить. Поставил.
Теперь при открытии базы в аксессе требует пароль, а Дельфи можно без пароля , а с паролем не пускает... Теперь даже не знаю как это понимать.

>>>>
тут я коечто другое накодил но почему-то ошибка вылазиет может объясните?
DCOMConnection1.AppServer.AdoConnection1.GetTableNames(ListBox1.Items, false);


sniknik   (2004-02-11 14:07:00) [5]

вот этот метод описанный в датамодуле на сервере

function TWCMetods.GetUpdeteNum(CashNo: Integer): Integer;
var StrFlag: string;
begin
result:= 0;
try
if (CashNo > 0) and (CashNo < 51) then begin
StrFlag:= StringOfChar("_", CashNo-1)+"1%";
ADOLocDSet.Close;
ADOLocDSet.CommandText:=
"SELECT Min(INCREM) AS INCREM FROM FlagOut WHERE CASH LIKE """+StrFlag+""" AND Flag IN (1,2)";
ADOLocDSet.Open;
if not ADOLocDSet.IsEmpty then
result:= ADOLocDSet.Fields[0].AsInteger;
ADOLocDSet.Close;
end;
except
end;
end;


sniknik   (2004-02-11 14:01:00) [6]

> Поставить то поставил галочки, но все равно не работает... :-((
> Уж даже не знаю что делать. Может я совсем тупой, но у меня ничего не получается...
для начала проверить без трехзвенки прямым коннектом.
можно просто в дельфях или готовой прогой
для проверок запросов могу выслать программу которой сам пользуюсь.

> Можно по подробней а то у меня компилир ошибшку на GetUpdeteNum дает
естественно это мойметод, опиши себе свой на сервере и вызывай с клиента, а уж что он там передавать будет в принципе неважно, это просто пример, доступ к методам сервера через DCOMConnection.AppServer.


RustiK   (2004-02-11 13:52:00) [7]


> достаточно галочки поставить на нужное у нужной таблицы.

Поставить то поставил галочки, но все равно не работает... :-((
Уж даже не знаю что делать. Может я совсем тупой, но у меня ничего не получается...


> procedure TRunUpdate.GetIncrem;
> begin
> ValIncrem:= AppServer.GetUpdeteNum(RecPam.CashNum);
> end;

Можно по подробней а то у меня компилир ошибшку на GetUpdeteNum дает


sniknik   (2004-02-11 13:18:00) [8]

> зайди в лткрой
читать
зайди и открой


sniknik   (2004-02-11 13:15:00) [9]

а трехзвенка,
можно метод сделать на сервере а с клиента его юзать
вроде этого
procedure TRunUpdate.GetIncrem;
begin
ValIncrem:= AppServer.GetUpdeteNum(RecPam.CashNum);
end;

AppServer это такая полезная штука, есть и в DCOMConnection и в SocketConnection;
как лутше передавать (разделенное запятыми там или по другому) можно придумать (в этом случае что передается из названий догадатся можно)

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

или для юзера
в реестре ветка
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines параметр SystemDB
там база используемая по умолчанию аксесом, найди ее и тоже подключай (брать имя из реестра нужно т.к. название может быть разным)
параметр в строке подключения
Jet OLEDB:System database=system.mdb
только с путем тем который найдеш (тоже в разных местах может лежать)

вроде все.


RustiK   (2004-02-11 12:59:00) [10]

Кстати забыл сказать что исходники программы написаны по статье ADO & COM или SQL-сервер своими руками, но немного изменены.


RustiK   (2004-02-11 12:55:00) [11]

Начнем с начала. Про MSSQL можешь забыть все что мне нужно было я уже выяснил.

У меня клиент серверное приложение.
На сервер есть ADOConnection, RemoteDtaModule, а в нем DatasetProvider и ADODataset. Все это между собой связывается.

На клиенте есть DCOMConnection, SocketConnection, ClientDataSet и DataSource1. Это все также между собой все связывается.

Я запускаю сервер на одной машине и подключаю через Jet OLE DB Provider базу MS ACCESS. Сажусь за другую и по сети зпускаю клиент и подсоединяюсь к серверу. Посылаю любой SQL запрос и он у меня проходит, то есть работает все нормально.
Но, есть одно ноникак не могу получить список таблиц ни SQL запросом ни каким-либо други способ.

Уффф. Аж запыхался...
Надеюсть теперь недопониманий не будет


sniknik   (2004-02-11 12:29:00) [12]

тут ктото когото не понимает. возможно я.
т.е. у тебя конект к MSSQL а получить надо в этом коннекте список таблиц из аксесс базы? или чегото подобное? обьясни на пальцах.

или всетаки конект к той базе из которой список таблиц нужен? тогла GetTableNames подойдет(должен) независимо от серверного/клиентского приложения. (во всяком случае я ограничивающего фактора придумать не могу)


RustiK   (2004-02-11 12:02:00) [13]


> про GetTableNames не думал? чем не подходит?

дЕЛО в том что я подключаю базу на сервер приложении.
А получить мне надо список таблиц и клиентского приложения которое подключается к сервер приложению.


Плохиш   (2004-02-11 10:51:00) [14]

>sniknik © (11.02.04 10:46) [13]

> про GetTableNames не думал? чем не подходит?

Это не их метод ;-)


sniknik   (2004-02-11 10:46:00) [15]

подключайся на Admin, и тогда системным таблицам дай разрешение открытия Admin-ом (в аксессе к примеру).

с другим(заданным) юзером нужно использовать системную базу с юзерами/групамми, понимаю если бы безопаснось требовала, а только ради получения списка таблиц... накладно.

про GetTableNames не думал? чем не подходит?


RustiK   (2004-02-11 09:26:00) [16]

Добавил Я юзера Admin1 дал ему пароль и абсолютно все права
а при создании Connection на Test connection говорит, что Faild
Что делать?


RustiK   (2004-02-11 09:22:00) [17]

А как это сделать если не секрет?


sniknik   (2004-02-11 08:26:00) [18]

GetTableNames универсально, подумай еще что лутше.

SELECT Name FROM MSysObjects WHERE Type=1 AND Flags=0
доступ к MSysObjects ограничен, нужно или таблице права дать или юзера использовать у кого разрешения есть на открытие.


RustiK   (2004-02-11 08:02:00) [19]

Я извиняюсь за настойчивость но не как дотумкаться не могу...
Как получить список таблиц sql запросом если используется база Microsoft Access?


RustiK   (2004-02-11 07:59:00) [20]

Огромное спасибо


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо