![]() |
|
|
#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, я думал прокатит, делал-делал ^_^ а потом сделал вычисляемые поля, в потребление и получается либо она будет считать через тариф показывать либо через дом, а через две сразу никак...эх...пасиба за советы, буду думать, пойду завтра книжки читать ^_^
|