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

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

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

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2   Вниз
  Печать  
Автор Тема: Как одновременно использовать базу на нескольких комп  (Прочитано 10068 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Николай174
Участник
**
Offline Offline

Сообщений: 11


« Ответ #15: 20 Март 2016, 19:17 »

Цитата:
у меня есть файл базы данных
У вас есть файл базы SQLite ? Или Вы пытаетесь свою базу подцепить ?
Нет, у меня файл в open bace сделан, вроде как дает сбой при одновременно работе на разных компах, вот я и пытаюсь разобраться, может, что и не так обзываю. Я дрова на оба компа поставил, с одного на другой по сети файл прописал. А вот когда новую базу формирую, то не знаю что получается, он предлагает создать Новую базу... я тут вот и спотыкаюсь, что для чего?
Записан
idro
Участник
**
Offline Offline

Сообщений: 24


« Ответ #16: 20 Март 2016, 19:25 »

Цитата:
Пишешь  имя базы, которая в списке будет , и путь до файла где будет сама база хранится
Надо сделать как я написал. Имя , например BaseSQLite1. Путь , например, C:\temp\BaseSQLote.db (это путь пока ведет в "никуда" т.к. этого файла нет , он создаться при первом обращение к базе.  Далее, создаете новый файл Open BASE , выбираете ODBC и подтягиваете из списка BaseSQLite1 .  Потом напишите макрос и перегоните данные из старой базы в новую.


* Configuration.jpg (91.08 Кб, 595x439 - просмотрено 47 раз.)

* МастерBASE_1.jpg (75.02 Кб, 654x520 - просмотрено 44 раз.)

* МастерBASE_2.jpg (97.59 Кб, 654x520 - просмотрено 40 раз.)
« Последнее редактирование: 20 Март 2016, 19:30 от idro » Записан
Николай174
Участник
**
Offline Offline

Сообщений: 11


« Ответ #17: 20 Март 2016, 19:29 »

Цитата:
Пишешь  имя базы, которая в списке будет , и путь до файла где будет сама база хранится
Надо сделать как я написал. Имя , например BaseSQLite1. Путь , например, C:\temp\BaseSQLote.db (это путь пока ведет в "никуда" т.к. этого файла нет , он создаться при первом обращение к базе.  Далее, создаете новый файл Open BASE , выбираете ODBC и подтягиваете из списка BaseSQLite1 .  Потом напишите макрос и перегоните данные из старой базы в новую.
Лады, буду пробовать... спасибо!
Записан
Николай174
Участник
**
Offline Offline

Сообщений: 11


« Ответ #18: 20 Март 2016, 19:48 »

Цитата:
Пишешь  имя базы, которая в списке будет , и путь до файла где будет сама база хранится
Надо сделать как я написал. Имя , например BaseSQLite1. Путь , например, C:\temp\BaseSQLote.db (это путь пока ведет в "никуда" т.к. этого файла нет , он создаться при первом обращение к базе.  Далее, создаете новый файл Open BASE , выбираете ODBC и подтягиваете из списка BaseSQLite1 .  Потом напишите макрос и перегоните данные из старой базы в новую.
Лады, буду пробовать... спасибо!
При открытии "новой базы" пишет "Невозможно установить соединение с источником данных "Название базы" cjnntct failed - что бы это? Или пока не перепишу базы - так и будет??
Записан
idro
Участник
**
Offline Offline

Сообщений: 24


« Ответ #19: 20 Март 2016, 19:54 »

Неа, что то не так.
Записан
idro
Участник
**
Offline Offline

Сообщений: 24


« Ответ #20: 20 Март 2016, 19:57 »

Вот попробуйте создать таблицу ( имя базы естественно  свое пропишите) . Крыжик не забыли снять с Don`t Create DateBase ? Его можно будет поставить после создания файла,  что бы пользователи , в случае случайного удаления, стали бить тревогу, а не писать данные в новь созданный пустой файл.

Function DbConnect as Object
 Dim  DatabaseContext as Object
 Dim oDB as Object
 DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
 oDB = DatabaseContext.getByName("BasaSQLite")
 DbConnect=oDB.getConnection("","")
End Function

Sub CreateTableSotrudnik() 'создание таблицы с сотрудниками
      Dim oCon as Object
      Dim oStmt as Object
        Dim oSQL as String
        Dim oTbName as String
         oCon =DbConnect        
           oTbName = "SOTRUDNIK"
           oStmt = oCon.createStatement()
           'Создаем таблицу со списком сотрудников IF NOT EXISTS - создаем если таблицы нет, AUTOINCREMENT - автозаполнение по поряку, DEFAULT - значение по умолчанию
         oSQL = "CREATE TABLE IF NOT EXISTS " & oTbName & "(ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, FAMILIA TEXT NULL,NAME TEXT NULL,OTCHSTVO TEXT NULL," &_
         "ORGANIZATION TEXT NULL,LICNOMER INTEGER NULL,UDALENIE NUMERIC DEFAULT 0 NULL,SOT_GROUP TEXT NULL,TABNOMER INTEGER NULL)"
         oStmt.execute(oSQL)
            oCon.getTables().refresh()         
      oCon.close()
      oCon.dispose
End Sub
« Последнее редактирование: 20 Март 2016, 22:05 от idro » Записан
maksvlad
Форумчанин
***
Offline Offline

Пол: Мужской
Расположение: Иркутск
Сообщений: 158


« Ответ #21: 5 Апрель 2016, 02:45 »

Для нескольких компов выбирал между вариантами: firebird и hsql - standalone.
Пришел к выводу, что для моих целей (БД с несколькими неодновременными пользователями) лучше всего sqlite.
Есть нюансы в использовании, например, создание субформ требует определенной настройки доступа к БД (есть в хелпе по опенофису и sqlite)
Наиболее удобным менеджером для доступа к базе sqlite пока считаю sqlitestudio.
Редактирую базу в студии, а гуй-морда для пользователя в base
Записан
idro
Участник
**
Offline Offline

Сообщений: 24


« Ответ #22: 5 Апрель 2016, 05:42 »

maksvlad А как у тебя реализовано решение коллизий при одновременной записи в базу разными пользователями ? Под Access при работе с mdb, я делал обработку ошибки, таймаут, и последующую запись. Или на SQlLite   все реализовано внутри. 
Записан
maksvlad
Форумчанин
***
Offline Offline

Пол: Мужской
Расположение: Иркутск
Сообщений: 158


« Ответ #23: 5 Апрель 2016, 07:10 »

maksvlad А как у тебя реализовано решение коллизий при одновременной записи в базу разными пользователями ? Под Access при работе с mdb, я делал обработку ошибки, таймаут, и последующую запись. Или на SQlLite   все реализовано внутри. 
У меня это решено организационно: база доступна по сети, но вносят данные разные люди в разное время: то есть на запись у меня только один пользователь, а на чтение сколько угодно

обработчик не писал
SQLite предопределенное поведение "BUSY":
Цитата:
Can multiple applications or multiple instances of the same application access a single database file at the same time?

    Multiple processes can have the same database open at the same time. Multiple processes can be doing a SELECT at the same time. But only one process can be making changes to the database at any moment in time, however.
<...>
       When SQLite tries to access a file that is locked by another process, the default behavior is to return SQLITE_BUSY. You can adjust this behavior from C code using the sqlite3_busy_handler() or sqlite3_busy_timeout() API functions.
https://www.sqlite.org/faq.html#q5

В общем, для реального мультиюзера нужно брать что-нить более приспособленное: firebird, mysql, PostgreSQL - в зависимости от нужды.
Sqlite, как замена встроенной, ИМХО, идеальна: просто копируется, просто редактируется
Записан
Страниц: « 1 2   Вверх
  Печать  
 
Перейти в:  

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