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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2009, 11:46   #1
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию Редактирование выделой записи

Я хочу отредактировать запись выделеную, нажимаю на кнопку правую кнопку "редактировать" изменяю данные и нажимаю ОК он мне пишет, что id - не найдено, делаю точку останова он мне там пишет значение 0 ? Что не правильно и как исправить ?

Код:
procedure TFD_PAC.BitBtn3Click(Sender: TObject);
begin
DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Text:='UPDATE pacient SET familiya=:e1, imya=:e2,otchestvo=:e3,data_rogdeniya=:d,telefon=:e4,kollichestvo_detey=:e5,semeynoe_pologenie=:e6,adres=:m1,gitel=:e7,obrazovanie=:e8,opekun=:o1,pol=:p1 WHERE id_pacienta=:id';
DM.ADOQ_PAC.Parameters.ParamByName('e1').Value:=Edit1.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e2').Value:=Edit2.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e3').Value:=Edit3.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e4').Value:=Edit4.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e5').Value:=strtoint(Edit5.Text);
DM.ADOQ_PAC.Parameters.ParamByName('e6').Value:=Edit6.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e7').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e8').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('m1').Value:=memo1.Text;
dm.ADOQ_PAC.Parameters.ParamByName('o1').Value:=o;
dm.ADOQ_PAC.Parameters.ParamByName('p1').Value:=p;
DM.ADOQ_PAC.Parameters.ParamByName('d').Value:= FormatDateTime('yyyy-mm-dd', datetimepicker1.Date);
DM.ADOC_PAC.Parameters.ParamByName('id').Value:=DM.ADOQ_PACid_pacienta.Text;
DM.ADOQ_PAC.ExecSQL;

DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Add('SELECT * FROM pacient');
DM.ADOQ_PAC.Open;
FormActivate(Self);
end;
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 05.07.2009, 12:03   #2
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Опять ... закрыл ADOQ_PAC, потом запрашиваешь данные:
Код:
DM.ADOQ_PAC.Close;
.....
DM.ADOC_PAC.Parameters.ParamByName('id').Value:=DM.ADOQ_PACid_pacienta.Text;

Последний раз редактировалось Evgeniy26; 05.07.2009 в 12:15.
Evgeniy26 вне форума Ответить с цитированием
Старый 05.07.2009, 12:18   #3
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от Evgeniy26 Посмотреть сообщение
Опять ... закрыл ADOQ_PAC, потом запрашиваешь данные:
Код:
DM.ADOQ_PAC.Close;
.....
DM.ADOC_PAC.Parameters.ParamByName('id').Value:=DM.ADOQ_PACid_pacienta.Text;

Пишет id не найден (
Код:
procedure TFD_PAC.BitBtn3Click(Sender: TObject);
begin
DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Text:='UPDATE pacient SET familiya=:e1, imya=:e2,otchestvo=:e3,data_rogdeniya=:d,telefon=:e4,kollichestvo_detey=:e5,semeynoe_pologenie=:e6,adres=:m1,gitel=:e7,obrazovanie=:e8,opekun=:o1,pol=:p1 WHERE id_pacienta=:id';
DM.ADOQ_PAC.Parameters.ParamByName('e1').Value:=Edit1.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e2').Value:=Edit2.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e3').Value:=Edit3.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e4').Value:=Edit4.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e5').Value:=strtoint(Edit5.Text);
DM.ADOQ_PAC.Parameters.ParamByName('e6').Value:=Edit6.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e7').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e8').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('m1').Value:=memo1.Text;
dm.ADOQ_PAC.Parameters.ParamByName('o1').Value:=o;
dm.ADOQ_PAC.Parameters.ParamByName('p1').Value:=p;
DM.ADOQ_PAC.Parameters.ParamByName('d').Value:= FormatDateTime('yyyy-mm-dd', datetimepicker1.Date);
DM.ADOQ_PAC.ExecSQL;
DM.ADOC_PAC.Parameters.ParamByName('id').Value:=DM.ADOQ_PACid_pacienta.Text;
DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Add('SELECT * FROM pacient');
DM.ADOQ_PAC.Open;
FormActivate(Self);
end;
так делал и куда только не вставлял один фиг
Код:
DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOC_PAC.Parameters.ParamByName('id').Value:=DM.ADOQ_PACid_pacienta.Text;
DM.ADOQ_PAC.SQL.Text:='UPDATE pacient SET familiya=:e1, imya=:e2,otchestvo=:e3,data_rogdeniya=:d,telefon=:e4,kollichestvo_detey=:e5,semeynoe_pologenie=:e6,adres=:m1,gitel=:e7,obrazovanie=:e8,opekun=:o1,pol=:p1 WHERE id_pacienta=:id';
DM.ADOQ_PAC.Parameters.ParamByName('e1').Value:=Edit1.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e2').Value:=Edit2.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e3').Value:=Edit3.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e4').Value:=Edit4.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e5').Value:=strtoint(Edit5.Text);
DM.ADOQ_PAC.Parameters.ParamByName('e6').Value:=Edit6.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e7').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e8').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('m1').Value:=memo1.Text;
dm.ADOQ_PAC.Parameters.ParamByName('o1').Value:=o;
dm.ADOQ_PAC.Parameters.ParamByName('p1').Value:=p;
DM.ADOQ_PAC.Parameters.ParamByName('d').Value:= FormatDateTime('yyyy-mm-dd', datetimepicker1.Date);
DM.ADOQ_PAC.ExecSQL;
1 старый программист, лучше новых 2-х

Последний раз редактировалось Droid; 05.07.2009 в 12:22.
Droid вне форума Ответить с цитированием
Старый 05.07.2009, 12:24   #4
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Редактируй через StoredProc. Или так попробуй:
Код:
procedure TFD_PAC.BitBtn3Click(Sender: TObject);
var
  id: Integer;
begin
id := DM.ADOQ_PACid_pacienta.Text;
DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Text:='UPDATE pacient SET familiya=:e1,' + 'imya=:e2,otchestvo=:e3,data_rogdeniya=:d,telefon=:e4,kollichestvo_detey=:e5, ' +
'semeynoe_pologenie=:e6,adres=:m1,gitel=:e7,obrazovanie=:e8,' +
'opekun=:o1,pol=:p1 WHERE id_pacienta=:id';
DM.ADOQ_PAC.Parameters.ParamByName('e1').Value:=Edit1.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e2').Value:=Edit2.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e3').Value:=Edit3.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e4').Value:=Edit4.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e5').Value:=strtoint(Edit5.Text);
DM.ADOQ_PAC.Parameters.ParamByName('e6').Value:=Edit6.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e7').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e8').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('m1').Value:=memo1.Text;
dm.ADOQ_PAC.Parameters.ParamByName('o1').Value:=o;
dm.ADOQ_PAC.Parameters.ParamByName('p1').Value:=p;
DM.ADOQ_PAC.Parameters.ParamByName('d').Value:= FormatDateTime('yyyy-mm-dd', datetimepicker1.Date);
DM.ADOQ_PAC.Parameters.ParamByName('id').Value:= id;
DM.ADOQ_PAC.ExecSQL;
DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Add('SELECT * FROM pacient');
DM.ADOQ_PAC.Open;
FormActivate(Self);
end;
Сам подумай, почему пишет id не найден:
Код:
DM.ADOQ_PAC.Parameters.ParamByName('d').Value:= FormatDateTime('yyyy-mm-dd', datetimepicker1.Date);
DM.ADOQ_PAC.ExecSQL;
DM.ADOC_PAC.Parameters.ParamByName('id').Value:=DM.ADOQ_PACid_pacienta.Text;
И тут у тебя опечатка видимо:
Код:
DM.ADOQ_PAC.ExecSQL;
DM.ADOC_PAC.Parameters.ParamByName('id').Value:=DM.ADOQ_PACid_pacienta.Text;

Последний раз редактировалось Evgeniy26; 05.07.2009 в 12:35.
Evgeniy26 вне форума Ответить с цитированием
Старый 05.07.2009, 12:35   #5
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Теперь все норм но данные не вносит *(
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 05.07.2009, 12:44   #6
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Возможно, какие-то поля текстовые их надо в кавычки взять.
Evgeniy26 вне форума Ответить с цитированием
Старый 05.07.2009, 12:47   #7
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от Evgeniy26 Посмотреть сообщение
Возможно, какие-то поля текстовые их надо в кавычки взять.
не понял что за поля и где их искать ? ? ? ?
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 05.07.2009, 12:54   #8
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от Evgeniy26 Посмотреть сообщение
Возможно, какие-то поля текстовые их надо в кавычки взять.
При точке останова значение =0 ППЦ
DM.ADOQ_PAC.Parameters.ParamByName( 'id').Value:=DM.ADOQ_PACid_pacienta .Value;
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 05.07.2009, 12:57   #9
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Ты закрыл Query потом запрашиваешь id.... Я ведь написал используй StoredProc и не закрывай Query. И я привел пример с переменной id
Evgeniy26 вне форума Ответить с цитированием
Старый 05.07.2009, 13:01   #10
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от Evgeniy26 Посмотреть сообщение
Ты закрыл Query потом запрашиваешь id.... Я ведь написал используй StoredProc и не закрывай Query. И я привел пример с переменной id
Вроде все меняет если так ) А как испольовать Stored ? - для чего он нужен ?
Код:
var
id: integer;
begin
id:=DM.ADOQ_PACid_pacienta.Value;
DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Text:='UPDATE pacient SET familiya=:e1, imya=:e2,otchestvo=:e3,data_rogdeniya=:d,telefon=:e4,kollichestvo_detey=:e5,semeynoe_pologenie=:e6,+adres=:m1,gitel=:e7,obrazovanie=:e8,opekun=:o1,pol=:p1 WHERE id_pacienta=:id';
DM.ADOQ_PAC.Parameters.ParamByName('e1').Value:=Edit1.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e2').Value:=Edit2.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e3').Value:=Edit3.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e4').Value:=Edit4.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e5').Value:=strtoint(Edit5.Text);
DM.ADOQ_PAC.Parameters.ParamByName('e6').Value:=Edit6.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e7').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e8').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('m1').Value:=memo1.Text;
dm.ADOQ_PAC.Parameters.ParamByName('o1').Value:=o;
dm.ADOQ_PAC.Parameters.ParamByName('p1').Value:=p;
DM.ADOQ_PAC.Parameters.ParamByName('d').Value:= FormatDateTime('yyyy-mm-dd', datetimepicker1.Date);
DM.ADOQ_PAC.Parameters.ParamByName('id').Value:=id;
DM.ADOQ_PAC.ExecSQL;
1 старый программист, лучше новых 2-х

Последний раз редактировалось Droid; 05.07.2009 в 13:04.
Droid вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование записи через компонент Query Macklay БД в Delphi 11 30.06.2009 12:16
Редактирование Valera24 Помощь студентам 9 11.06.2009 19:41
Редактирование таблицы Rio309 БД в Delphi 6 16.11.2008 12:28
редактирование Query photozaz БД в Delphi 3 10.11.2008 19:10
Редактирование AntiZero Помощь студентам 2 12.11.2007 18:02