Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 29

БД: организовать связь полей двух таблиц

07.12.2012, 11:49. Показов 1159. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
У меня вот такая проблема
. Есть две формы на одной я как бы просматриваю БД Oracle всего три DBGrid(для отображения таблиц) и по двойному щелчку на конечное поле (определенную строку) я вывожу на второе поле все значения таблицы и там есть три поля которые надо соединить с другой таблицей и что бы вместо значения из одной таблицы выводил значения из другой.

Первая форма

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, OracleData, Oracle, StdCtrls, Buttons;
 
type
  TForm1 = class(TForm)
    OracleSession1: TOracleSession;
    OracleLogon1: TOracleLogon;
    N124DataSet: TOracleDataSet;
    n124Grid: TDBGrid;
    N124Source: TDataSource;
    GrIsdDataSet: TOracleDataSet;
    VidProdDataSet: TOracleDataSet;
    gRiSDGrid: TDBGrid;
    vIDpRODGrid: TDBGrid;
    GrIsdSource: TDataSource;
    VidProdSource: TDataSource;
    procedure FormCreate(Sender: TObject);
    procedure vIDpRODGridCellClick(Column: TColumn);
    procedure gRiSDGridCellClick(Column: TColumn);
    procedure n124GridDblClick(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
uses Unit2;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  OracleLogon1.Execute;
  VidProdDataSet.Active:=True;
//  GrIsdDataSet.Active:=True;
//  N124DataSet.Active:=True;
end;
 
 
 
procedure TForm1.vIDpRODGridCellClick(Column: TColumn);
var
  Id:string;
begin with  GrIsdDataSet do begin
  Id:= VidProdDataSet.FieldByName('VID_PROD_ID').AsString;
  Active:=False;SQL.Clear;
    SQL.Add('SELECT * FROM GR_ISD WHERE VID_PROD_ID = '+ Id);
  Active:=True;SQL.Clear;
  N124DataSet.Active:=false;sql.Clear;
end end;
 
procedure TForm1.gRiSDGridCellClick(Column: TColumn);
var
id:string;
begin with  N124DataSet do begin
  id:= GrIsdDataSet.FieldByName('KGRI_ID').AsString;
  Active:=False;SQL.Clear;
    SQL.Add('SELECT * FROM N124A WHERE KGRI_ID = '+ id);
  Active:=True;SQL.Clear;
 
end end;
procedure TForm1.n124GridDblClick(Sender: TObject);
var id:string;
  FormView:TForm2;
begin
  FormView:=TForm2.Create(Nil);
  FormView.Id:=N124DataSet.FieldByName('ki_id').AsInteger;
  FormView.id:=N124DataSet.FieldByName('ki_id').AsInteger;
  FormView.ShowModal;
  FormView.Free;
  end;
end.
вторая форма

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
unit Unit2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, OracleData, Buttons, Grids, DBGrids;
 
type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    OracleDataSet1: TOracleDataSet;
    Edit4: TEdit;
    Label4: TLabel;
    Edit5: TEdit;
    Label5: TLabel;
    Edit6: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Edit7: TEdit;
    Edit8: TEdit;
    Label8: TLabel;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    BitBtn1: TBitBtn;
    OKVEDDataSet2: TOracleDataSet;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
 
    procedure Edit9Click(Sender: TObject);
 
//    procedure Edit1Change(Sender: TObject);
//    procedure Edit1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Id, VAR1:integer;
  end;
 
 
implementation
 
{$R *.dfm}
 
uses Unit1;
 
procedure TForm2.Button1Click(Sender: TObject);
begin
  Close;
end;
 
procedure TForm2.FormShow(Sender: TObject);
begin
  OracleDataSet1.SetVariable('ID',Id);
  OracleDataSet1.Active:=True;OracleDataSet1.First;
 
  Edit1.Text:=OracleDataSet1.FieldByName('NI').AsString;
  Edit2.Text:=OracleDataSet1.FieldByName('KI').AsString;
  Edit3.Text:=OracleDataSet1.FieldByName('NI').AsString;
  Edit4.Text:=OracleDataSet1.FieldByName('MARKA').AsString;
  Edit5.Text:=OracleDataSet1.FieldByName('USER_DATA').AsString;
  Edit6.Text:=OracleDataSet1.FieldByName('OKP').AsString;
  Edit7.Text:=OracleDataSet1.FieldByName('GR_TOV_P_ID').AsString;
  Edit8.Text:=OracleDataSet1.FieldByName('KI_OSNOV').AsString;
 
 
  //OracleDataSet2.SetVariable('VAR1', VAR1);
  //OracleDataSet2.Active:=True; OracleDataSet2.First;
 
Edit9.Text:=OracleDataSet1.FieldByName('OKPD_ID').AsString;
Edit10.Text:=OracleDataSet1.FieldByName('OKPD_ID').AsString;
Edit11.Text:=OracleDataSet1.FieldByName('OKPD1_ID').AsString;
 
  //Edit9.Text:=Form1.N124DataSet.FieldByName('OKPD_ID').AsString;
  //Edit2.Text:=Form1.N124DataSet.FieldByName('marka').AsString;
 
end;
 
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
CLOSE
end;
 
 
 //Вот это надо исправить
 
    procedure TForm2.Edit9Click(Sender: TObject);
    var VAR1:string;
    begin with form1.N124DataSet do begin
    VAR1:=form1.N124DataSet.FieldByName('OKVED_ID').AsString;
    Active:=False;SQL.Clear;
    SQL.Add('SELECT NM FROM OKVED = '+VAR1);
    Active:=true;SQL.Clear; 
    OKVEDDataSet2.Active:=False;SQL.Clear;
 
end;
end;
 
END.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.12.2012, 11:49
Ответы с готовыми решениями:

Связь полей таблиц
Здравствуйте! Есть 2 таблицы в бд, нужно чтоб поле с 1 было связано с полем в 2, так чтоб в 1 выбирались данные с 2 и могли быть только с 2.

Отпределить связь таблиц и их полей
Отпределить связь таблиц и их полей

Связь двух полей
Как связать между собой два поля> (СПИСОК значений одного поля зависит от значения другого поля) ?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2012, 11:49
Помогаю со студенческими работами здесь

Проверка на уникальность двух полей из двух связанных таблиц
Есть поле id_1 в таблице name1, а также поле id_2 в таблице name2. Таблица name1 имеет отношение к таблице name2, как один ко многим. Как...

Как организовать связь двух SELECT-ов ?
У меня на странице имеется форма с двумя выпадающими списками. Мне надо в зависимости от выбора в первом SELECT-е изменить элементы во...

Связь двух таблиц
Есть две таблицы. В первой фиксируется приём и выдача оборудования на ремонт: В поле указывается "Приём" либо...

Связь двух таблиц
Доброго времени суток. Столкнулся с такой проблемой. Есть 2 таблицы: одна называется Склад, вторая Продукты. Связаны по полю ID_продукта....

Связь двух таблиц в БД
Добрый день, требуется ваша помощь. Заранее спасибо. Есть datagridview где я выбираю к примеру Продавца, дальше нажимаю на кнопку,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru