Текущий архив: 2004.05.30;
Скачать: CL | DM;
ВнизКак программно "связать" таблици в 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;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.045 c