sereg_io писал(а):Все, разобрался, спасибо за ответы. А вот если той же формой создавать новую запись, то если я сначала создам запись в datasete то ID ей присвоится или забъется нулем? То есть я хочу сначала создать пустую строку в первоначальной форме, потом запомнить ее ID и передать в другую форму как бы уже для редактирования, а потом если нажмется отмена, то удалить. Как лучше сделать?
Лучше сделать так:
1. На первоначальной форме создаешь процедуру открытия формы доб./ред. записи. Например, по нажатию кнопки "Добавить" у тебя будет открываться пустая форма для добавления а по нажатии кнопки "Редактироват" у тебя будет открываться форма, заполненная данными из нужного тебе места. И не забудь передать форме информацию о том что ты делаешь в данный момент редактируешь или добавляешь новую запись, это можно сделать создав на форме ред./доб. textbox, заполняющийся из поля ID-записи (например назовем его txtID, его нужно скрыть от глаз юзера (txtID.visible = false). Если он заполнен значит ты редактируешь запись, если он пустой значит добавляешь. Не используй для этого глобальне переменные - этот способ я проходил - плохой способ ).
2. Потом стандартными методами заполняешь или редактируешь записи и жмешь на кноку "Сохранить".
2.1. Если у тебя данные редактировались (а об этом тебе скажет заполненный txtID), то ты изменяешь данные в нужной тебе записи. Найти запись можно просто - фильтруешь свой рекордсет по ID записи, которую ты помнишь в txtID и просто переприсваиваешь данные полям записи.
2.2. Если добавляешь новую запись просто методом добавления добавляешь новую запись присваивая полям значения из формы ред./доб. записи.
3. Если нужно отменить редактирование - просто закрываешь форму без сохранения.
З.Ы. Всякие проверки данных на нужные тебе условия нужно добавлять перед сохранением. И лучше всего выделить проверки данных в отдельную функцию, да и процесс сохранения в общем то же - т.к. он сводиться к элементарному присваиванию данных полям записи и для сохранения и редактирования во многом совпадает, но есть небольшие отличия: в одном случае нужно искать запись и менять данные, в другом добавлять новую, а все что осталось - в отдельную функцию и нужно выделить. Но можно конечно и в общей процедуре все это прописать - но тогда кода будет заметно больше и это не очень красиво и путанно выглядит. Самому потом прочитать код будет очень сложно.