|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Связь таблиц через Master Source
Как сделать связь таблиц по одинаковому полю? У меня две таблицы имеют одно и тоже поле ID. Таблица №1 с полями: ID, ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО - это основная, а таблица №2 с полями: ID, ID_Predmet, ДВОЕК, ТРОЕК, ЧЕТВЕРОК, ПЯТЕРОК - это подчиненная. Как их правильно свзяать по этому ID? Делал на примере таблиц CUSTOMER и ORDERS из папки примеров Delphi, но у меня не получается. Последовательность действий примерно такая:
1. В той таблице, которую надо подключить к основной нужно через свойство MasterSource указать DataSource основной таблицы. 2. Открыть поле MasterFields и выбрать одинаковые названия из полей Detail Fields и Master Fields и установить связь. В примере из Delphi там все ништяк устанавливается, а у меня не получается . Одинаковые названия полей у меня появляется только тогда, когда я в дочерней таблице на против поля ID ставлю *. Но после этого у меня не добавляются данные в дочернюю таблицу. Как правильно сделать? Кто нибудь знает? |
#2
|
||||
|
||||
У вас таблицы не имеют общих полей. Добавьте в таблицу №2 поле ID_Human, где ID_Human = ID из таблицы №1
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
А чем ID плох? В Таблице №2 ID это и подразумевается ссылка на ID в Таблице №1. В моем случае это должно быть ID->ID. А вы имеете ввиду сделать ID_Human->ID?
|
#4
|
||||
|
||||
Плох тем, что таблица №2 должна иметь свой уникальный ключ, которым по логике является ID, и таковым никак не может быть ID из таблицы №1 т.к. у вас предполагается отношение один ко многим.
Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
Цитата:
А поле, например, ID_Human, сделать тип N? |
#6
|
||||
|
||||
Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#7
|
||||
|
||||
можете помочь мне с моими таблицами? Можете для меня сделать исходник такой связи? Плиз. Скрины таблиц выложил я.
|
#8
|
||||
|
||||
Парадоксом не пользуюсь, сделал на том что было под рукой, а именно Акцесс.
Код:
unit Unit19; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DB, ADODB; type TForm19 = class(TForm) ADOConnection1: TADOConnection; ADOTable1: TADOTable; ADOTable2: TADOTable; DataSource1: TDataSource; DataSource2: TDataSource; DBGrid1: TDBGrid; DBGrid2: TDBGrid; private { Private declarations } public { Public declarations } end; var Form19: TForm19; implementation {$R *.dfm} end. object Form19: TForm19 Left = 0 Top = 0 Caption = 'Form19' ClientHeight = 302 ClientWidth = 635 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object DBGrid1: TDBGrid Left = 24 Top = 48 Width = 553 Height = 120 DataSource = DataSource1 TabOrder = 0 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] end object DBGrid2: TDBGrid Left = 24 Top = 174 Width = 553 Height = 120 DataSource = DataSource2 TabOrder = 1 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] end object ADOConnection1: TADOConnection Connected = True ConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\'#1061#1086#1079#1103#1080#1085'\Doc' + 'uments\Example.mdb;Persist Security Info=False' LoginPrompt = False Mode = cmShareDenyNone Provider = 'Microsoft.Jet.OLEDB.4.0' Left = 24 Top = 8 end object ADOTable1: TADOTable Active = True Connection = ADOConnection1 CursorType = ctStatic TableName = 'Table_Infa' Left = 72 Top = 8 end object ADOTable2: TADOTable Active = True Connection = ADOConnection1 CursorType = ctStatic IndexFieldNames = 'HumanID' MasterFields = 'ID' MasterSource = DataSource1 TableName = 'Table_marks' Left = 144 Top = 8 end object DataSource1: TDataSource DataSet = ADOTable1 Left = 104 Top = 8 end object DataSource2: TDataSource DataSet = ADOTable2 Left = 176 Top = 8 end end Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
||||
|
||||
Кстати, таблица Оценки по структуре несколько неверна.
Должно быть где-то так: ID,PredmetID,HumanID,Date,Value Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |