Содержание
ModifyTable(TableName : String; Mode : Integer; Record : Variant)
ModifyTable(TableName : String; Mode : Integer; Record : Variant; AltPk : String)
Вставка/изменение/удаление записи из таблицы БД.
Функция ModifyTable добавляет, изменяет или удаляем записи таблицы БД с именем TableName.
Аргумент TableName содержит имя таблицы базы данных.
Аргумент Mode определяет действие над записью:
Если Mode=emAdd, то функция добавляет запись. Если у таблицы есть поле счетчик, то в соответствующее поле Record будет записано значение этого счетчика. Если Record не содержит такого поля, то оно будет добавлено. Если добавить поле в Record невозможно, то при использовании функции с 3-мя аргументами, поле счетчика не сохраняется. А при использовании функции с 4-мя аругментами происходит ошибка.
При добавлении в таблицу БД содержащую поле счетчик, при использовании функции с 4-мя аргументами, 4-ый аргумент этой функции должен содержать настоящее имя первичного ключа таблицы БД. Иначе происходит исключение. Таким образом этот аргумент можно использовать для контроля структуры БД.
Если Mode=emEdit, то функция изменяет запись у которой первичный ключ равен соответствующему полю Record. То есть в таблице должен присутствовать первичный ключ, а в Record должно присутствовать поле с именем первичного ключа.
С помощью 4-ого аргумента можно в качестве первичного ключа использовать любое поле. При этом вы можете изменить более одной записи.
Если Mode=emDelete, то функция удаляем запись у которой первичный ключ равен соответствующему полю Record. Значения остальных полей игнорируются.
С помощью 4-ого аргумента можно в качестве первичного ключа использовать любое поле. При этом вы можете удалить более одной записи.
Аргумент Record содержит объект типа Record.
Вместо этой функции лучше использовать непосредственные запросы (insert ...) и (update ...). Потому что при использовании непосредственных запросов наличие таблицы и типы полей проверяются во время ввода программы.
Пример вставки:Type MyRecord = Record Id : Integer; Name, Inn, Kpp : String; Country, City : Integer; End; Procedure OnCreate; Var R : MyRecord; Begin R.Name := 'Иванов П. С.'; R.Country := 1; R.City := 1; ModifyTable('Client', emAdd, R); // Функция ModifyTable выполнит запрос: // Insert Into Client(Name, Inn, Kpp, Country, City) Values ('Иванов П. С.', '', '', 1, 1) // Функция добавит новый элемент Id, как это это поле является полем счетчиком таблицы. Warning('Код добавленной записи ' + ToStr(R.Id)); End;Пример изменения:
Type MyRecord = Record Id : Integer; Name : String; End; Procedure OnCreate; Var U : MyRecord; Begin U.Id := 1; U.Name := 'Иванов Петр Сидорович'; ModifyTable('Client', emEdit, U, 'Id'); // 4-ый аргумент контролирует, что бы Id был первичным ключом. // Функция ModifyTable выполнит запрос: // Update Client Set Name='Иванов Петр Сидорович' Where Code=1 End;Пример с CreateRecord и Variant:
Procedure OnCreate; Var R : Variant; Begin R := CreateRecord; R.Name := 'Иванов П. С.'; R.Inn := ''; R.Kpp := ''; R.Country := 1; R.City := 1; ModifyTable('Client', emAdd, R); Warning('Код добавленной записи ' + R.Id As String); End;Пример изменения с CreateRecord и Variant:
Procedure OnCreate; Var U : Variant; Begin U := CreateRecord; U.Id := 1; U.Name := 'Иванов Петр Сидорович'; ModifyTable('Client', emEdit, U); End;