Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.09;
Скачать: CL | DM;

Вниз

Список таблиц базы данных....   Найти похожие ветки 

 
RustiK ©   (2004-02-10 13:58) [0]

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


 
Плохиш   (2004-02-10 14:13) [1]

Чё опять 8-O

Уже по нескольку раз на день вопросы повторяются :-(


 
RustiK ©   (2004-02-10 14:14) [2]

Вот втом то и дело что я видел только один такой вопрос и то не для MSSQL. Во!!!


 
Плохиш   (2004-02-10 14:21) [3]

>RustiK © (10.02.04 14:14) [2]
?
> Вот втом то и дело что я видел только один такой вопрос

А ответ про GetTableNames там видел

> и то не для MSSQL

А думать ешё не научился?


 
ZrenBy ©   (2004-02-10 14:23) [4]

http://delphimaster.net/view/3-1075469139/


 
RustiK ©   (2004-02-10 14:33) [5]

Я использую AdoQuery


 
Artem03   (2004-02-10 14:58) [6]

SELECT name,id FROM sysobjects WHERE status>=0 AND type="U" ORDER BY name - tables
SELECT name,id FROM sysobjects WHERE status>=0 AND type="P" ORDER BY name - Stored Procedures
SELECT name,id FROM sysobjects WHERE status>=0 AND type="FN" ORDER BY name - User Defined Function


 
RustiK ©   (2004-02-10 15:10) [7]

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


 
RustiK ©   (2004-02-11 07:59) [8]

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


 
RustiK ©   (2004-02-11 08:02) [9]

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


 
sniknik ©   (2004-02-11 08:26) [10]

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

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


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

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


 
RustiK ©   (2004-02-11 09:26) [12]

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


 
sniknik ©   (2004-02-11 10:46) [13]

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

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

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


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

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

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

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


 
RustiK ©   (2004-02-11 12:02) [15]


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

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


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

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

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


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

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

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

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

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

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


 
RustiK ©   (2004-02-11 12:59) [18]

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


 
sniknik ©   (2004-02-11 13:15) [19]

а трехзвенка,
можно метод сделать на сервере а с клиента его юзать
вроде этого
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
только с путем тем который найдеш (тоже в разных местах может лежать)

вроде все.


 
sniknik ©   (2004-02-11 13:18) [20]

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


 
RustiK ©   (2004-02-11 13:52) [21]


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

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


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

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


 
sniknik ©   (2004-02-11 14:01) [22]

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

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


 
sniknik ©   (2004-02-11 14:07) [23]

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

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;


 
RustiK ©   (2004-02-11 14:18) [24]


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

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

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


 
sniknik ©   (2004-02-11 14:39) [25]

> Решил на 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:45) [26]

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

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


 
RustiK ©   (2004-02-11 14:48) [27]


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.03.09;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.017 c
14-25926
Капитан Флинт
2004-02-14 13:27
2004.03.09
Action bands в Delphi 8


3-25695
garry79
2004-02-07 12:18
2004.03.09
Как после вызова ХП обратиться к набору данных?


14-25907
Grugan
2004-02-10 19:32
2004.03.09
WinInet функции


6-25837
Typoi_Beginer
2003-12-28 18:29
2004.03.09
Передача данных на удалённый комп.


1-25762
Zyb
2004-02-27 08:46
2004.03.09
Антивирусник