Представление табличных данных не имеет большого количества функций. То, что вы хотите, может быть сделано различными способами с помощью форм, например, с помощью элемента управления таблицей. Но поскольку вам явно не нужны формы, вот один из способов, который должен работать. Этот код макроса находится в Python-UNO, но его можно адаптировать к LO Basic или Java.
from com.sun.star.datatransfer import DataFlavor, UnsupportedFlavorException
oDoc = XSCRIPTCONTEXT.getDocument()
ctx = XSCRIPTCONTEXT.getComponentContext()
oClip = ctx.getServiceManager().createInstanceWithContext(
"com.sun.star.datatransfer.clipboard.SystemClipboard", ctx)
transferable = oClip.getContents()
dataFlavors = transferable.getTransferDataFlavors()
df = DataFlavor()
df.HumanPresentableName = "Data source Table"
df.MimeType = (
'application/x-openoffice-dbaccess-table;'
'windows_formatname="Data source Table"')
try:
data = transferable.getTransferData(df)
props = data
for prop in props:
if prop.Name == "Cursor":
resultSet = prop.Value
rownum = resultSet.Row
except UnsupportedFlavorException:
msgbox("Clipboard does not have data of type {0}.".format(
df.HumanPresentableName))
Идея состоит в том, чтобы скопировать строку, а затем запустить макрос для создания новой строки, например, привязав ее к горячей клавише по вашему выбору. Объект resultSet
содержит всю информацию, необходимую для получения данных скопированной строки. Используйте инструмент самоанализа, такой как МРТ, для отображения свойств и методов объекта. Затем вам нужно будет написать код для вставки новой записи в ту же таблицу с этими значениями, за исключением создания другого первичного ключа.
В качестве справки для этого ответа я нашел PDF-файл по адресу https://fivedots.coe.psu.ac.th/%7Ead/jlop/chaps/43.%20Using%20the%20Clipboard.pdf, в котором содержится довольно много полезной информации, в том числе раздел специально для Base. Однако это очень продвинутое макрокодирование. Как было предложено ранее, нормальным решением было бы использование форм, и даже это может быть не особенно просто, поскольку макросы Base обычно сложнее, чем макросы Writer или Calc.
Еще одна идея: вы пробовали pgAdmin, чтобы увидеть, делает ли он то, что вам нужно? Он может редактировать данные таблицы, если я правильно помню.
Обязательно разместите сообщение на форуме AskLO со ссылкой на этот вопрос. Крыслингер вон там эксперт по всем вопросам Базы.
ИЗМЕНИТЬ:
Я думал, что формы могут обрабатывать только одну запись за раз.
Нисколько. Мастер форм может создать табличный элемент управления, в котором отображаются все записи. 5-й шаг мастера говорит: «Расположите элементы управления в форме», которая выглядит так, как будто выбран элемент управления «Таблица». Для меня управление столом было по умолчанию.
Формы строятся на наборах записей с одной активной активной записью, аналогично представлению табличных данных. Первичная запись может быть связана с другими записями, таблицами и запросами в единой форме. В вашем случае все, что вам нужно, это работать с одной таблицей, так что это должно быть довольно просто.
Мастер ограничен и не генерирует очень хорошие формы. Итак, что я часто делаю, так это использую мастер для создания начальной формы, а затем использую представление дизайна формы и навигатор форм, чтобы удалить большую часть того, что он создал, и добавить таблицы и элементы управления в моем собственном выборе структуры/отношений, редактируя элементы управления, чтобы указать SQL или поля, которые сообщают, как связаны данные формы.
person
Jim K
schedule
23.01.2021