22.3. Обновление записей

22.3. Обновление записей

При рассмотрении процесса удаления записи уже обсуждался код, приводящий к обновлению записи.

Когда обнаруживается корректная запись, все переменные поля записи с помощью переменной, выполняющей присваивание по умолчанию, назначаются переменной temp:

: [переменная, заданная по умолчанию:=переменная)

Пользователь может просто нажать клавишу [Return] для тех полей, значения которых изменять нежелательно. Затем переменная temp заменяется значением, заданным по умолчанию. Для выполнения произвольных обновлений можно просто вводить в соседние поля новые значения.

echo -n -e "EMPLOYEE NO: $C0DE "

echo -n "FIRST NAME : [$F_NAME] >"

read _F_NAME

: ${_FNAME:=$P_NAME}

Для реального обновления файла достаточно снова воспользоваться командой grep с опцией -v. Все записи обновляются по отдельности и перенаправляются во временный файл. Номер служащего задается в виде строки команды grep:

grep ~v $C0DE $DBFILE >$HOLD1

Пользователь получает запрос, нужно ли сохранять данную запись. Если ответ положителен, обновленная запись также добавляется во временный файл. Затем временный файл перемещается в исходный файл DEFILE.

echo "$CODE:$_F_NAME:$_S_NAME:$_DEPART" >> $HOLD1 mv $HOLD1 $DBFILE

После этого выполняется сортировка файла с помощью потока вывода, который сначала перенаправлялся во временный файл, затем перемещается обратно — в исходный файл DBFILE. Проверки кода завершения выполняются во время упомянутых действий с файлами, и пользователю выдаются сообщения об имеющихся затруднениях. Ниже показан поток вывода при обновлении записи.

Enter the employee surname :Penny

searching record.. 7

EMPLOYEE NO: 98211

FIRST NAME : Simon

SURNAME : Penny

DEPARTMENT : Services

ls this the record you wish to amend [Y..N] [Y]:

amending

EMPLOYEE NO: 98211

FIRST NAME : [Simon] >

SURNAME : [Penny] >

DEPARTMENT : [Services] >Accounts Ready to save this record [Y..N] [Y] :

Полный сценарий, выполняющий обновление записей:

$ pg dbasechange

#!/bin/sh

# dbasechange

   • обновление записи

   • игнорирование сигналов trap "" 2 3 15

   • временные файлы DBFILE=DBFILE HOLD1=HOLD1.$$ HOLD2=HOLD2.$$

continue_promptYN()

{

   • continue_jprompt _STR=$1 _DEFAULT=$2

   • проверим, что параметры верны if [ $# -lt 1 ];. then

echo "continue_prompt: I need a string to display" return 1 fi

while : do

echo -n "$_STR [Y..N] [$_DEFAULT]:"

read _ANS

: ${_ANS:=$_DEFAULT}

if [ "$_ANS" = "" ]; then

case $_ANS in

Y) return 0 ;;

N) return 1 ;;

esac fi

case $_ANS in y|Y|Yes|YES)

return 0;;

n|N|No|NO) return 1;;

*) echo "Answer either Y or N, default is $_DEFAULT";;

esac

done }

display_rec() {

   • отображение_записи

   • можно применить команду cat « документ, но нежелательно tput cup 5 3

echo "EMPLOYEE NO: $CODE" echo "FIRST NAME : $F_NAME" echo "SURNAME : $S_NAME" echo "DEPARTMENT : $DEPART" echo -e " " }

no_recs()

{

# no_recs

echo -e " Sorry could not find a record with the name $STR" }

get_rec ()

{

# get_rec

clear

echo -n "Enter the employee surname :"

read STR

if [ "$STR"="q" ]; then

return 1 fi

REC=0

MATCH=no

if [ "$STR" != "" ]; then

while read CODE F_NAME S_NAME DEPART do

REC=`expr $REC + 1` tput cup 3 4

echo -n " searching record.. $REC" if [ "$S_NAME"="$STR" ); then

MATCH=yes

display_rec

break

else

continue

fi

done

else

echo "Enter a surname to search for or q to quit"

fi

if [ "$MATCH"="no" ]; then

no_recs

fi

# основная программа

SAVEDIFS=$IFS

IFS=: get_rec

if [ "$MATCH" = "yes" ]; then

if continue_promptYN "Is this the record you wish to amend" "Y"

then

echo "amending"

# нельзя изменить код служащего .

echo -n -e "EMPLOYEE NO: $CODE "

echo -n "FIRST NAME : [$F_NAME] >"

read _F_NAME

: ${_FNAME:=$F_NAME}

echo -n "SURNAME : [$S_NAME] >"

read _S_NAME

: ${_S_NAME:=$S_NAME}

echo -n "DEPARTMENT : [$DEPART] >"

read _DEPART

: ${_DEPART:=$DEPART}

grep -v $CODE $DBFILE >$HOLD1

if [ $? -ne 0 ]; then

echo "Problems creating temporary file..check it out"

exit 1

fi

if continue_promptYN "Ready to save this record" "Y"; then

echo "$CODE:$_F_NAME:$_S_NAME:$_DEPART" >> $HOLD1

mv $HOLD1 $DBFILE

if [ $? -ne 0 ]; then

echo "Problems moving temporary file…check it out"

fi

echo " Record Amended" # сортировка файла после изменений sort +2 -t: $DBFILE >$HOLD2 2> /dev/null

if [ $? -ne 0 ]; then

echo "problems trying to sort the file..check it out"

exit 1

fi

mv $HOLD2 $DBFILE if [ $? -ne 0 ]; then

echo "problems moving the temp sort file..check it out"

exit 1

fi

else

#если обновление прерывается

echo "Amend aborted"

exit 0

fi

else

# если не выполняется обновление

echo "no amending"

# нет удаления

fi

# если желательно удалить

fi

# если имеется совпадение

IFS=$SAVEDIFS

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

8.9.2 Обновление таблиц RIP

Из книги автора

8.9.2 Обновление таблиц RIP Как видно на рис. 8.5, маршрутизатор А пересылает трафик в сеть 136.10.0.0 через маршрутизатор B. А получил изменения от своего соседа D, который объявил о более коротком маршруте, и А изменил свою таблицу маршрутизации. Отметим, что количество попаданий от


Обновление

Из книги автора

Обновление Настройку выхода в интернет мы закончили, идём дальше. Многие на этом этапе локализуют (загружают поддержку русского языка), но я придерживаюсь мнения, что сначала необходимо обновить нашу операционную систему.Это делается очень просто. Для этого идём в


Обновление Windows

Из книги автора

Обновление Windows За время существования Windows для нее выпущено несколько сотен (!) разнообразных заплаток. Самые важные из них объединены в так называемые Service Packs: их было выпущено всего три (в каждый новый Service Pack включены все обновления из предыдущего). Помните только, что


3.3.3.5. Обновление пакета

Из книги автора

3.3.3.5. Обновление пакета Пакет уже установлен, но вы скачали в Интернете его новую версию, поэтому вам его нужно обновить. Для обновления пакета используется опция -U. Данную опцию можно использовать вместе с опциями hv, если вы хотите видеть индикатор процесса обновления:rpm -


14.1. Обновление определений

Из книги автора

14.1. Обновление определений Защитник Windows в своей работе использует специальную таблицу определений, которая содержит описание кусков кода всех существующих вирусов, троянов и других подобных программ. И если эта таблица не будет содержать актуальных данных, программа


Автоматическое обновление

Из книги автора

Автоматическое обновление Любой программный продукт постоянно дорабатывается и совершенствуется (если, конечно, он не снят с обслуживания и поддержки ввиду появления новых версий или по иным причинам). Это касается и операционной системы Windows 7: разработчики постоянно


Совмещение и обновление

Из книги автора

Совмещение и обновление CVS всегда помнит, какие редакции у вас находятся в рабочем каталоге. Для изменённых файлов он помнит, какие редакции у них были до того, как вы начали изменять эти файлы. Это необходимо, чтобы правильно совместить несколько изменений, произошедших с


Обновление размера

Из книги автора

Обновление размера Команда DIMSTYLE с ключом apply обеспечивает обновление размера и вызывается из падающего меню Dimension ? Update или щелчком на пиктограмме Dimension Update на панели инструментов


Автоматическое обновление

Из книги автора

Автоматическое обновление Купив последнюю версию Windows, вы покупаете не совсем последнюю версию. Пройдет совсем немного времени, и программисты компании Microsoft (или просто доброхоты-любители) обнаружат, что в системе есть уязвимость, через которую можно проникнуть на


Обновление записей в приложении просмотра данных

Из книги автора

Обновление записей в приложении просмотра данных До сих пор в приведенных ранее примерах нам удавалось только извлекать и просматривать данные. А изменять данные можно было только в элементах пользовательского интерфейса, но их нельзя было сохранить (зафиксировать) в


Запросы на обновление

Из книги автора

Запросы на обновление Запрос на обновление может изменить сразу целую группу записей. Этот запрос состоит из трех частей:• предложение UPDATE, которое указывает на обновляемую таблицу;• предложение SET, задающее данные для обновления;• необязательный критерий WHERE,


Обновление системы

Из книги автора

Обновление системы На вкладке Автоматическое обновление в окне Свойства системы снимаем флажок Выполнять обновление


10.1.2. Обновление файла

Из книги автора

10.1.2. Обновление файла Чтобы открыть файл для чтения и записи, достаточно добавить знак плюс (+) в строку указания режима (см. раздел 10.1.1):f1 = File.new("file1", "r+")# Чтение/запись, от начала файла.f2 = File.new("file2", "w+")# Чтение/запись; усечь существующий файл или создать новый.f3 = File.new("file3", "а+")#


Обновление Dr.Web

Из книги автора

Обновление Dr.Web Для эффективной антивирусной защиты следует периодически обновлять вирусные базы с помощью Интернета. Программа Dr.Web умеет делать это автоматически, и при наличии постоянного подключения к Интернету вы будете периодически получать сообщения в области