![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Неполучается сделать update записи. [D6, Paradox]
Леонид © (2005-06-02 13:16:00)Это код UpdateSQL, ModifySQL
update pribor
set
RN = :RN,
NomerPP = :NomerPP,
Naimen = :Naimen,
Tip = :Tip,
Predel = :Predel,
NomerZ = :NomerZ,
DataPov = :DataPov,
DataNext = :DataNext,
Inventar = :Inventar,
Ceh = :Ceh,
Mesto = :Mesto,
Prim = :Prim
where
RN = :OLD_RN
Это код для изм. записи.
procedure TPribor_Form.Button1Click(Sender: TObject);
var
i, nNomerPP, oldRN : integer;
nNaimen : String;
begin
oldRN:=DM.PriborSQL.FieldByName('RN').Value;
//Изменяю запись с пом UpdateSQL
DM.PriborSQL.Edit;
//Присваиваю полям (параметрам) в запросе значения
DM.PriborSQL.FieldByName('RN').Value:=oldRN;
if Edit1.Text = '' then
DM.PriborSQL.FieldByName('NomerPP').Clear
else
DM.PriborSQL.FieldByName('NomerPP').Value:=StrToInt(Edit1.text);
DM.PriborSQL.FieldByName('Naimen').Value:=ComboBox1.Text;
DM.PriborSQL.FieldByName('Tip').Value:=Edit2.text;
DM.PriborSQL.FieldByName('Predel').Value:=Edit3.text;
DM.PriborSQL.FieldByName('NomerZ').Value:=Edit4.text;
if MaskEdit1.Text = '1. . ' then
DM.PriborSQL.FieldByName('DataPov').Clear
else
DM.PriborSQL.FieldByName('DataPov').Value:=StrToDate(MaskEdit1.text);
if MaskEdit2.Text = '1. . ' then
DM.PriborSQL.FieldByName('DataNext').Clear
else
DM.PriborSQL.FieldByName('DataNext').Value:=StrToDate(MaskEdit2.text);
DM.PriborSQL.FieldByName('Inventar').Value:=Edit5.text;
DM.PriborSQL.FieldByName('Ceh').Value:=ComboBox2.text;
DM.PriborSQL.FieldByName('Mesto').Value:=Edit6.text;
DM.PriborSQL.FieldByName('Prim').Value:=Edit7.text;
//Завершение редактирование записи
DM.PriborSQL.Post;
//Делаю из кэша запись в таблицу
if DM.PriborSQL.UpdatesPending
then DM.PriborSQL.ApplyUpdates;
nNomerPP:=DM.PriborSQLNomerPP.Value;
nNaimen:=DM.PriborSQLNaimen.Value;
//Переоткрываю базу, чтобы была нормальная выборка с сортировкой
DM.PriborSQL.Active:=false;
DM.PriborSQL.Active:=true;
SaveButton.Enabled:=false;
Pribor_Form.ActiveControl:=GroupBox1;
//Очищаю все поля ввода от старых значений.
for i:=0 to ComponentCount-1 do
if Components[i] is TEdit then
(Components[i] as TEdit).Text:='';
for i:=0 to ComponentCount-1 do
if Components[i] is TMaskEdit then
(Components[i] as TMaskEdit).Text:='';
for i:=0 to ComponentCount-1 do
if Components[i] is TCombobox then
(Components[i] as TCombobox).Text:='';
DM.PriborSQL.Locate('NomerPP', nNomerPP, [loPartialKey]);
DM.PriborSQL.Locate('Naimen', nNaimen, [loPartialKey]);
Pribor_Status.Panels[0].Text:= 'Всего записей ' + IntToStr(DM.PriborSQL.RecordCount);
Pribor_Status.Panels[1].Text:='Была изменена запись';
end;
Поле RN - автоинкриментное и ключевое.
Не пойму, что здесь не так.
Леонид (2005-06-02 13:26:00) [1]Спасибо. Все работает.
Sergey13 (2005-06-02 13:20:00) [2]oldRN:=DM.PriborSQL.FieldByName('RN').Value;
//Присваиваю полям (параметрам) в запросе значения
DM.PriborSQL.FieldByName('RN').Value:=oldRN;
Вот это зачем?
Если
>Поле RN - автоинкриментное и ключевое.
то и не трогай его никогда.
И
RN = :RN,
из запроса выкинь, чтоб не мешалось.