|
#1
|
|||
|
|||
Связи
Мне надо связать несколько таблиц, я думаю сделать сами таблицы и связи в Акцессе. Но вот я хотел поинтересоваться, когда я буду использовать эти таблицы в Дельфи , связи останутся?
|
#2
|
|||
|
|||
Да, все будет работать, т.к. связи управляются Jet'ом (ядром СУБД, на котором "живет" Access).
|
#3
|
|||
|
|||
А у меня чёт не пашет... связи не переносит...8(
|
#4
|
||||
|
||||
Поподробнее, что именно неработает.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
Ну всмысле не работают связи, таблицы связаны в Access, а когда через ADO к Delphi подсаединяешь...связи проподают просто отдельные таблицы, связывайте заново...
|
#6
|
|||
|
|||
вот эти связи не переносятся, а в Делфи связать что-то не выходит MasterSource то один...было б два ^_^ Помогите, кто знает, а то искал-искал не нашёл ^_^ Последний раз редактировалось Sabotender, 13.05.2009 в 22:04. |
#7
|
|||
|
|||
Люди подскажите пожалйста как с помощью Query связать две таблицы, пожалуйста!!! ^_^
|
#8
|
||||
|
||||
Как-то поконкретнее пожалуйста. Вот простейший пример на основе пары таблиц из вашей схемы:
Код HTML:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
|||
|
|||
Пасиба за пример ^_^ Мне конкретно надо связать эти все таблицы в Delphi, чёт не получается через MasterSource не получается связать, начал пробовать через ADOQuery, но SQL не знаю, да и вообще не знаю, где это писать в ADODataSet в CommandText пишу, просто пробовал (мож не там ^__^). написал по примеру мне пишет:
"Не поддерживается выражение объединения" Ну это когда я ADODataSet ставлю Active:=true; ^_^ подскажите ^_^ |
#10
|
||||
|
||||
Ах вот что вам надо.
Вот пример организации такой связи по вашей схеме: Код:
unit Unit24; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBClient, Grids, DBGrids; type TForm24 = class(TForm) Адрес: TClientDataSet; Хозяин_кв: TClientDataSet; Дом: TClientDataSet; Потребление: TClientDataSet; dsАдрес: TDataSource; dsХозяин_кв: TDataSource; dsДом: TDataSource; dsПотребление: TDataSource; АдресNomer_doma: TStringField; АдресUlica: TStringField; ДомNomer: TStringField; ДомUlica: TStringField; Хозяин_кв_квартиры: TStringField; Хозяин_квномер_паспорта: TStringField; Хозяин_квСерия_паспорта: TStringField; Дом_квартиры: TStringField; DBGrid1: TDBGrid; DBGrid2: TDBGrid; DBGrid3: TDBGrid; ПотреблениеNomer: TStringField; Потребление_квартиры: TStringField; АдресКолич_квартир: TIntegerField; АдресОбщая_площадь: TFloatField; Хозяин_квФИО: TStringField; ДомПлощадь_квартиры: TFloatField; ДомКоличество_комнат: TIntegerField; ДомКолич_жильцов: TIntegerField; ПотреблениеМесяц_оплаты: TStringField; ПотреблениеГор_вода: TFloatField; ПотреблениеХол_вода: TFloatField; ПотреблениеЭлектр: TFloatField; DBGrid4: TDBGrid; private { Private declarations } public { Public declarations } end; var Form24: TForm24; implementation {$R *.dfm} end. Код:
object Form24: TForm24 Left = 0 Top = 0 Caption = 'Form24' ClientHeight = 329 ClientWidth = 569 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 = 8 Top = 8 Width = 377 Height = 73 DataSource = dsАдрес TabOrder = 0 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] end object DBGrid2: TDBGrid Left = 8 Top = 87 Width = 553 Height = 74 DataSource = dsДом TabOrder = 1 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] end object DBGrid3: TDBGrid Left = 8 Top = 167 Width = 553 Height = 65 DataSource = dsХозяин_кв TabOrder = 2 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] end object DBGrid4: TDBGrid Left = 8 Top = 240 Width = 481 Height = 73 DataSource = dsПотребление TabOrder = 3 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] end object Адрес: TClientDataSet Active = True Aggregates = <> Params = <> Left = 400 Top = 16 Data = { 530000009619E0BD01000000180000000200000000000300000053000A4E6F6D 65725F646F6D610100490000000100055749445448020002000A0005556C6963 6101004900000001000557494454480200020032000000} object АдресNomer_doma: TStringField DisplayWidth = 13 FieldName = 'Nomer_doma' Size = 10 end object АдресUlica: TStringField DisplayWidth = 22 FieldName = 'Ulica' Size = 50 end object АдресКолич_квартир: TIntegerField DisplayWidth = 16 FieldKind = fkCalculated FieldName = #1050#1086#1083#1080#1095'_'#1082#1074#1072#1088#1090#1080#1088 Calculated = True end object АдресОбщая_площадь: TFloatField DisplayWidth = 18 FieldKind = fkCalculated FieldName = #1054#1073#1097#1072#1103'_'#1087#1083#1086#1097#1072#1076#1100 Calculated = True end end object Хозяин_кв: TClientDataSet Active = True Aggregates = <> IndexFieldNames = #8470'_'#1082#1074#1072#1088#1090#1080#1088#1099 MasterFields = #8470'_'#1082#1074#1072#1088#1090#1080#1088#1099 MasterSource = dsДом PacketRecords = 0 Params = <> Left = 440 Top = 16 Data = { A30000009619E0BD010000001800000003000000000003000000A30014E28496 5FD0BAD0B2D0B0D180D182D0B8D180D18B010049000000010005574944544802 0002000A001BD09DD0BED0BCD0B5D1805FD0BFD0B0D181D0BFD0BED180D182D0 B00100490000000100055749445448020002000A001BD0A1D0B5D180D0B8D18F 5FD0BFD0B0D181D0BFD0BED180D182D0B0010049000000010005574944544802 0002000A000000} object Хозяин_кв_квартиры: TStringField DisplayWidth = 14 FieldName = #8470'_'#1082#1074#1072#1088#1090#1080#1088#1099 Size = 10 end object Хозяин_квномер_паспорта: TStringField DisplayWidth = 17 FieldName = #1053#1086#1084#1077#1088'_'#1087#1072#1089#1087#1086#1088#1090#1072 Size = 10 end object Хозяин_квСерия_паспорта: TStringField DisplayWidth = 17 FieldName = #1057#1077#1088#1080#1103'_'#1087#1072#1089#1087#1086#1088#1090#1072 Size = 10 end object Хозяин_квФИО: TStringField DisplayWidth = 55 FieldKind = fkCalculated FieldName = #1060#1048#1054 Size = 100 Calculated = True end end object Дом: TClientDataSet Active = True Aggregates = <> IndexFieldNames = 'Nomer;Ulica' MasterFields = 'Nomer_doma;Ulica' MasterSource = dsАдрес PacketRecords = 0 Params = <> Left = 480 Top = 16 Data = { 770000009619E0BD0100000018000000030000000000030000007700054E6F6D 6572010049000000010005574944544802000200140005556C69636101004900 0000010005574944544802000200320014E284965FD0BAD0B2D0B0D180D182D0 B8D180D18B0100490000000100055749445448020002000A000000} object ДомNomer: TStringField DisplayWidth = 16 FieldName = 'Nomer' end object ДомUlica: TStringField DisplayWidth = 24 FieldName = 'Ulica' Size = 50 end object Дом_квартиры: TStringField DisplayWidth = 13 FieldName = #8470'_'#1082#1074#1072#1088#1090#1080#1088#1099 Size = 10 end object ДомПлощадь_квартиры: TFloatField DisplayWidth = 11 FieldKind = fkCalculated FieldName = #1055#1083#1086#1097#1072#1076#1100'_'#1082#1074#1072#1088#1090#1080#1088#1099 Calculated = True end object ДомКоличество_комнат: TIntegerField DisplayWidth = 21 FieldKind = fkCalculated FieldName = #1050#1086#1083#1080#1095#1077#1089#1090#1074#1086'_'#1082#1086#1084#1085#1072#1090 Calculated = True end object ДомКолич_жильцов: TIntegerField DisplayWidth = 16 FieldKind = fkCalculated FieldName = #1050#1086#1083#1080#1095'_'#1078#1080#1083#1100#1094#1086#1074 Calculated = True end end object Потребление: TClientDataSet Active = True Aggregates = <> IndexFieldNames = #8470'_'#1082#1074#1072#1088#1090#1080#1088#1099 MasterFields = #8470'_'#1082#1074#1072#1088#1090#1080#1088#1099 MasterSource = dsДом PacketRecords = 0 Params = <> Left = 520 Top = 16 Data = { CE0000009619E0BD010000001800000006000000000003000000CE00054E6F6D 6572010049000000010005574944544802000200140014E284965FD0BAD0B2D0 B0D180D182D0B8D180D18B0100490000000100055749445448020002000A0017 D09CD0B5D181D18FD1865FD0BED0BFD0BBD0B0D182D18B010049000000010005 57494454480200020014000FD093D0BED1805FD0B2D0BED0B4D0B00800040000 0000000FD0A5D0BED0BB5FD0B2D0BED0B4D0B008000400000000000CD0ADD0BB D0B5D0BAD182D18008000400000000000000} object ПотреблениеNomer: TStringField DisplayWidth = 16 FieldName = 'Nomer' end object Потребление_квартиры: TStringField DisplayWidth = 17 FieldName = #8470'_'#1082#1074#1072#1088#1090#1080#1088#1099 Size = 10 end object ПотреблениеМесяц_оплаты: TStringField DisplayWidth = 18 FieldName = #1052#1077#1089#1103#1094'_'#1086#1087#1083#1072#1090#1099 end object ПотреблениеГор_вода: TFloatField DisplayWidth = 12 FieldName = #1043#1086#1088'_'#1074#1086#1076#1072 end object ПотреблениеХол_вода: TFloatField DisplayWidth = 12 FieldName = #1061#1086#1083'_'#1074#1086#1076#1072 end object ПотреблениеЭлектр: TFloatField DisplayWidth = 12 FieldName = #1069#1083#1077#1082#1090#1088 end end object dsАдрес: TDataSource DataSet = Адрес Left = 400 Top = 48 end object dsХозяин_кв: TDataSource DataSet = Хозяин_кв Left = 440 Top = 48 end object dsДом: TDataSource DataSet = Дом Left = 480 Top = 48 end object dsПотребление: TDataSource DataSet = Потребление Left = 520 Top = 48 end end Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#11
|
|||
|
|||
пасиба, но я б хотел увидеть как связать к примеру вот эти три таблицы, чтобы одна была подчинёной к двум другим...как связать, всё уже перепробовал, ничего не получается 8*(
|
#12
|
||||
|
||||
Здесь у вас конечно уже все не так просто. Поскольку можно сделать на один датасет только одну связь Мастер-Детаил, то тут уже делается с помощью еще одного датасета на туже таблицу. Т.е. последовательность такая.
Tarif(TMecyac) <- Потребление1(Mecyac) Потребление2(Nom_Kvar)->Дом(Nom_Kvar) Т.к. Потребление1 и Потребление2 ссылаются на одну и туже таблицу в одном и том-же подключении, то вроде получается то что вы хотите. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#13
|
|||
|
|||
Пасиба, я так попробовал, как бы работает, но не так как мне надо ^_^ в DBGrid помещается ж лишь только одна из таблиц либо потребление1 либо потребление2, я думал прокатит, делал-делал ^_^ а потом сделал вычисляемые поля, в потребление и получается либо она будет считать через тариф показывать либо через дом, а через две сразу никак...эх...пасиба за советы, буду думать, пойду завтра книжки читать ^_^
|