Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программно создать новую строку в .mdb 
V
    Опции темы
Данкинг
Дата 13.10.2010, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Суть вопроса: есть таблица для ввода анкет. На форме - соответствующие DB-контролы: DbEdit, DbCheckBox и т.п.  - в них вводятся ответы на вопросы. После того, как анкета заполнена - нужно, соответственно, забивать следующую анкету, т.е. следующую строчку таблицы. Вопрос: как программно создать новую строку таблицы, дабы с помощью DbEdit'ов и прочих контролов её заполнять?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
~FoX~
Дата 13.10.2010, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Эгм, DataSet переводим в Insert mode, например TTable.Append, или Insert

Цитата

Append method (TDataSet)
Adds a new, empty record to the end of the dataset.

Цитата

Insert method (TDataSet)
Inserts a new, empty record in the dataset.

Апосля не забываем делать Post  smile 

Но ИМХО, не очень правильный вариант работы с БД, ибо юзер сусчество человеческое и может во время набора может ошибица, или вообще посередине ему надоест и он нажмет на крестик, тебе придется отлавливать все исключения БД... 
Лучше все таки сначала заполнить поля, проверить на корректность, а уже затем помещать данные в таблицу...



Это сообщение отредактировал(а) ~FoX~ - 13.10.2010, 16:27


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Данкинг
Дата 13.10.2010, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(~FoX~ @  13.10.2010,  17:23 Найти цитируемый пост)
Лучше все таки сначала заполнить поля, проверить на корректность, а уже затем помещать данные в таблицу...

В смысле - вместо DbEdit ставить Edit, а затем уже вручную делать .post в соответствующие поля?

Добавлено через 1 минуту и 40 секунд
Цитата(~FoX~ @  13.10.2010,  17:23 Найти цитируемый пост)
Эгм, DataSet переводим в Insert mode, например TTable.Append, или Insert

Кстати, не прокатит в данном случае. Ты так предлагаешь:
Код

if AdoTable.BOF then AdoTable.Append;

?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
~FoX~
Дата 13.10.2010, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Цитата(Данкинг @  13.10.2010,  18:55 Найти цитируемый пост)
В смысле - вместо DbEdit ставить Edit, а затем уже вручную делать .post в соответствующие поля?

Ну как вариант....

Цитата(Данкинг @  13.10.2010,  18:55 Найти цитируемый пост)
Кстати, не прокатит в данном случае. Ты так предлагаешь:

Почему не проканает? 
Цитата(Данкинг @  13.10.2010,  18:55 Найти цитируемый пост)
if AdoTable.BOF then AdoTable.Append;

Во первых почему BOF, Append добавляет новую строку в конец
Цитата

Adds a new, empty record to the /end/ of the dataset.

Во вторых заненадобностью оно вообще... Гляди, ты создал новую пустую запись, если не использовать например транзакции, то эта запись попадает тебе в монопольный доступ.... Т.е. пока ты не сделаешь Post или не отменишь Append ты даже с нее перейти ни куда не сможешь.



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Данкинг
Дата 13.10.2010, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(~FoX~ @  13.10.2010,  19:15 Найти цитируемый пост)
Ну как вариант....

Склоняюсь всё же к этому варианту... Хоть и заколебёшься прописывать все поля, зато точно знаешь, что все значения будут сохранены.
Цитата(~FoX~ @  13.10.2010,  19:15 Найти цитируемый пост)
Почему не проканает? 

Потому что там ерунда получается. Честное слово, не знаю, как объяснить, это надо видеть. smile 
Цитата(~FoX~ @  13.10.2010,  19:15 Найти цитируемый пост)
Во первых почему BOF, Append добавляет новую строку в конец

Ну да, EOF, не знаю, с чего я про BOF вспомнил.
Цитата(~FoX~ @  13.10.2010,  19:15 Найти цитируемый пост)
Т.е. пока ты не сделаешь Post или не отменишь Append ты даже с нее перейти ни куда не сможешь.

Да, тут тоже верно. В общем, если ещё голоса за Edit вместо DbEdit будут, то остановлюсь на этом варианте.

Это сообщение отредактировал(а) Данкинг - 13.10.2010, 18:25


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
~FoX~
Дата 13.10.2010, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Если честно я как то отошел от программирования БД через методы контролов и перешло на dbGo, ADO и ежесними... 
SQL все таки работает по веселее чем Post, да и большенство мороки по отловли ексепшенов ложица не на твои плечи, а на провайдер  smile 
А дальше SELECT, INSERT INTO, DELETE и т.д. и все прелести SQL у тебя под рукой... smile  smile  smile 
Код

ADOQuery1.SQL.Add('INSERT INTO TabTest (Name) VALUES("' +  Edit1.Text + ");');



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Данкинг
Дата 13.10.2010, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



ОК, будем смотреть в направлении запросов. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Frees
Дата 14.10.2010, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Цитата(~FoX~ @  13.10.2010,  21:44 Найти цитируемый пост)
DOQuery1.SQL.Add('INSERT INTO TabTest (Name) VALUES("' +  Edit1.Text + ");');

не надо так запросы собирать, кто знает что там в Edit1 напишут, лучше так

Код

ADOQuery1.SQL.Add('INSERT INTO TabTest (Name) VALUES(:Name);');
ADOQuery1.ParamByName('Name')asstring := Edit1.Text;


ИМХО я бы не стал отказываться от DB контролов.


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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