Topic: Скрипты и таблицы базы данных
Как при помощи скрипта получить ID записи таблицы базы данных по выбранной в гриде строке. Как вставить/удалить его в другую таблицу БД?
My Visual Database → Russian → Скрипты и таблицы базы данных
Как при помощи скрипта получить ID записи таблицы базы данных по выбранной в гриде строке. Как вставить/удалить его в другую таблицу БД?
Form1.TableGrid1.dbItemID
вернет id записи, если запись в гриде не выбрана, то вернет -1
все остальные действия, такие как установить связь с записью или удалить, можно выполнить только с помощью SQL запроса в скрипте, используя функцию SQLExecute (SQL запрос)
ID записи отловил, спасибо. Но я хочу при помощи скрипта удалить значение поля в таблице базы данных.
Пример:
Таблица БД Oborud. В ней ссылка id_DocS. Содержимое DocS отображается в таблице TabDoc. В таблице TabDocOborud отображается список оборудования (результат запроса), при нажатии на запись из таблицы TabDoc. Как должен выглядеть скрипт, чтобы при нажатии на кнопку, запись поля id_DocS из таблицы базы данных Oborud удалялась.
Помогите, пожалуйста!
procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
id: integer;
begin
id := Form1.TabDocOborud.dbItemID; // получаем id записи оборудования
if id <> -1 then SQLexecute('UPDATE Oborud SET id_DocS = null WHERE id = ' + IntToStr(id)); // если id не равно -1, то выполняет SQL запрос по удалению значения id_DocS
end;
при выполнении этого скрипта, будет выведено сообщение об ошибке, не обращайте пока на него внимание, будет исправлено в версии 1.41
Спасибо!
На такое трудно не обратить внимание "Курсор не вернулся из запроса"... Не хватает "Kernel panic"...
А как на счет обратной процедуры?
id := OborudAddDoc.OborudAddDocTab.dbItemID;
SQLexecute('UPDATE Oborud SET id_DocS = (текущая строка таблицы TabDoc);
Владислав Косяков
id := OborudAddDoc.OborudAddDocTab.dbItemID;
SQLexecute('UPDATE Oborud SET id_DocS = '+ cbDocs.dbItemID +' WHERE id = ' + IntToStr(id) );
где cbDocs это комбобокс с нужным выбранным значением документа или TableGrid
Что-то не идет, при запуске проекта ругается на несовместимый тип, видны скрытые вкладки.
При нажатии на кнопку возникает критическая ошибка.
procedure OborudAdd_ButtonAddDoc_OnClick (Sender: string; var Cancel: boolean);
var
id: integer;
begin
id := OborudAddDoc.OborudAddDocTab.dbItemID;
SQLexecute('UPDATE Oborud SET id_DocS = '+ BD.TabDoc.dbItemID +' WHERE id = ' + IntToStr(id) );
OborudAddDoc.ButtonCancel.Click;
end;
Если закомментировать строку SQLexecute... то проект запускается штатно. Видимо там ошибка...
И вопрос вдогонку
OborudAddDoc.закрыть
Как это правильно написать?
Извиняюсь, допустил ошибку, попробуйте так
procedure OborudAdd_ButtonAddDoc_OnClick (Sender: string; var Cancel: boolean);
var
id: integer;
begin
id := OborudAddDoc.OborudAddDocTab.dbItemID;
SQLexecute('UPDATE Oborud SET id_DocS = '+ IntToStr(BD.TabDoc.dbItemID) +' WHERE id = ' + IntToStr(id) );
OborudAddDoc.ButtonCancel.Click;
end;
закрыть форму
OborudAddDoc.Close;
My Visual Database → Russian → Скрипты и таблицы базы данных
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi