Модификация данных
Модификация данных выступает в двух аспектах:
- Изменения структуры данных
- Изменение собственно содержимого записей.
Для первого случая предусмотрена функция модификации структуры данных.
adbModify
INT adbModify(INT <idConn>, STRING <SQLString>|string ARRAY <SQLArray> [,INT <N1>[, INT <N2>]])
Начиная с версии 8.0 при работе с базами SQL Server не поддерживается. Рекомендуется использовать только для соединений с mdb.
Начиная с 03.08.2024 функция adbModify работает и с MS SQL, и с PostgreSQL для выполнения sql-команд типа Delete, Insert, Update и Create. Возвращаемую ссылку на набор записей (рекорд сет) можно и нужно использовать только в функции adbClose.
Функция производит действия по модификации данных из базы данных с номером <idConn> в соответствии с параметрами, заданными строкой <SQLString>. Однако, поскольку в системе K3 строка не может содержать больше 255 символов, а строка с SQL запросом может быть и длиннее, то можно воспользоваться альтернативным синтаксисом функции и использовать строковый массив <SQLArray>.
Функция возвращает номер, однозначно идентифицирующий набор записей. В случае ошибки, функция возвращает ноль. На одном соединении можно получить несколько наборов.
В случае использования массива <SQLArray> есть варианты:
1. Есть только массив – (параметры <N1> и <N2> отсутствуют). Из всего массива будет формироваться единая строка запроса.
2. Есть массив и только один <N1> – из массива, начиная с первого элемента до <N1>–го элемента будет формироваться единая строка запроса.
3. Есть массив и заданы <N1> и <N2> — из массива, начиная с элемента <N1> и до элемента <N2> будет формироваться единая строка запроса.
Пример:
ConStr="Provider=Microsoft.Jet.OLEDB.4.0"; ConStr=ConStr+"Data Source=d:\\nwind.mdb"; MyConn=adbConn(ConStr); SQLStr="CREATE TABLE MYTABLE (Field1 INTEGER NOT NULL,"; SQLStr=SQLStr+" Field2 VARCHAR NOT NULL)"; MyRs=adbModify(MyConn,SQLStr); MyRs=adbClose(MyRs); MyConn=adbDisCon(MyConn);
В примере формируется новая таблица. Правила создания определены синтаксисом языка SQL.
Пример добавления записи в новую таблицу:
ConStr="Provider=Microsoft.Jet.OLEDB.4.0"; ConStr=ConStr+"Data Source=d:\\nwind.mdb"; MyConn=adbConn(ConStr); SQLStr="INSERT INTO MYTABLE (Field 1, Field 2) VALUES"; SQLStr=SQLStr+" (123,'Наши поздравления!')"; MyRs=adbModify(MyConn,SQLStr); MyRs=adbClose(MyRs); MyConn=adbDisCon(MyConn);
Отметим, что данная команда сама формирует новый набор записей.
adbSetValue
LOGICAL adbSetValue(INT <idRs>, VARIANT <Fld>, VARIANT <Value> )
Начиная с версии 8.0 при работе с базами SQL Server не поддерживается. Рекомендуется использовать только для соединений с mdb.
Функция изменяет значение поля <Fld>, заданного либо строкой с именем поля, либо числом с порядковым номером поля текущей (или новой) записи набора <idRs>. В поле записывается значение, заданное параметром <Value>. Функция возвращает:
- 1 — в случае успешного выполнения,
- 0 — в случае ошибки.
| В процессе сохранения значения в поле осуществляется попытка приведения значения к типу поля. То есть, если поле имеет тип «Строка», а записывается число, число будет преобразовано в строку. |
adbDelRec
Logical adbDelRec(INT <idRs>)
Начиная с версии 8.0 при работе с базами SQL Server не поддерживается. Рекомендуется использовать только для соединений с mdb.
Функция удаляет текущую запись в наборе записей с номером <idRs>.
Функция возвращает:
- 1 — в случае успешного выполнения,
- 0 — в случае ошибки.
Следует отметить, что операции изменения не изменяют данные, а лишь определяют, какие изменения должны быть совершены. Внесенные изменения вступают в силу после выполнения функции adbUpdate.
adbUpdate
LOGICAL adbUpdate(INT <idRs>)
Примечание: Не требуется вызывать adbUpdate после adbModify в SQL и в mdb-версии
Функция осуществляет внесение изменений в набор записей с номером <idRs>, опредленных с помощью функций adbSetValue, adbDelRec.
Функция возвращает:
- 1 — в случае успешного выполнения,
- 0 — в случае ошибки.