Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2020, 14:16   #1
Volodini
Новичок
Джуниор
 
Регистрация: 04.12.2020
Сообщений: 2
Злость Два DBGrid, несколько DataSource

Здравствуйте, при написании кода возникла следующая проблема. Начну с самого начала.
Мне нужно было написать БД с несколькими таблицами. Для этого в качестве выпадающего списка для выбора я использовал первый DBGrid1, а затем с помощью события DBGrid1CellClick и команды N1:=TStringGrid(DBGrid1).Row считывал подходящую строку. Потом с помощью функции case я должен был изменять значение DataSource во втором DBGrid2, но при выборе 2 строки таблица не отобразилась.
Внимание вопрос. Почему при замене DataSource DBGrid не отобразил новую таблицу?


Вот код
unit Unit3;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.Grids,
Vcl.DBGrids, Vcl.StdCtrls;

type
TfSag = class(TForm)
Edit1: TEdit;
DBGrid1: TDBGrid;
DSSag: TDataSource;
qSag: TADOQuery;
DBGrid2: TDBGrid;
qKTLS: TADOQuery;
qKTLP: TADOQuery;
qKTLF: TADOQuery;
DSKTLS: TDataSource;
DSKTLP: TDataSource;
DSKTLF: TDataSource;
DBGrid3: TDBGrid;
DSSmrt: TDataSource;
qSmrt: TADOQuery;
qFtbr: TADOQuery;
qPhone: TADOQuery;
qRadio: TADOQuery;
qPln: TADOQuery;
qBook: TADOQuery;
qPhoto: TADOQuery;
DSFtbr: TDataSource;
DSPhone: TDataSource;
DSRadio: TDataSource;
DSPln: TDataSource;
DSBook: TDataSource;
DSPhoto: TDataSource;
DSVideo: TDataSource;
qVideo: TADOQuery;
procedure DBGrid1CellClick(Column: TColumn);
procedure DBGrid2CellClick(Column: TColumn);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fSag: TfSag; N1, N2:integer; tx:string;

implementation

{$R *.dfm}

uses Unit1;

procedure TfSag.DBGrid1CellClick(Column: TColumn);
begin
N1:=TStringGrid(DBGrid1).Row;
case N1 of
1: begin
DBGrid2.DataSource:=DSKTLS;
dbgrid2.Columns[0].Title.caption:='Смартфоны и гаджеты';
DBGrid2.Columns[0].Title.Font.Size:=12
end;
2: begin
DBGrid2.DataSource:=DSKTLP;
dbgrid2.Columns[0].Title.caption:='Планшеты';
DBGrid2.Columns[0].Title.Font.Size:=12
end;
3: begin
DBGrid2.DataSource:=DSKTLF;
dbgrid2.Columns[0].Title.caption:='Фототехника';
DBGrid2.Columns[0].Title.Font.Size:=12
end;
end;
end;

procedure TfSag.DBGrid2CellClick(Column: TColumn);
begin
{N2:=TStringGrid(DBGrid2).Row;
if (N1=1) and (N2=1) then begin
DBGrid3.DataSource:=DSSmrt;
dbgrid3.Columns[0].Title.caption:='Смартфоны';
DBGrid3.Columns[0].Title.Font.Size:=12;
end; }

end;

procedure TfSag.FormCreate(Sender: TObject);
begin
{DBGrid2.DataSource:=DSKTLS;
dbgrid2.Columns[0].Title.caption:='Смартфоны и гаджеты';
DBGrid2.Columns[0].Title.Font.Size:=12;
DBGrid3.DataSource:=DSSmrt;
dbgrid3.Columns[0].Title.caption:='Смартфоны';
DBGrid3.Columns[0].Title.Font.Size:=12;
DBGrid3.Columns[0].Width:=170;
DBGrid3.Columns[1].Width:=100; }
end;

end.
Volodini вне форума Ответить с цитированием
Старый 04.12.2020, 15:02   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

например
1. разные поля НД.
https://programmersforum.ru/showthread.php?t=333903
2. пустые НД.
3. закрытые НД.
4. отсутствует НД в datasource.

Код:
Цитата:
DBGrid2.DataSource:=DSKTLP;
можно конечно, но обычно делают
Код:
DBGrid2.DataSource.dataset:=....;
Цитата:
Код:
N1:=TStringGrid(DBGrid1).Row;
case N1 of
1: begin
DBGrid2.DataSource:=DSKTLS;
dbgrid2.Columns[0].Title.caption:='Смартфоны и гаджеты';
а если каким-либо образом запись со планшетами(или еще чем-либо но никак не смартфонами) окажется первой.
все пойдет не так как надо.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 04.12.2020, 15:13   #3
Volodini
Новичок
Джуниор
 
Регистрация: 04.12.2020
Сообщений: 2
По умолчанию

evg_m, Что вы понимаете под НД?
Volodini вне форума Ответить с цитированием
Старый 04.12.2020, 15:20   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

НД = (T)DataSet
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
dbgrid и datasource в dll hemn6vyr БД в Delphi 1 30.03.2013 15:59
Добавление новых записей через DBGrid, DataSource и ZTable Leximus БД в Delphi 3 25.10.2011 08:04
подключение одной DBGrid к разным DataSource Rin БД в Delphi 3 12.01.2011 12:15
Как можно изменить у DBGrid Datasource в процессе работы приложения ?? Kamelli_13 БД в Delphi 6 01.05.2009 17:14
компонента 1-datasource 2-query 3-dbnavigator 4-dbgrid - как заставить работать? hinku БД в Delphi 5 07.10.2008 17:33