Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Запись данных из DbGridEh в базу


Автор: KAMIKAZE 7.10.2011, 01:26
Доброго времени суток,

Хочу записать любой(с разными полями, структурой) xml в базу. 
Для этого использую связку: XMLTransform, ClientDataSet, DataSource ну и DbGridEh. Загружаю xml и файл трансформации в XMLTransform, далее из него отдаю XMLData в ClientDataSet и данные сразу же отображаются без проблем в DbGridEh.
XML может быть любой, т.е. файлы трансформации подкидываются в программу и они тоже разные, для отображения в DbGridEh это не проблема, но как эти данные записать в базу?   Скажем я просто хочу указать MySQL или MSSQL сервер, базу в нем и название таблицы в которую писать данные, а дальше уже автоматом создать поля в таблице на основе данных в DbGridEh и записать их. Вопрос как это сделать? Наставьте на пусть истинный. 

Автор: Данкинг 7.10.2011, 01:33
Цитата(KAMIKAZE @  7.10.2011,  02:26 Найти цитируемый пост)
Вопрос как это сделать?

Что именно сделать? Подключиться к серверу? Создать таблицу?

Автор: KAMIKAZE 7.10.2011, 01:33
Цитата(Данкинг @  7.10.2011,  01:33 Найти цитируемый пост)
Что именно сделать? Подключиться к серверу? Создать таблицу?

Цитата(KAMIKAZE @  7.10.2011,  01:26 Найти цитируемый пост)
Хочу записать любой(с разными полями, структурой) xml в базу. 

Без подключения как бы не записать. Вообще прочитали бы по внимательнее мой пост. Таблицу конечно же создавать самому, ведь xml у меня динамический, я не знаю какие там поля будут.

Автор: Данкинг 7.10.2011, 01:38
Цитата(KAMIKAZE @  7.10.2011,  02:33 Найти цитируемый пост)
Вообще прочитали бы по внимательнее мой пост.

Прочитал ещё три раза. Что конкретно требуется - всё равно не понял. 

Автор: KAMIKAZE 7.10.2011, 01:59
Значит вы мне ничем не поможете.

Автор: AndreyIQ 7.10.2011, 07:45
Цитата(KAMIKAZE @  7.10.2011,  01:26 Найти цитируемый пост)
Таблицу конечно же создавать самому, ведь xml у меня динамический, я не знаю какие там поля будут.

Тоже не очень понял в чем проблема.
Читаете динамический xml, определяете какие поля нужны и составляете динамически запрос на создание таблицы. 
ЗЫ В чем конкретно загвозка?

Автор: superVad 7.10.2011, 09:30
Цитата(KAMIKAZE @  7.10.2011,  00:26 Найти цитируемый пост)
Вопрос как это сделать?

Просто бери и делай. И спрашивай по ходу возникающие вопросы.

Автор: KAMIKAZE 7.10.2011, 10:42
Цитата(AndreyIQ @  7.10.2011,  07:45 Найти цитируемый пост)
составляете динамически запрос на создание таблицы. 

Ну вот на этом и остановился. Как можно записать из DbGridEh в определенную таблицу? Бежать по всем Row и формировать Insert into запрос? А может есть другие способы по гуманнее  smile? Я вот пытался SQLDataDriverEh подружить и получить с него InsertSQL, но не получилось

Автор: superVad 7.10.2011, 10:49
Цитата(KAMIKAZE @  7.10.2011,  09:42 Найти цитируемый пост)
Как можно записать из DbGridEh в определенную таблицу?

В гриде данных нету - данные в датасете к которому подключен грид.
Какую определенную таблицу? Я так понял, что таблицы то у тебя и нет еще в базе. Надо ее создать сначала.

Автор: Данкинг 7.10.2011, 10:57
Цитата(KAMIKAZE @  7.10.2011,  11:42 Найти цитируемый пост)
Бежать по всем Row и формировать Insert into запрос? 

Да, а как ещё. Только учти, что
Цитата(superVad @  7.10.2011,  11:49 Найти цитируемый пост)
В гриде данных нету - данные в датасете к которому подключен грид.


Автор: Vas 7.10.2011, 12:44
Бежи по своему ClientDataset, формируй SQL запросы и выполняй их. И будут твои данные в бд. Процедуру сделай универсальную, передай ей датасет и создай на основании него SQL запросы, ну и выполни их. Что сложного то?

Автор: KAMIKAZE 7.10.2011, 12:53
Спасибо понятно, но я просто думал может есть универсальное уже в клиентдатасете т.е. я указываю куда записать, напишу универсальную процедуру.

Автор: KAMIKAZE 7.10.2011, 13:29
...

Автор: KAMIKAZE 8.10.2011, 23:08
ююю

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)