Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 26.10.2015, 11:44   #1
funchosa
 
Регистрация: 26.10.2015
Сообщений: 7
Восклицание Вопрос о вставки новой записи

Здраствуйте форумчане,

возникла проблема... На форме имеются 7 DBEdit-полей, при этом все они подключены к одному DataSource. Хотелось бы с их помощью вставлять запись в базу. В методе OnFormShow делаю вот так:

Код:
  ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Select * from customer');
    ADOQuery1.Open;
    ADOQuery1.Append;
В методе OnButtonClick прописываю:
Код:
 ADOQuery1.Post;
При первом заполнении полей все работает. Если заполняю поля во второй раз, то предыдущая запись заменяется на новую, и тем самым новая запись не создается. Что нужно сделать чтобы при каждом нажатии на кнопку создавалась новая запись? Объясните пожалуйста новичку, очень нужно :-), а лучше на примере...
funchosa вне форума
Старый 26.10.2015, 11:57   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

ADOQuery1.Append; ничего НЕ СОХРАНЯЕТ, но МЕНЯЕТ позицию (устанавливает на новую)

ADOQuery1.Post; СОХРАНЯЕТ текущую редакцию данных в БД, но НЕ МЕНЯЕТ позицию.

Вам надо сделать правильную комбинацию.
после сохранения надо снова и снова(?) установить на новую.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума
Старый 26.10.2015, 12:10   #3
funchosa
 
Регистрация: 26.10.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
ADOQuery1.Append; ничего НЕ СОХРАНЯЕТ, но МЕНЯЕТ позицию (устанавливает на новую)

ADOQuery1.Post; СОХРАНЯЕТ текущую редакцию данных в БД, но НЕ МЕНЯЕТ позицию.

Вам надо сделать правильную комбинацию.
после сохранения надо снова и снова(?) установить на новую.
Не могли бы пожалуйста на примере подсказать?
funchosa вне форума
Старый 26.10.2015, 15:33   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
после сохранения надо снова и снова(?) установить на новую.
а что у нас сохраняет данные?
а что у нас устанавливает на новую?
ответы на вопросы были даны в предыдущем посте
надо выполнить данные операции подряд и в нужном порядке.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума
Старый 27.10.2015, 11:22   #5
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Если INSERT на SQL не принципиален и плевать на монопольный режим
Настройка коннекта TFDConnection для FireDAC:
Код:
 conects.Connected:=false;
 conects.Params.clear;
 conects.Params.Add('DataSource=dBASE Files');
 conects.Params.Add('ODBCDriver={Driver do Microsoft dBase (*.dbf)}');
 conects.Params.Add('Database=C:/BASE_DBF/');//Путь до КАТАЛОГА с БД
conects.Params.Add('DriverID=ODBC');
Где conects это TFDConnection с вкладки FireDAC.

Подключение к DBF через TFDTable для FireDAC :
Код:
conects.Connected:=false;
DBF_TB.Active:=False;
DBF_TB.TableName:='DBF1.DBF';//Имя DBF файла
conects.Connected:=True;
DBF_TB.Active:=true;
Далее сама вставка:
Код:
DBF_TB.Insert;
DBF_TB.FieldByName('TEXT').AsString:='привет';
DBF_TB.FieldByName('INTEGER').AsInteger:=0;
DBF_TB.FieldByName('FLOAT').AsFloat:=0.11;
DBF_TB.FieldByName('DATE').AsDateTime:=strtodate('01.01.2000');
DBF_TB.Post;
Где DBF_TB это TFDTable с вкладки FireDAC.

Также на форму надо кинуть TFDGUIxWaitCursor c вкладки FireDAC UI

P/S/ Delphi XE7, с ADO 100 лет не работаю уже,но принцип INSERT-POST тот-же.
В FireDAC есть и SQL. А так-же возможность подключения к любой БД: DBF,MySQL,FireBird,MsSQL и т д.
Пишу много и развернуто

Последний раз редактировалось Heneken87; 27.10.2015 в 13:13.
Heneken87 вне форума
Старый 27.10.2015, 12:06   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Какое отношение это имеет к вопросу ТС?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 27.10.2015, 12:11   #7
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Цитата:
Что нужно сделать чтобы при каждом нажатии на кнопку создавалась новая запись?
Аватар, ну вот как....
Код:
DBF_TB.Insert;
DBF_TB.FieldByName('TEXT').AsString:='привет';
DBF_TB.FieldByName('INTEGER').AsInteger:=0;
DBF_TB.FieldByName('FLOAT').AsFloat:=0.11;
DBF_TB.FieldByName('DATE').AsDateTime:=strtodate('01.01.2000');
DBF_TB.Post;
Вроде все логично
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума
Старый 27.10.2015, 12:14   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Проглядел, но не в этом деле - все остальное к чему?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 27.10.2015, 13:04   #9
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Остальное нужно потому что ТС юзает АДО, а 87 предлагает FireDAC + даёт настройки как динамически к ним подключиться.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума
Старый 29.10.2015, 11:04   #10
funchosa
 
Регистрация: 26.10.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
а что у нас сохраняет данные?
а что у нас устанавливает на новую?
ответы на вопросы были даны в предыдущем посте
надо выполнить данные операции подряд и в нужном порядке.
Спасибо сегодня попробовала, все отлично работает
funchosa вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для вставки новой строки Maiku Microsoft Office Excel 6 15.03.2013 18:28
Добавление новой записи в IBQuery GROSS777 БД в Delphi 10 23.10.2012 12:12
Проблема с созданием новой записи Malgor БД в Delphi 1 16.07.2012 08:25
Отследить появление новой записи в БД alekslep БД в Delphi 0 18.10.2010 13:38
Создание новой записи Gerox БД в Delphi 3 30.12.2007 14:22