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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2010, 19:33   #11
b.grigorev
Пользователь
 
Регистрация: 19.03.2009
Сообщений: 14
По умолчанию

спасибо за совет!
А что бы работало AdoQuery1.Refresh, надо же запрос добавить в AdoQuery > типа там UPDATE или что то подобное? Потому что при добавлении просто строчки AdoQuery1.Refresh при выполнении происходит ошибка!
b.grigorev вне форума Ответить с цитированием
Старый 03.08.2010, 23:36   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
спасибо за совет!
Пожалуйста!
Но что же Вы благодарите, если Вы не разобрались в том, что именно я посоветовал?

смотрите.
кидаем на форму ДВА Adoquery
Один из них (пусть это будет AdoQuery1) у Вас заполнен кодом, который выбирает данные из таблицы - ну, что-то вроде:
SELECT * From Table1 Where .....
Этот ADOQuery1 через DataSource связан с DBGrid (отображение данных)
Теперь, на кнопке Вы хотите добавить новую запись.
Там используем другой ADOQuery (пусть это будет ADOQueryInsert.
в этот ADOQueryInsert заносим код добавления записи.
тогда на кнопке Добавления пишете что-то вроде:
Код:
procedure TForm1.Button1Click(Sender : TObject);
begin
  ADOQueryInsert.Parameters.ParamByName('ind_code').Value := StrToInt(Edit1.Text);
  ADOQueryInsert.Parameters.ParamByName('ind_name').Value := Edit2.Text;
  ADOQueryInsert.Parameters.ParamByName('long_name').Value := Edit3.Text;
  ADOQueryInsert.ExecSQL; {вот, собственно добавление записи в таблицу}

  {а вот теперь обновим датасет, который отображает данные}
  AdoQuery1.Refresh;

end;
Вот и всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.08.2010, 14:49   #13
b.grigorev
Пользователь
 
Регистрация: 19.03.2009
Сообщений: 14
По умолчанию

Ты говоришь, что лучше что бы были разные AdoQuery, ок!
Я сейчас буду рассуждать по твоему прошлому сообщению...
До этого момента у меня был один AdoQuery, который у меня был заполнен кодом:
Код:
INSERT INTO industry (ind_code,ind_name,long_name)
Values(:ind_code,:ind_name,:Long_name)
мне надо изменить этот код, что ты предлогаешь: (правильно я написал код?)
Код:
SELECT * INTO industry (ind_code,ind_name,long_name)
Values(:ind_code,:ind_name,:Long_name)
Что у меня получилось:
В AdoQuery1 у меня код
Код:
SELECT * INTO industry (ind_code,ind_name,long_name)
Values(:ind_code,:ind_name,:Long_name)
в AdoQueryInsert у меня код
Код:
INSERT INTO industry (ind_code,ind_name,long_name)
Values(:ind_code,:ind_name,:Long_name)
и в кнопке добовления у меня код
Код:
procedure TForm1.Button1Click(Sender : TObject);
begin
  ADOQueryInsert.Parameters.ParamByName('ind_code').Value := StrToInt(Edit1.Text);
  ADOQueryInsert.Parameters.ParamByName('ind_name').Value := Edit2.Text;
  ADOQueryInsert.Parameters.ParamByName('long_name').Value := Edit3.Text;
  ADOQueryInsert.ExecSQL; 
  AdoQuery1.Refresh;
 end;
я вроде ничего не упустил, НО =) когда я добавляю данные у меня ошибка
и после того как опять запускаю проект у меня почему то добавляется в низу таблицы первая строчка из таблицы, в общем на той ячейке где был курсор, та ячейка и добавляется, хотя я перехожу на edit когда добавляю свою цифру

пример:
Цитата:
3579SoftWComputer Software
3710Auto Auto & Truck
3720Aero Aerospace/Defense
7000HotelHotel/Gaming
3579SoftWComputer Software
что то я не то сделал наверно
Изображения
Тип файла: jpg Новый рисунок (1).jpg (20.5 Кб, 128 просмотров)

Последний раз редактировалось Stilet; 09.08.2010 в 10:47.
b.grigorev вне форума Ответить с цитированием
Старый 09.08.2010, 10:49   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ADOQueryInsert.ExecSQL;
AdoQuery1.Refresh;
Так не получится. После ExecSQL тебе нужно переопределить запрос на SELECT... и открыть его методом Open. Refresh тут не самое лучшее решение.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2010, 19:30   #15
b.grigorev
Пользователь
 
Регистрация: 19.03.2009
Сообщений: 14
По умолчанию

Ну я так понял, что все оставляю как есть, только меняю запрос на ввод данных в кнопке?

...(предыдущий текст как был)
ADOQueryInsert.ExecSQL;
AdoQuery1.Open;
end;

вот так или что то еще надо?
b.grigorev вне форума Ответить с цитированием
Старый 13.08.2010, 08:27   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нет. Я мало понял что тебе нужно но видимо это:
Код:
procedure TForm1.Button1Click(Sender : TObject);
begin
  ADOQueryInsert.Parameters.ParamByName('ind_code').Value := StrToInt(Edit1.Text);
  ADOQueryInsert.Parameters.ParamByName('ind_name').Value := Edit2.Text;
  ADOQueryInsert.Parameters.ParamByName('long_name').Value := Edit3.Text;
  ADOQueryInsert.ExecSQL; 
  with AdoQuery1 do begin
   Close;
   sql.text:=Тут твой SELECT на открытие;
   Open;
  end;

 end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.08.2010, 13:12   #17
b.grigorev
Пользователь
 
Регистрация: 19.03.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нет. Я мало понял что тебе нужно но видимо это:
Код:
procedure TForm1.Button1Click(Sender : TObject);
begin
  ADOQueryInsert.Parameters.ParamByName('ind_code').Value := StrToInt(Edit1.Text);
  ADOQueryInsert.Parameters.ParamByName('ind_name').Value := Edit2.Text;
  ADOQueryInsert.Parameters.ParamByName('long_name').Value := Edit3.Text;
  ADOQueryInsert.ExecSQL; 
  with AdoQuery1 do begin
   Close;
   sql.text:=Тут твой SELECT на открытие;
   Open;
  end;

 end;
SELECT * INTO industry (ind_code,ind_name,long_name)
Values(:ind_code,:ind_name,:Long_na me) вот это?
b.grigorev вне форума Ответить с цитированием
Старый 16.08.2010, 08:37   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот и пиши:
Код:
sql.text:='SELECT * INTO industry (ind_code,ind_name,long_name)
Values(:ind_code,:ind_name,:Long_na me)';
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Type mismatch in expression SlavaSH БД в Delphi 24 02.05.2012 09:19
Ошибка run-time error 13 Type mismatch в VBA Kracozebr Microsoft Office Word 9 19.07.2010 16:10
Различие смысла в type "type" Alex Cones Общие вопросы Delphi 5 18.04.2010 23:57
без юнита процедуры работают а с юнитом пишет "type mismatch" fawr Помощь студентам 1 08.11.2009 02:53
Эта надоедливая ошибка: Type mismatch expresion :( artemavd БД в Delphi 8 25.06.2009 17:21