• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Обновление данных в БД

Aleksandr_06

Ученик
Регистрация
12 Сен 2007
Сообщения
4
Реакции
0
Баллы
0
Я работаю с БД 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
 
01pump, он наверное имеет ввиду кучу образов для дискет, которые перевести в 1 загрузочный СД образ
 
качается архивом ,а что там........????
 
архив состоит из файлов и кабов самой винды...что делать дальше?
 
Altai, У вас есть программа для записи дисков (типа Nero) ?
 
да конечно есть
Тогда попробуйте записать на болванку это скачанный архив выбрав в Nero Burning Rom - Рекордер - записать образ - далее выберите этот скачанный архив
 
Если я запишу её образом , будет ли она автозагрузочной???
 
Назад
Сверху