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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.11.2010, 18:12   #1
tantema
Пользователь
 
Аватар для tantema
 
Регистрация: 05.11.2010
Сообщений: 10
По умолчанию Проблема в копировании данных в индексированной таблице БД

Есть БД, в которой 3 таблицы. В каждой таблице добавляются/удаляютя/редактируются данные. Но как написать процедуру, которая бы позволила копировать одну из строк в этой таблице? Использовала
Код:
ADOTable1.AppendRecord([ADOTable1.FieldByName('key1').text,ADOTable1.FieldByName('Порядковый номер партии').text,
ADOTable1.FieldByName('Номер компл маршрута').Text,ADOTable1.FieldByName('Номер цеха/участка').Text]);
Но так как таблица индексированная, при нажатии кнопки появляется сообщение "Field 'key1' cannot be modified"

Последний раз редактировалось mihali4; 27.11.2010 в 22:02.
tantema вне форума
Старый 27.11.2010, 20:58   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Вместо
Код:
ADOTable1.FieldByName('key1').text
напиши nil
_SERGEYX_ вне форума
Старый 27.11.2010, 22:00   #3
tantema
Пользователь
 
Аватар для tantema
 
Регистрация: 05.11.2010
Сообщений: 10
По умолчанию

не помогло, теперь появляется сообщение ADOTable1: DataSet not in edit or insert mode
tantema вне форума
Старый 27.11.2010, 22:05   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Значения полей - в переменные и уже переменные - в ADOTable1.AppendRecord().
Таблица не может одновременно находиться в режиме вставки и чтения.

З.Ы. А кнопка к этому какое отношение имеет ???

Последний раз редактировалось mihali4; 27.11.2010 в 22:16.
mihali4 вне форума
Старый 27.11.2010, 22:11   #5
tantema
Пользователь
 
Аватар для tantema
 
Регистрация: 05.11.2010
Сообщений: 10
По умолчанию

Как же тогда при нажатии кнопки сделать так, чтобы в базе данных и соответственно в TDBGrid появлялась строка с копируемыми данными
tantema вне форума
Старый 28.11.2010, 00:02   #6
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
По умолчанию

Я вижу это так: перед нажатием на кнопку ставишь курсор на нужную строку таблицы (ту строку, которую надо скопировать). Теперь жмём на кнопку.
Событие при нажатии на кнопку следующее:
Код:
var mark: Integer;
begin
  mark:=ADOTable1.FieldByName('key1').AsInteger; //запоминаем ключ нужной записи
  ADOQuery1.SQL.Add(format('select * from Table1 where key1=%d',[mark])); //создаём запрос
  ADOQuery1.Open; //активируем запрос
  Table1.Insert; //переводим таблицу в режим создания новой записи
  {копируем данные из ADOQuery1 в Table1}
  ADOQuery1.Close;
  Table1.Post;
end;
По соотношению цена-качество, халявное пиво не имеет конкурентов.
palevg вне форума
Старый 28.11.2010, 01:37   #7
tantema
Пользователь
 
Аватар для tantema
 
Регистрация: 05.11.2010
Сообщений: 10
По умолчанию

я не испольую ADOQuery в программе, у меня есть компоненты ADOConnection, DataSource, ADOTable, DBGrid и собственно DBEdit, с помощью которыхъ я и добавляю данные в таблицу
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
  if (DBEdit1.Text='')or (DBEdit2.Text='')or (DBEdit3.Text='') or (DBEdit1.Text='0')or (DBEdit2.Text='0')or (DBEdit3.Text='0')
    then
      begin
        MessageDlg('Ошибка! Заполните все поля.', mtWarning,[mbYes], 0);
        DBEdit1.SetFocus;
      end
    else
      begin
        ADOTable1.Edit;
        ADOTable1.FieldByName('Порядковый номер партии').Text:=DBEdit1.Text;
        ADOTable1.FieldByName('Номер компл маршрута').Text:=DBEdit2.Text;
        ADOTable1.FieldByName('Номер цеха/участка').Text:=DBEdit3.Text;
        ADOTable1.Post;
        MessageDlg('Данные добавлены', mtInformation,[mbYes], 0);
      end;
end;
tantema вне форума
Старый 28.11.2010, 10:52   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
DataSet not in edit or insert mode
Что-то не то ты делаешь...
Проверяю... вот, у меня открытая таблица. В нем 4 поля
id (счетчик), n1, n2, n3 (числа).
Ставлю курсор на нужную строку. Жму на кнопку
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.AppendRecord([nil,ADOTable1n1.Text,ADOTable1n2.Text,ADOTable1n3.Text]);
end;
Всё. Никаких ошибок. Строка скопировалась в конец таблицы.

Для неверующих вот исходник
Вложения
Тип файла: zip test2.zip (18.4 Кб, 10 просмотров)

Последний раз редактировалось _SERGEYX_; 28.11.2010 в 11:00.
_SERGEYX_ вне форума
Старый 28.11.2010, 13:36   #9
tantema
Пользователь
 
Аватар для tantema
 
Регистрация: 05.11.2010
Сообщений: 10
По умолчанию

Да...делала не то. Нашла свою ошибку. единственное не могу понять откуда берется
Код:
ADOTable1id: TAutoIncField;
    ADOTable1n1: TIntegerField;
    ADOTable1n2: TIntegerField;
    ADOTable1n3: TIntegerField;

Последний раз редактировалось tantema; 28.11.2010 в 13:40.
tantema вне форума
Старый 28.11.2010, 15:36   #10
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
не могу понять откуда берется
Правый клик по ADOTable1. В меню > Fields Editor...
Правый клик по редактору. В меню > Add all fields
_SERGEYX_ вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отключение автоформата при копировании данных alebed Microsoft Office Excel 7 31.12.2011 10:11
Сохранение данных в таблице Aleksey1989 Помощь студентам 4 21.10.2010 11:16
Удаление ненужных строк при копировании отобранных данных Gorimir Microsoft Office Excel 13 31.03.2010 10:21
проблема с изменением формата даты при копировании из CSV формата в эксель mars56 Microsoft Office Excel 4 16.03.2010 09:50
Проблема в Excel при копировании листа kirill55 Помощь студентам 0 06.11.2009 23:15