Я работаю с БД Oracle. У меня есть несколько таблиц в dataset, связанных между собой. В некоторых есть поля, которые нельзя редактировать(Например ID). Для обновления их я использую oleDataAdapter. Что нужно писать в CommandText в UpdateCommand? Или может быть по другому обновлять данные в БД?
Заранее всем уделившим внимание спасибо. |
Для простоты пусть у меня есть таблица всего из трёх полей :
- ID (первичный ключ) - Name (строковое поле). - Date_From (служебное поле, дата ввода, это поле нельзя изменять) В своей программе я изменяю(добавляю,удаляю,редактирую) данные и вношу изменения в dataset. Но редактировать я могу только ID и Name. Добавляю в dataset так : dataSet1.MYTABLE.Rows.Add(NewRow); Удаляю из dataset так : dataSet1.MYTABLE.FindByID(Del_ID).Delete(); Вношу изменения в dataset так : dataSet1.MYTABLE.FindByID(Up_ID)[1] = textBox1.Text; Теперь я хочу обновить саму базу данных. Для этого я использую oleDataAdapter. Для этого я в CommandText пишу : - для DeleteCommand: DELETE FROM "MYTABLE" WHERE (("ID" = ?) AND ("NAME" = ?) AND ("DATE_FROM" = ?)) - для InsertCommand: INSERT INTO "MYTABLE" ("ID", "NAME","DATE_FROM") VALUES (?, ?, ?) - для SelectCommand: SELECT MYTABLE.* FROM MYTABLE - дляUpdateCommand: UPDATE "MYTABLE" SET "ID" = ?, "NAME" = ?, "DATE_FROM" = ? WHERE (("ID" = ?) AND ("NAME" = ?) AND ("DATE_FROM" = ?)) У меня возникла проблема: Если оставить Update как здесь написано, то возникает ошибка "ORA-20201: Программная ошибка! Попытка обновления служебного поля!" Но по идее в update в SET не должно быть "DATE_FROM"=? , но если его убрать, то возникает другая ошибка "ORA-01008: не все переменные привязаны". Вот меня и мучает вопрос: что я делаю не так? Подскажите пожалуйста ответ на этот вопрос или может вы знаете какой-нибудь другой способ обновления данных в БД. Заранее всем спасибо. P.S. Ещё подскажите как организовать каскадное удаление. |
В книге С.В.Глушакова "DELPHI 2007" (стр. 474) это решение описано так:
...Чтобы не изменять значение какого-либо поля, ему необходимо присвоить значение NIL. В этом случае прежнее значение поля будет сохранено без изменения. Редактирование записи с помощью метода SetFields может выглядеть примернотак: ADOTable1.Edit; ADOTable1SetFields(['0284','Порошок стиральный',NIL,500]); ADOTable1.Post; При выполнении приведенного выше кода первому полю текущей записи присваивается значение '0284' , второму полю - 'Порошок стиральный', третье поле НЕ ИЗМЕНЯЕТСЯ , а четвертое получает значение 500. ... |
автоустановка винды
Помогите пожадуйста сделать загрузочный диск Windows .Какая нужна прога и что надо делать?:(
|
Altai, Прошу прощения за нескромный вопрос... А из какого дистрибутива вы его (загрузочный диск) собираетесь лепить? :)
|
мне надо сделать диск из Wn98
|
Цитата:
|
да именно , саму винду сейчас качаю с http://qiq.ru/28/04/2009/operating_s...8.html?rk=5239
|
Цитата:
|
01pump, он наверное имеет ввиду кучу образов для дискет, которые перевести в 1 загрузочный СД образ
|
Часовой пояс GMT +4, время: 07:24. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.