Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактирование DataSet собранного из разных таблиц, Каков механизм работы UpdateSQL? 
:(
    Опции темы
Ace Wentura
Дата 15.7.2005, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 19.2.2004
Где: Санкт-Петербург

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



Подскажите пожалуйста, какой принцип работы с UpdateSQL в FIBDataSet?

У меня связка: wwDBGrid - DataSource - FIBDataSet. Собираю DataSet из нескольких таблиц (запрос генерирую программно). Хочу сделать изменение данных (только Update), но не могу поять как он (Update) работает.

Спасибо
PM MAIL   Вверх
kobra
Дата 15.7.2005, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



в такои ситуации запрос на изменение данных придется саставлять самому.
PM MAIL   Вверх
Ace Wentura
Дата 15.7.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 19.2.2004
Где: Санкт-Петербург

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



Это не проблема. Проблема в том, что я не совсем понимаю, какие именно параметры ему задавать и какие события отлавливать. (если это вообще нужно)

Сейчас не получается даже изменить данные в гриде. Почему-то возвращаются старые значения. Я грешу на отсутсвие UpdateSQL, но пока не уточню, что это такое - исправить не получится...
PM MAIL   Вверх
kobra
Дата 16.7.2005, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



Цитата(Ace @ 15.7.2005, 17:01)
Я грешу на отсутсвие UpdateSQL
и правилно.
и вообше, сделаи отделную формы для вставки/редактирования/удаления.

PM MAIL   Вверх
Ace Wentura
Дата 18.7.2005, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 19.2.2004
Где: Санкт-Петербург

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



Я бы рад сделать так, но в силу некоторых обстоятельств это не совсем удобно.

Приведу пример:
Видели когда-нибудь Access? Надо думать, что видели. Так вот там нет отдельных форм для редактирования. А почему? Потому что при работе с большим количеством данных не совсем удобно делать лишение нажатия для открытия специальной формы на редактирование.

Хотя.... Подумаю.
Но вопрос остаётся в силе. Может у кого-нибудь есть ссылка на статью по этой теме или что-то в этом роде?
PM MAIL   Вверх
Akella
Дата 18.7.2005, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Если не хочешь создавать отделую форму для редактирования/добавления, то обрабатывай события сетки.
Пользователь нажал Enter - делай запись в базу, и обновляй.
PM MAIL   Вверх
Vet
Дата 18.7.2005, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

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



У меня та же проблема, только с MS SQL Server :((
PM MAIL   Вверх
Ace Wentura
Дата 18.7.2005, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 19.2.2004
Где: Санкт-Петербург

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



Есть большое подозрение, что я не смогу отловить все события. Была надежда, что существует некое событие: окончание изменения. Тогда вопросы были бы решены автоматически. Такое есть?

И ещё, как можно заставить грид меняться буз UpdateSQL запроса? А то я пытаюсь изменять значение в гриде, но почти моментально оно возвращается в прежнее состояние.
PM MAIL   Вверх
Akella
Дата 18.7.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Ace @ 18.7.2005, 16:39)
А то я пытаюсь изменять значение в гриде,

об этом не раз говорилось, что компоненты для БД не содержат в себе ничего, они только рисуют содержимое таблицы.
Добавлено @ 16:49
обрабатывай событие OnKeyDown сетки
что-то типа
Код

  if key = vk_return then begin
//процедура изменения
    ADOStoredProc.Parameters.ParamByName('KolVo').Value := ...
    ADOStoredProc.ExecProc;
    ADODataSet1.refresh;
  end;

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

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



Цитата
Есть большое подозрение, что я не смогу отловить все события

А в FIBDataSet нет событий типа как у ADOQuery: OnWillChangeField, OnWillChangeRecord? Необязательно же ловить события Grid'a
PM MAIL   Вверх
Ace Wentura
Дата 21.7.2005, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 19.2.2004
Где: Санкт-Петербург

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



Цитата(Vet @ 18.7.2005, 19:13)
Цитата
Есть большое подозрение, что я не смогу отловить все события

А в FIBDataSet нет событий типа как у ADOQuery: OnWillChangeField, OnWillChangeRecord? Необязательно же ловить события Grid'a

Точно таких событий нет. Может есть другие, подобные. Есть например событие OnFieldChange.

Мне всё равно пришлось делать через дополнительную форму с простыми датасетами.

С событиями сетки - тут мне предлагали в реале отлавливать OnKeyUp и OnMouseUp. Тогда я буду знать, какое конретно в данный момент выделено поле и забивать соответсвующий Update-запрос. Может потом как-нибудь сделаю именно так.

Спасибо всем.
PM MAIL   Вверх
Vet
Дата 21.7.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

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



Цитата
Мне всё равно пришлось делать через дополнительную форму с простыми датасетами

Мне тоже пришлось так делать, т.к. никто не смог дать ответа, как делать все это через грид smile
Странно, почему - из-за 1-ой строки (поля) открывать дополнительную форму...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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