Клиент для БД без Bound Controls

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
NewOne
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 26.10.2003 (Вс) 18:52

Клиент для БД без Bound Controls

Сообщение NewOne » 28.10.2003 (Вт) 18:24

Здарова. Начал писать клиента для SQL Server 2k на VB 6. Начитался во всяких умных книжках, что лучше не использовать ADODC + Bound controls, а программировать всё самому ручками и для обновления данных на сервере использовать хранимые процедуры. Так и пытаюсь делать. Но чё-то местами какой-то маразм получается.
Например, такой вопрос. Получаю с помощью хранимой процедуры рекордсет (естественно, необновляемый), в цикле загоняю все его строчки в MS FlexGrid (ну, с одновременным форматированием Грида, так, как мне надо). При этом надо куда-то прятать поле с ID. Я его засовываю в свойство RowData для каждой строки (есть такое у ФлексГрида). Последнюю колонку Грида оставляю пустой, ставлю ей ширину = 0, и использую её для занесения флажка о факте редактирования ячеек строки.
Для редактирования Грида подставляю на место ячейки текстбокс, потом его содержимое заношу в ячейку (ну нету у меня VideoSoft FlexGrid’а). При этом ставлю в последней колонке «1» для этой строки.
Когда доходит дело до сохранения данных в БД, пишу cn.BeginTran, пробегаю в цикле по строкам Грида, смотрю в последнюю колонку, если там «1», запускаю хранимую процедуру с UPDATE’ом, которой передаю нужные параметры из этой строчки Грида (в том числе и ID из RowData).
Сам вижу, что это какой-то дурдом. Может, элементы типа Grid вообще не используют в несвязанном режиме? Или используют, но как-то по уму? Кто работал с несвязанными элементами управления – посоветуйте чего-нибудь, плиз! :?
P.S. Извините за длинную мессагу!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.10.2003 (Ср) 13:19

Я тоже предпочитаю все делать вручную. И твою задачу можно было бы сделать примерно так:
1. Получить рекордсет.
2. Открыть форму с гридом.
3. Начать транзакцию.
4. При изменении какой-либо строки в гриде сразу делать обновление данных в БД.
5. При закрытии формы выполнить завершение транзакции и закрыть рекордсет.
6. При нажатии на отмену (или тому подобное) транзакцию не завершать, а отменять.

В этом случае не потребуется флаг для регистрации изменения строки.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 78

    TopList