Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Cxgrid не отображает связанный DataSet / 19 сообщений из 19, страница 1 из 1
15.08.2017, 13:26:44
    #39505578
wsnet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
Есть обертка:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
type
  TfrmDM = class(TDataModule)
...

function TfrmDM.Select(const ASQLText: string; const AParamArray: array of TParamQuery): TMyQuery;
var
  AQuery: TMyQuery;
begin
  AQuery := TMyQuery.Create(nil);
  try
    AQuery.Close;
    InitQuery(AQuery, ASQLText, AParamArray);
    AQuery.Open;
  except
    FreeAndNil(AQuery);
    raise;
  end;
  Result := AQuery;
end;
...



Есть форма:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 object MyQuery1: TMyQuery
    Connection = frmDM.con
    SQL.Strings = (
      'SELECT * FROM C_QUESTION')
...
 object DataSource1: TDataSource
    DataSet = MyQuery1
..
  object cxgrdbtblvwMainGrid1DBTableView1: TcxGridDBTableView
      DataController.DataSource = DataSource1



Хочу отобразить запрос в гриде:
Код: pascal
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.
unit UfrmTest;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, MemDS, DBAccess, MyAccess, cxGraphics, cxControls, cxLookAndFeels,
  cxLookAndFeelPainters, cxStyles, dxSkinsCore, dxSkinsDefaultPainters,
  dxSkinscxPCPainter, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit,
  cxDBData, cxGridLevel, cxClasses, cxGridCustomView, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxGrid, StdCtrls;

type
  TForm1 = class(TForm)
    MyQuery1: TMyQuery;
    cxgrdbtblvwMainGrid1DBTableView1: TcxGridDBTableView;
    cxgrdlvlMainGrid1Level1: TcxGridLevel;
    cxgrdMain1: TcxGrid;
    MyQuery1QUESTION_ID: TIntegerField;
    MyQuery1QUESTIONNAME: TStringField;
    MyQuery1QUESTIONCODE: TStringField;
    Button1: TButton;
    DataSource1: TDataSource;
    cxgrdbclmnMainGrid1DBTableView1QUESTION_ID: TcxGridDBColumn;
    cxgrdbclmnMainGrid1DBTableView1QUESTIONNAME: TcxGridDBColumn;
    cxgrdbclmnMainGrid1DBTableView1QUESTIONCODE: TcxGridDBColumn;
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses
  UfrmDM;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(MyQuery1.RecordCount));
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  MyQuery1 := frmDM.Select(MyQuery1.SQL.Text, []);
  DataSource1.DataSet := MyQuery1;
end;
end.



Вопрос почему без выделенной строчки грид не отображает данные, ведь данное свойстве указано в DesignTime ?
...
Рейтинг: 0 / 0
15.08.2017, 13:31:40
    #39505582
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
wsnet> свойство указано в DesignTime ?

Может, оно где-то сбрасывается ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.08.2017, 13:52:42
    #39505597
AX-Class
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
TfrmDM = class(TDataModule)
должен создаваться раньше формы.
...
Рейтинг: 0 / 0
15.08.2017, 14:08:31
    #39505607
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
Как оно может отображаться в дизайнере, если запрос создаётся динамически в коде ?
...
Рейтинг: 0 / 0
15.08.2017, 14:11:15
    #39505611
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
У вас в голове чехарда.
Код: pascal
1.
MyQuery1 := frmDM.Select(MyQuery1.SQL.Text, []);


Компоненту на форме MyQuery1 вы присваиваете результат функции, в которой создаёте новый компонент. В итоге первый компонент теряется.
...
Рейтинг: 0 / 0
15.08.2017, 14:16:37
    #39505618
wsnet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
DimaBrУ вас в голове чехарда.
Код: pascal
1.
MyQuery1 := frmDM.Select(MyQuery1.SQL.Text, []);


Компоненту на форме MyQuery1 вы присваиваете результат функции, в которой создаёте новый компонент. В итоге первый компонент теряется.

Ничего не понял, так я не создаю новые компонент на форме, я копирую новый компонент в существующий.
...
Рейтинг: 0 / 0
15.08.2017, 14:19:20
    #39505621
AX-Class
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
Этюд.

MyQuery1 := frmDM.Select(MyQuery1.SQL.Text, []);

Какой компонент потечет?
1. Старый
2. Новый
3. Оба
4. Никакой

Решить в уме.
...
Рейтинг: 0 / 0
15.08.2017, 14:19:54
    #39505623
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
Нет, вы не копируете в существующий
...
Рейтинг: 0 / 0
15.08.2017, 14:21:16
    #39505625
wsnet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
schi,

То есть я создаю новый?
...
Рейтинг: 0 / 0
15.08.2017, 14:22:11
    #39505628
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
wsnetНичего не понял, так я не создаю новые компонент на форме, я копирую новый компонент в существующий.
Копирование в существующий - это
Код: pascal
1.
MyQuery1.Assign(SourceQuery);


Хотя я не уверен на 100% что там реализован Assign.
...
Рейтинг: 0 / 0
15.08.2017, 14:26:43
    #39505634
wsnet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
А как скопировать тогда ?
...
Рейтинг: 0 / 0
15.08.2017, 14:34:57
    #39505651
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
wsnetА как скопировать тогда ?

Код: pascal
1.
procedure TfrmDM.Select(const ASQLText: string; const AParamArray: array of TParamQuery; var OutQuery: TMyQuery);
...
Рейтинг: 0 / 0
15.08.2017, 14:36:20
    #39505652
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
У девовского грида, в отличие от стандартного, для генерации и отображения колонок по запросу надо вручную вызвать метод типа CreateAllColumns (точного названия не помню).
...
Рейтинг: 0 / 0
15.08.2017, 14:37:14
    #39505653
wsnet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
Не надо уже сделал:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TfrmDM.Select(var AQuery: TMyQuery; const ASQLText: string; const AParamArray: array of TParamQuery);
begin
  try
    AQuery.Close;
    InitQuery(AQuery, ASQLText, AParamArray);
    AQuery.Open;
  except
    FreeAndNil(AQuery);
    raise;
  end;
end;



Но как предпочтительнее будет все же?
Код: pascal
1.
2.
3.
  function Select(const ASQLText: string; const AParamArray: array of TParamQuery): TMyQuery; overload;
  procedure Select(var AQuery: TMyQuery; const ASQLText: string; const AParamArray: array of TParamQuery); overload;
   
...
Рейтинг: 0 / 0
15.08.2017, 14:51:24
    #39505662
Valery_B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
wsnet,

1. В гриде нет колонок
2. В Датасете нет данных.

Сделай лабу, и посмотри на результат.
...
Рейтинг: 0 / 0
15.08.2017, 14:52:22
    #39505665
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
Valery_B
1. В гриде нет колонок
2. В Датасете нет данных.

Ты точно ничего не перепутал?
...
Рейтинг: 0 / 0
15.08.2017, 14:57:32
    #39505671
wsnet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
Valery_B,
Ты сейчас о чем вообще ?
...
Рейтинг: 0 / 0
15.08.2017, 16:35:52
    #39505798
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
[quot wsnet]Не надо уже сделал:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TfrmDM.Select(var AQuery: TMyQuery; const ASQLText: string; const AParamArray: array of TParamQuery);
begin
  try
    AQuery.Close;
    InitQuery(AQuery, ASQLText, AParamArray);
    AQuery.Open;
  except
    FreeAndNil(AQuery);
    raise;
  end;
end;



Неправильно сделал, нужно убрать var, и убрать FreeAndNil при исключениях.
...
Рейтинг: 0 / 0
15.08.2017, 16:37:29
    #39505805
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cxgrid не отображает связанный DataSet
А вообще рекомендую прочитать книгу Тейксейры и Пачеко, у них очень много полезных примеров, с комментариями и объяснениями. На худой конец поизучать Demos, там хоть и без объяснений, но примеры полезные.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Cxgrid не отображает связанный DataSet / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]