Главная страница
    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.036 c
1-1084320585
Dweller
2004-05-12 04:09
2004.05.30
Как подключить Matlab DLL к Delphi


7-1082544968
vvv
2004-04-21 14:56
2004.05.30
Com -порт


3-1083932811
Timon
2004-05-07 16:26
2004.05.30
Помогите, делаю ADOQuery1.Refresh; выдает ошибку "Insufficient "


4-1082140701
juiceman
2004-04-16 22:38
2004.05.30
событие wm_KeyDown


1-1084895972
Beglec
2004-05-18 19:59
2004.05.30
Как объекту в Delhi присвоить цвет HTML. Например: color #B7C3D7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский