powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Cxgrid не отображает связанный DataSet
19 сообщений из 19, страница 1 из 1
Cxgrid не отображает связанный DataSet
    #39505578
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть обертка:
Код: 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
Cxgrid не отображает связанный DataSet
    #39505582
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet> свойство указано в DesignTime ?

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


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


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

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

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

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

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

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


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

Код: pascal
1.
procedure TfrmDM.Select(const ASQLText: string; const AParamArray: array of TParamQuery; var OutQuery: TMyQuery);
...
Рейтинг: 0 / 0
Cxgrid не отображает связанный DataSet
    #39505652
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У девовского грида, в отличие от стандартного, для генерации и отображения колонок по запросу надо вручную вызвать метод типа CreateAllColumns (точного названия не помню).
...
Рейтинг: 0 / 0
Cxgrid не отображает связанный DataSet
    #39505653
Фотография 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;



Но как предпочтительнее будет все же?
Код: 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
Cxgrid не отображает связанный DataSet
    #39505662
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

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

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

Ты точно ничего не перепутал?
...
Рейтинг: 0 / 0
Cxgrid не отображает связанный DataSet
    #39505671
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B,
Ты сейчас о чем вообще ?
...
Рейтинг: 0 / 0
Cxgrid не отображает связанный DataSet
    #39505798
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[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
Cxgrid не отображает связанный DataSet
    #39505805
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще рекомендую прочитать книгу Тейксейры и Пачеко, у них очень много полезных примеров, с комментариями и объяснениями. На худой конец поизучать Demos, там хоть и без объяснений, но примеры полезные.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Cxgrid не отображает связанный DataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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