Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.02.2009, 20:19
Helybr Helybr вне форума
Прохожий
 
Регистрация: 20.01.2009
Сообщения: 18
Репутация: 10
По умолчанию Связи

Мне надо связать несколько таблиц, я думаю сделать сами таблицы и связи в Акцессе. Но вот я хотел поинтересоваться, когда я буду использовать эти таблицы в Дельфи , связи останутся?
Ответить с цитированием
  #2  
Старый 12.02.2009, 21:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да, все будет работать, т.к. связи управляются Jet'ом (ядром СУБД, на котором "живет" Access).
Ответить с цитированием
  #3  
Старый 11.05.2009, 14:21
Sabotender Sabotender вне форума
Прохожий
 
Регистрация: 04.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

А у меня чёт не пашет... связи не переносит...8(
Ответить с цитированием
  #4  
Старый 11.05.2009, 14:39
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Поподробнее, что именно неработает.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 13.05.2009, 21:57
Sabotender Sabotender вне форума
Прохожий
 
Регистрация: 04.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

Ну всмысле не работают связи, таблицы связаны в Access, а когда через ADO к Delphi подсаединяешь...связи проподают просто отдельные таблицы, связывайте заново...
Ответить с цитированием
  #6  
Старый 13.05.2009, 22:00
Sabotender Sabotender вне форума
Прохожий
 
Регистрация: 04.12.2008
Сообщения: 10
Репутация: 10
По умолчанию


вот эти связи не переносятся, а в Делфи связать что-то не выходит MasterSource то один...было б два ^_^
Помогите, кто знает, а то искал-искал не нашёл ^_^

Последний раз редактировалось Sabotender, 13.05.2009 в 22:04.
Ответить с цитированием
  #7  
Старый 17.05.2009, 17:37
Sabotender Sabotender вне форума
Прохожий
 
Регистрация: 04.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

Люди подскажите пожалйста как с помощью Query связать две таблицы, пожалуйста!!! ^_^
Ответить с цитированием
  #8  
Старый 17.05.2009, 17:48
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Как-то поконкретнее пожалуйста. Вот простейший пример на основе пары таблиц из вашей схемы:
Код HTML:
select * from адрес inner join Дом on Nomer_doma=nomer where колич_квартир > 200
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 18.05.2009, 00:32
Sabotender Sabotender вне форума
Прохожий
 
Регистрация: 04.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

Пасиба за пример ^_^ Мне конкретно надо связать эти все таблицы в Delphi, чёт не получается через MasterSource не получается связать, начал пробовать через ADOQuery, но SQL не знаю, да и вообще не знаю, где это писать в ADODataSet в CommandText пишу, просто пробовал (мож не там ^__^). написал по примеру мне пишет:

"Не поддерживается выражение объединения"

Ну это когда я ADODataSet ставлю Active:=true; ^_^
подскажите ^_^
Ответить с цитированием
  #10  
Старый 18.05.2009, 01:40
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ах вот что вам надо.
Вот пример организации такой связи по вашей схеме:
Код:
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.
DFM-файл
Код:
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  
Старый 26.05.2009, 18:22
Sabotender Sabotender вне форума
Прохожий
 
Регистрация: 04.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

пасиба, но я б хотел увидеть как связать к примеру вот эти три таблицы, чтобы одна была подчинёной к двум другим...как связать, всё уже перепробовал, ничего не получается 8*(

Ответить с цитированием
  #12  
Старый 26.05.2009, 21:22
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Здесь у вас конечно уже все не так просто. Поскольку можно сделать на один датасет только одну связь Мастер-Детаил, то тут уже делается с помощью еще одного датасета на туже таблицу. Т.е. последовательность такая.
Tarif(TMecyac) <- Потребление1(Mecyac)
Потребление2(Nom_Kvar)->Дом(Nom_Kvar)
Т.к. Потребление1 и Потребление2 ссылаются на одну и туже таблицу в одном и том-же подключении, то вроде получается то что вы хотите.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #13  
Старый 27.05.2009, 00:28
Sabotender Sabotender вне форума
Прохожий
 
Регистрация: 04.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

Пасиба, я так попробовал, как бы работает, но не так как мне надо ^_^ в DBGrid помещается ж лишь только одна из таблиц либо потребление1 либо потребление2, я думал прокатит, делал-делал ^_^ а потом сделал вычисляемые поля, в потребление и получается либо она будет считать через тариф показывать либо через дом, а через две сразу никак...эх...пасиба за советы, буду думать, пойду завтра книжки читать ^_^
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter