Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

26 Октябрь 2020, 07:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Добавить данные из запроса в таблицу!  (Прочитано 12267 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Rodjer
Участник
**
Offline Offline

Сообщений: 6


« Стартовое сообщение: 31 Август 2011, 22:12 »

Доброго времени суток, уже потратил несколько дней пытаясь сделать казалось бы простую вещь, имея в таблице поле Сумма и Аванс заставить ее саму высчитывать Остаток. Понял что в форме этого реализовать нельзя а только в запросах.
Долго читая разные форумы составил  SQL запрос
SELECT "Цена", "Аванс", "Цена" - "Аванс" AS "Остаток" FROM "база данных таблица"
И о чудо, он начал показывать в запросе разницу между полем А и полем Б
А как мне теперь эту разницу заставить появляться в самой таблице.
Пытался командами UPDAte и Insert, но сильно напутал в синтаксе. Пожалуйста помогите разобраться !
Записан
RFJ
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #1: 31 Август 2011, 22:47 »

Вот тут правильно написано, что так делать не следует:
http://forumooo.ru/index.php/topic,1213.msg9440.html#msg9440

хотя вполне возможно, например так:
http://community.i-rs.ru/index.php/topic,19013.msg111222.html#msg111222
Записан

Rodjer
Участник
**
Offline Offline

Сообщений: 6


« Ответ #2: 31 Август 2011, 23:01 »

Сам начинаю уже подумывать о макросе, но синтекс моя беда...
никак не получается...
Записан
RFJ
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #3: 31 Август 2011, 23:21 »

UPDATE


PS. Поле названо "summa", но вычисляется разность summa=pole1-pole2.
      Лень было менять название.

[вложение удалено Администратором]
« Последнее редактирование: 31 Август 2011, 23:24 от RFJ » Записан

Rodjer
Участник
**
Offline Offline

Сообщений: 6


« Ответ #4: 31 Август 2011, 23:46 »

да что за напасть ((((

[вложение удалено Администратором]
Записан
Rodjer
Участник
**
Offline Offline

Сообщений: 6


« Ответ #5: 31 Август 2011, 23:50 »

Вернее все работает пока это только как команда SQL то есть каждый раз надо будет вручную нажимать  SQL...
Надо что-то мне все таки наверное думать с формой и макросом... 
Записан
RFJ
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #6: 31 Август 2011, 23:55 »

UPDATE - это не запрос SQL (т.е. SELECT), а инструкция SQL.
И выполнять ее нужно из меню: Сервис - SQL.

Или, конечно, помещать в макрос и там выполнять RunSQL.
Записан

Rodjer
Участник
**
Offline Offline

Сообщений: 6


« Ответ #7: 1 Сентябрь 2011, 00:06 »

А можно чуть подробнее как сделать что бы это в макросе работало ??
Записан
RFJ
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #8: 1 Сентябрь 2011, 00:35 »

Базу 12g.odb нужно зарегистрировать (а то вывалится ошибка) и выполнить макрос:

Код:
Sub upd
' Подключаемся к базе данных
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("12g")
' С пустым именем и паролем
Connection = DataSource.GetConnection("", "")
Statement = Connection.createStatement()
' Обновляем с "вычитанием"
Statement.executeUpdate("UPDATE ""Tab12"" SET ""summa"" = ""pole1"" - ""pole2"" ")
End Sub
Записан

Rodjer
Участник
**
Offline Offline

Сообщений: 6


« Ответ #9: 1 Сентябрь 2011, 11:28 »

Спасибо огромное за макрос и за объяснения, все работает...но есть один косяк, макрос выполняет действия для всех полей кроме последнего. А нужно именно для последнего, я его повесил пока на изменения текста в разделе цена, а хорошо бы чтобы он на закрытие формы выполнялся, или куда его понадежнее повесить чтобы точно и последнее поле высчитывало разницу.
Записан
RFJ
Форумчанин
***
Offline Offline

Сообщений: 220


« Ответ #10: 1 Сентябрь 2011, 12:13 »

есть один косяк, макрос выполняет действия для всех полей кроме последнего
Вы, вероятно, пытаетесь обновить таблицу UPDATE'ом, находясь при этом на вводе данных в последнюю запись таблицы. Эта редактируемая в данный момент запись в таблицу еще не внесена, она запишется только после перехода к следующей записи или после закрытия окна редактирования таблицы.
Тот макрос с UPDATE, который я привел, обновляет сразу все записи, уже записанные (сохраненные) в таблице.

Если же Вам нужно "вычитать" в "режиме реального времени" (при редактировании записи сразу видеть результат вычитания в поле "summa"), то этому посвящен как раз пример mathnew из второй ранее приведенной ссылки http://community.i-rs.ru/index.php/topic,19013.msg111222.html#msg111222.
« Последнее редактирование: 1 Сентябрь 2011, 12:15 от RFJ » Записан

njuton89
Участник
**
Offline Offline

Пол: Мужской
Сообщений: 15



« Ответ #11: 2 Февраль 2016, 18:02 »

Если же Вам нужно "вычитать" в "режиме реального времени" (при редактировании записи сразу видеть результат вычитания в поле "summa"), то этому посвящен как раз пример mathnew из второй ранее приведенной ссылки http://community.i-rs.ru/index.php/topic,19013.msg111222.html#msg111222.

Помогите пожалуйста, может кто нибуть показать этот пример?
Ссылка не рабочая. А поучиться хотелось бы)
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 024


iMac, LibreOffice и Apache OpenOffice


« Ответ #12: 2 Февраль 2016, 21:43 »

Помогите пожалуйста, может кто нибуть показать этот пример?
Кто Нибудь всегда всё может.

Вот пример от mathnew:

* testing.odb (13.29 Кб - загружено 127 раз.)
Записан

njuton89
Участник
**
Offline Offline

Пол: Мужской
Сообщений: 15



« Ответ #13: 2 Февраль 2016, 23:28 »

Кто Нибудь всегда всё может.

Большое спасибо за помощь. Буду разбираться.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!