Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Insert, Update, Delete своими руками [D7, MSSQL]


Страницы:   1 2 3 4

mvg_first ©   (2004-01-19 16:40:00) 

Добрый день мастера и остальные.
Заранее прошу прощения за возможно-банальный вопрос, но я настолько давно не общался с сообществом Delphi-программистов что правильно впорос поставить сейчас и не смогу. Поэтому прошу отнестись с пониманием и "больно не пинать"
Суть задачи.
Я пробую разрабатывать приложение для работы с БД MSSQL2000/ Для этого использую компоненты TADQQuery. В качестве контролов использую стандартный DBGrid.
Но сложность заключается в том что я хочу все запросы на вставку, добавление и удаление записей из отображаемых таблиц - делать самостоятельно. Т.е. когда пользователь добавляет в Гриде запись и пробует ее записать - что бы каким-то образом получить доступ к изменившимся полям выполнить операцию по вставке и если не случилось ошибки дать пользователю возможность работать с программой дальше, а в случае ошибки отменить вставку строки (вомзожно с выводом сообщения).
Компонет реализующий очень похожую функциональность в Делфи есть это TUpdateSQL - но он работает только с BDE версиями компонентов доступа к данным. Я же хочу использовать технологию ADO.
Пожалуйста порекомендуйте литературу (интеренет ресурсы), компоненты, образцы исходного кода - проработав которые я смогу самостоятельно разобраться и решить поставленную задачу.

Если к кому нибудь из Вас можно обратится посредством ICQ буду очень признателен (мой ICQ 84705448)


Academic   (2004-01-19 17:34:00) [61]


> mvg_first © (19.01.04 17:30)

Согласен, немного не подумал.
Но объясни, зачем это все делать вручную???


mvg_first   (2004-01-19 17:30:00) [62]

А вызов Abort не отменит ли саму операцию инсерта как таковую? Почему то мне кажется как только я сделаю вызов Abort - на гриде добавляемая запись просто исчезнет потому как датасет ему скажет что операция отменена?


Academic   (2004-01-19 17:21:00) [63]

На BeforePost(Delete), отлавливаешь изменения, вручную делаешь Update/Insert/Delete, Далле Abort.


mvg_first   (2004-01-19 17:13:00) [64]

Пока нечего выкладывать поступило предложение обрабатывать событие BeforeInsert на ДатаСете который привязан к используюемому пользователем гриду.
Но я не уверен что это правильная идея.
Может быть что бы добавить ясности стоит описать порядок действий пользовтеля и тот порядок который я хотел бы выполнить (но незнаю как):
1. Программа выполняет запрос вида
SELECT * From TESTTABLE
и выводит результат запроса в грид. (тут никаких вопросов)
2. Далее пользователь нажинмает кнопку Инсерт, вводит данные в какие то поля и уходит с записи (т.е. должен по идее сработать метод пост)
3. В этом месте программа должна отловить попытку вставить запись, проанализировать какие поля пользователь изменил, выполнить Инсерт согласно установленных мной правил. При этом стандартный инсерт датасета выполнится недолжен
4. Программа возвращает в грид (или в датасет - тут мне непонятно) информацию которую нужно вернуть после выполнения инсерта.
Ну и т.д. и т.п.


KSergey   (2004-01-19 16:53:00) [65]

> [1] stone © (19.01.04 16:43)
> Стучись. Моя аська в анкете.

Может выложите здесь?
А то не сподручно будет, если еще и я, а может и еще кто в аську попремся ;)


Academic   (2004-01-19 16:48:00) [66]

Если хочешь все запросы на обновление делать самостоятельно,
то не используй на клиенте DBGrig, или создавай виртуальный DataSet, например TClientDataSet.


stone   (2004-01-19 16:43:00) [67]

Стучись. Моя аська в анкете.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо