Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML в DBGrid, Как??? 
V
    Опции темы
Rodman
Дата 9.11.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Дароф.

Web - services VS Client...

У меня есть функция которая формирует XML файл... его я записываю в TStream или в TFileStream (как лучше пока не знаю)....

как мне из TStream или TFileStream вывести данные в DBGrid??? smile  smile  smile  smile 


Спасибо...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Akella
Дата 10.11.2006, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



попробуй подключить MemoryDataSet к гриду, а уж в MemoryDataSet загружай данные.
MemoryDataSet - это условное название, я имел ввиду виртуальную таблицу - таблицу в памяти, есть такие компоненты, например в библиотечке EhLib, JEDDI, DevExpress.
PM MAIL   Вверх
Rodman
Дата 10.11.2006, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Akella, у меня есть компоненты JEDI - это то что ты написал??? я посмотрю в них... но мало понял, что надо сделать... smile 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Akella
Дата 10.11.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



кидаешь на форму MemoryDataset, создаёшь в нём нужные поля, подключаешь к гриду. Во время выполнения приложения загружаешь данные в MemoryDataset из файла XML. Если есть функция, которая формирует XML, то должна быть функция чтения из файла.  Я имею ввиду, что ты же знаешь формат и содержимое создаваемого тобой файла.

Это сообщение отредактировал(а) Akella - 10.11.2006, 13:37
PM MAIL   Вверх
Rodman
Дата 10.11.2006, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



ну файла у меня типа
Код

<TagGlobe>
   <Items>
         <IDProduct>00001</IDProduct>
         <GroupProduct>Игрушки</GroupProduct>  
         <DescProduct>Для взрослых</DescProduct>  
         <OrgProduct>Красный Буйвол</OrgProduct>  
   </Items>
   <Items>...  </Items>
   <Items>...  </Items>
   <Items>...  </Items>
...
</TagGlobe>


Разпарсить файл я могу с помощью - TXMLDocument...

пример на Delphi можешь показать как в TDBGrid вывести??? 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Akella
Дата 10.11.2006, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



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

MemoryData.active := true;

...
MemoryData.append;
MemoryData.FieldByName('Field1').AsString := присваиваешь данные из парсинга
MemoryData.FieldByName('Field2').AsString := присваиваешь данные из парсинга
MemoryData.FieldByName('Field3').AsString := присваиваешь данные из парсинга
MemoryData.post;

PM MAIL   Вверх
Rodman
Дата 10.11.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Я правильно понял...

Код

MemoryData.append;// открываю на добавление
...// заношу
MemoryData.post; // добавляю..
 smile 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Rodman
Дата 11.11.2006, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



 smile 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Akella
Дата 13.11.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



правильно
PM MAIL   Вверх
Rodman
Дата 13.11.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Akella,  smile  smile  smile 
Последнее...

Вот написал как было написано
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, JvMemoryDataset, Grids, DBGrids, JvExDBGrids,
  JvDBGrid, XMLIntf, XMLDoc, XMLDom, MSXMLDom, JvComponentBase, HTTPApp,
  DBWeb;

type
  TForm1 = class(TForm)
    JvDBGrid1: TJvDBGrid;
    JvMemoryData2: TJvMemoryData;
    Button1: TButton;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    DataSetTableProducer1: TDataSetTableProducer;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
    NameNode: IXMLNode;
    XMLDocument: TXMLDocument;
begin
  XMLDocument := TXMLDocument.Create(Self);
  try
    XMLDocument.XML.LoadFromFile('File.xml');
    NullStrictConvert := False;
    NullAsStringValue := 'Empty';
    XMLDocument.Active:=True;
    NameNode:=XMLDocument.DocumentElement;
    JvMemoryData2.Active:=True;
    JvMemoryData2.EmptyTable;
    for i := 0 to NameNode.ChildNodes.Count - 1 do
    begin
      JvMemoryData2.Append;
      //пробую так
      JvMemoryData2.FieldValues['F1']:=NameNode.ChildNodes.Nodes[i].ChildValues['IDProduct'];      //JvMemoryData2.FieldByName('F1').Value:=NameNode.ChildNodes.Nodes[i].ChildValues['IDProduct'];
      // и так
      JvMemoryData2.FieldByName('F2').Value:=NameNode.ChildNodes.Nodes[i].ChildValues['GroupProduct'];
      JvMemoryData2.FieldByName('F3').Value:=NameNode.ChildNodes.Nodes[i].ChildValues['DescProduct'];
      JvMemoryData2.FieldByName('F4').Value:=NameNode.ChildNodes.Nodes[i].ChildValues['OrgProduct'];
      JvMemoryData2.Post;
    end
  finally
    XMLDocument.Free;
  end;
  DataSource1.DataSet:=JvMemoryData2;
  JvMemoryData2.Open;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  JvMemoryData2.Free;
end;

end.


XML нормально парситься, но в JvMemoryData2 ничего не добавляется... (только пустые поля)...

Что не так??? smile  smile 

Горю...

Это сообщение отредактировал(а) Rodman - 13.11.2006, 11:55

Присоединённый файл ( Кол-во скачиваний: 29 )
Присоединённый файл  XMLvsDBGrid.rar 6,10 Kb
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Rodman
Дата 13.11.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



 smile 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Akella
Дата 13.11.2006, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Rodman, ну ты даёшь, а ты поля создал? Куда пихаешь данные? откуда Delphi знать какие тебе поля нужны?
Щёлкни по JvMemoryData дважды и создаый нужные поля.


читал?  smile 
Цитата(Akella @  10.11.2006,  19:06 Найти цитируемый пост)
В MemoryData создай поля в дизайнере, назначь им тип и всё такое.


PM MAIL   Вверх
Rodman
Дата 13.11.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Я создал поля F1, F2, F3, F4...

исходник видел???

Добавлено @ 15:23 
Только не дважды клацал на него, а в поле TFieldDef создал их...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Akella
Дата 13.11.2006, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



внимание, прочти ещё раз:

Цитата(Akella @  13.11.2006,  15:12 Найти цитируемый пост)
Щёлкни по JvMemoryData дважды и создаый нужные поля.


Добавлено @ 15:28 
перед этим удали всё из FieldDefs
PM MAIL   Вверх
Rodman
Дата 13.11.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Код

object Form1: TForm1
  Left = 396
  Top = 203
  Width = 362
  Height = 304
  BorderIcons = [biSystemMenu]
  Caption = 'XML to DBGrid (with the help of JEDI components)'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnClose = FormClose
  PixelsPerInch = 96
  TextHeight = 13
  object JvDBGrid1: TJvDBGrid
    Left = 0
    Top = 0
    Width = 354
    Height = 120
    Align = alTop
    DataSource = DataSource1
    TabOrder = 0
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'MS Sans Serif'
    TitleFont.Style = []
    SelectColumnsDialogStrings.Caption = 'Select columns'
    SelectColumnsDialogStrings.RealNamesOption = '[With the real field name]'
    SelectColumnsDialogStrings.OK = '&OK'
    SelectColumnsDialogStrings.NoSelectionWarning = 'At least one column must be visible!'
    EditControls = <>
    RowsHeight = 17
    TitleRowHeight = 17
  end
  object Button1: TButton
    Left = 136
    Top = 128
    Width = 75
    Height = 25
    Caption = 'Load'
    TabOrder = 1
    OnClick = Button1Click
  end
  object DBGrid1: TDBGrid
    Left = 0
    Top = 155
    Width = 354
    Height = 120
    Align = alBottom
    DataSource = DataSource1
    TabOrder = 2
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'MS Sans Serif'
    TitleFont.Style = []
  end
  object JvMemoryData2: TJvMemoryData
    FieldDefs = <
      item
        Name = 'F1'
        DataType = ftWideString
      end
      item
        Name = 'F2'
        DataType = ftWideString
      end
      item
        Name = 'F3'
        DataType = ftWideString
      end
      item
        Name = 'F4'
        DataType = ftWideString
      end>
    Left = 88
    Top = 128
  end
  object DataSource1: TDataSource
    Left = 240
    Top = 128
  end
  object DataSetTableProducer1: TDataSetTableProducer
    Left = 312
    Top = 128
  end
end


вот настройки.... поля в FieldDefs... это не то что надо???

Попробую по твоему.. еще раз....
Цитата(Akella @  13.11.2006,  15:12 Найти цитируемый пост)
Щёлкни по JvMemoryData дважды и создаый нужные поля.


PM MAIL WWW Skype GTalk YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0989 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.