Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

Как программно "связать" таблици в Access - е   Найти похожие ветки 

 
Sectey ©   (2004-05-07 09:36) [0]

Добрый день. Я имею акцесовскую базу данных со связанными таблицами. Как можно из Delphi изменить связь этих таблиц?


 
Erik ©   (2004-05-07 09:52) [1]

Пиши нужный тебе SQL и невспоминай о ерунде. Связь в базе делается для создания констреинтов и индексов. Если конкчно ты не пишеш второй Access. :)


 
sniknik ©   (2004-05-07 10:59) [2]

изменить, сначала удаляеш индекс после создаеш, поиши в справке foreign key это как раз связь. (мог бы и сюда скопировать но больно там много, справки то)


 
Sectey ©   (2004-05-07 11:49) [3]

Erik © >
Это как в SQL запросе прилинковать таблицу из другой базы данных?


 
Sectey ©   (2004-05-07 11:56) [4]

sniknik ©>
У меня есть БД DB1 с таблицей Table1.
У меня есть БД DB2 с таблицей Table2 и Table1(связанная из DB1.Table1). Так вот мне необходими эту таблицу подключить программно из Delphi


 
Erik ©   (2004-05-07 12:25) [5]

Так бы и писал, а то непонятно вопрос сформулировен(телепаты в отпуске).
Вот SQL для получения списка прилинкованых таблиц:
Connect

SELECT Trim([MSysObjects].[Database]) AS [Database], MSysObjects.ForeignName AS FirstName, MSysObjects.Name AS LastName, IIf(InStr(1,[ForeignName],"#")=0,"",[ForeignName]) AS DBF
FROM MSysObjects
WHERE (((MSysObjects.Type)=6))
ORDER BY Trim([MSysObjects].[Database]) DESC;

Это по групам разделить(несколько таблиц из одной базы): ConnectGroup

SELECT Connect.Database, First(Connect.FirstName) AS FirstName, First(Connect.LastName) AS LastName, Count(Connect.FirstName) AS End
FROM Connect
GROUP BY Connect.Database, Connect.DBF
ORDER BY Count(Connect.FirstName) DESC;

Далее на VBA код(под MsAccess писал):
// FileTable![LastName] - это string имя таблицы
 ReturnValue = SysCmd(SYSCMD_INITMETER, "Connect table:", GroupTable![end])
 Set MyDB = CurrentDb()
 FileTable.FindFirst FindWhere
 On Error GoTo ShowErr
 Do Until FileTable.NoMatch "Ïîäêëþ÷èòü òàáëèöû.
   Set MyTable = MyDB.TableDefs(FileTable![LastName])
   If Mid$(MyTable.Connect, 1, 1) = ";" Then
     MyTable.Connect = ";DATABASE=" & DataBaseName
   Else
     FileName = FileTable![FirstName]
     Call CheckExternalFile(DataBaseName, FileName)
     Call FindDataBase(FileName, True, Reopen)
     MyTable.Connect = RemovRight(MyTable.Connect, ";") & ";DATABASE=" & RemovRight(FileName, "\")
   End If
   MyTable.RefreshLink
   FileTable.FindNext FindWhere
   TableCount = TableCount + 1
   ReturnValue = SysCmd(SYSCMD_UPDATEMETER, TableCount)
 Loop
 CheckBase = True
ExitCheckBase:
 ReturnValue = SysCmd(SYSCMD_REMOVEMETER)
 Exit Function

ShowErr:
 Const NONEXISTENT_TABLE = 3011
 Const NWIND_NOT_FOUND = 3024
 Const ACCESS_DENIED = 3051
 Const READ_ONLY_DATABASE = 3027
 Const NotFoundObject = 3265
 Const NotFoundIndex = 3256

Главное это RefreshLink!


 
sniknik ©   (2004-05-07 12:36) [6]

можно просто обращатся к таблице dbf из коннекта к mdb
SELECT * FROM DbfTable IN "D:\" "dBase IV;"


 
Sectey ©   (2004-05-07 13:39) [7]

>Erik ©

 Set MyTable = MyDB.TableDefs( ... )
 MyTable.Connect = ...

Как мне это в Delphi реализовать?



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

Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
14-1083616673
Sanek_metaller
2004-05-04 00:37
2004.05.30
Дизайн Сайта


14-1083528329
kombat
2004-05-03 00:05
2004.05.30
Кто чем занимается в IT?


14-1084540198
Denis_ada
2004-05-14 17:09
2004.05.30
Клиент-серверн. приложение по работе с папками и файлами


3-1083498123
Strori
2004-05-02 15:42
2004.05.30
Вывод каждой ячейки БД в соответствующие компоненты на форме


4-1081782949
Midaw
2004-04-12 19:15
2004.05.30
Как закрыть приложение, главное окно которого не отвечает ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский