Есть база, но работает только на одном из комп-ов, есть ли возможность заставить работать на нескольких "машинах"?
Цитата: Николай174 от 18 марта 2016, 16:14Есть база, но работает только на одном из комп-ов, есть ли возможность заставить работать на нескольких "машинах"?
А что именно не работает? Где находится база? Какие оси и офисы?
Цитата: rami от 18 марта 2016, 18:23
Цитата: Николай174 от 18 марта 2016, 16:14Есть база, но работает только на одном из комп-ов, есть ли возможность заставить работать на нескольких "машинах"?
А что именно не работает? Где находится база? Какие оси и офисы?
База то работает, но если в сети одновременно попытаться на двух компах работать. то на одном выдает ошибку. Есть ли возможность заставить работать на нескольких "машинах"?
Офис openoffice.org 4.1, win 10
Насколько я знаю база в OpenOffice однопользовательская.
Цитата: rami от 19 марта 2016, 10:19
Насколько я знаю база в OpenOffice однопользовательская.
Понял. Тогда чисто "по-русски" - сделаю несколько копий под разными именами баз, одну буду обновлять, а другие периодически копировать через "охранить как..." (главное, чтобы обновления вносились только в одну базу).
Остаётся только поблагодарить!
How do I setup multi-user 'server mode' access to my HSQL database? (https://wiki.openoffice.org/wiki/FAQ_(Base)#How_do_I_setup_multi-user_.27server_mode.27_access_to_my_HSQL_database.3F)
Лучший вариант - поднять сервер MySQL, и подключиться к нему из Base.
То есть данные будут на сервере, а формы, отчёты - в odb файле.
Цитата: Yakov от 19 марта 2016, 12:07
Лучший вариант - поднять сервер MySQL, и подключиться к нему из Base.
То есть данные будут на сервере, а формы, отчёты - в odb файле.
Такой вариант тоже рассматривается, но тут надо с сисадмином работать. Пока база в экспериментальной эксплуатации.
Однако также, благодарю за участие!
Можно через ODBC SQLite подключить. Работает без сервера, многопользовательская, хранит данные в одном файле.
Цитата: idro от 20 марта 2016, 13:20
Можно через ODBC SQLite подключить. Работает без сервера, многопользовательская, хранит данные в одном файле.
Мне надо работать в openoffice bace. В этом всё обстоит дело. Есть версия?
Цитата: Николай174 от 20 марта 2016, 13:58Мне надо работать в openoffice bace. В этом всё обстоит дело. Есть версия?
Вы и будете работать в Base, однако сами данные будут в подключаемой базе данных, с которой возможна одновременная работа
Цитата: kompilainenn от 20 марта 2016, 16:02
Цитата: Николай174 от 20 марта 2016, 13:58Мне надо работать в openoffice bace. В этом всё обстоит дело. Есть версия?
Вы и будете работать в Base, однако сами данные будут в подключаемой базе данных, с которой возможна одновременная работа
Я уже поставил SQLite_64 ,но не пойму как их прописать в open, не вижу кнопок к выбору. В примере-то Ася дается... Может прямо по-шагово подскажете?
Попробую подсказать :) Правда не знаю как в форуме картинки вставлять, поэтому на пальцах . Если ODBC драйвер поставил то в панели управления - Администратор источника ODBC в системном DSN появится SQLite3 Datasource . Переходишь на Пользовательский DSN , нажимаешь добавить , выбираешь из списка SQLite3 ODBC . Пишешь имя базы, которая в списке будет , и путь до файла где будет сама база хранится ( так как файла еще нет , то пишешь путь ручками) . Отмечаешь крыжиком OEMCP - чтобы с кириллицей работала, Sync.mode выставляешь FULL (надежность превыше скорости :) ) . Крыжик на Don`t create database пока не ставишь (файл базы автоматически создастся при первом обращении).
Переходишь в BASE , создаешь новый файл , выбираешь ODBC и кликаешь в то название под котором ты прописал драйвер. В конце концов у тебя появится промежуточный файл BASE. BASE будет думать в нем база. Для работы с SQLite я рекомендую SQLiteStudio. Средства BASE не всегда корректно отображает данные .
Драйвер ODBC брать тут http://www.ch-werner.de/sqliteodbc/
Цитата: idro от 20 марта 2016, 18:00
Попробую подсказать :) Правда не знаю как в форуме картинки вставлять, поэтому на пальцах . Если ODBC драйвер поставил то в панели управления - Администратор источника ODBC в системном DSN появится SQLite3 Datasource . Переходишь на Пользовательский DSN , нажимаешь добавить , выбираешь из списка SQLite3 ODBC . Пишешь имя базы, которая в списке будет , и путь до файла где будет сама база хранится ( так как файла еще нет , то пишешь путь ручками) . Отмечаешь крыжиком OEMCP - чтобы с кириллицей работала, Sync.mode выставляешь FULL (надежность превыше скорости :) ) . Крыжик на Don`t create database пока не ставишь (файл базы автоматически создастся при первом обращении).
Переходишь в BASE , создаешь новый файл , выбираешь ODBC и кликаешь в то название под котором ты прописал драйвер. В конце концов у тебя появится промежуточный файл BASE. BASE будет думать в нем база. Для работы с SQLite я рекомендую SQLiteStudio. Средства BASE не всегда корректно отображает данные .
Драйвер ODBC брать тут http://www.ch-werner.de/sqliteodbc/
Видимо - не дано... Драйвер стоит, далее Администрирование... у меня есть файл базы данных я его и прописываю в "Database Name", далее крыжик и FULL... Да и все, далее не понял. Правда я на обе "банки" поставил драйвера, попробовал одновременно по сети работать с базой, вроде работает, а может кажется., не знаю... Может и зря 64-bit ставить драйвер пытаюсь?
Цитироватьу меня есть файл базы данных
У вас есть файл базы SQLite ? Или Вы пытаетесь свою базу подцепить ?
Цитата: idro от 20 марта 2016, 19:11
Цитироватьу меня есть файл базы данных
У вас есть файл базы SQLite ? Или Вы пытаетесь свою базу подцепить ?
Нет, у меня файл в open bace сделан, вроде как дает сбой при одновременно работе на разных компах, вот я и пытаюсь разобраться, может, что и не так обзываю. Я дрова на оба компа поставил, с одного на другой по сети файл прописал. А вот когда новую базу формирую, то не знаю что получается, он предлагает создать Новую базу... я тут вот и спотыкаюсь, что для чего?
ЦитироватьПишешь имя базы, которая в списке будет , и путь до файла где будет сама база хранится
Надо сделать как я написал. Имя , например BaseSQLite1. Путь , например, C:\temp\BaseSQLote.db (это путь пока ведет в "никуда" т.к. этого файла нет , он создаться при первом обращение к базе. Далее, создаете новый файл Open BASE , выбираете ODBC и подтягиваете из списка BaseSQLite1 . Потом напишите макрос и перегоните данные из старой базы в новую.
Цитата: idro от 20 марта 2016, 19:25
ЦитироватьПишешь имя базы, которая в списке будет , и путь до файла где будет сама база хранится
Надо сделать как я написал. Имя , например BaseSQLite1. Путь , например, C:\temp\BaseSQLote.db (это путь пока ведет в "никуда" т.к. этого файла нет , он создаться при первом обращение к базе. Далее, создаете новый файл Open BASE , выбираете ODBC и подтягиваете из списка BaseSQLite1 . Потом напишите макрос и перегоните данные из старой базы в новую.
Лады, буду пробовать... спасибо!
Цитата: Николай174 от 20 марта 2016, 19:29
Цитата: idro от 20 марта 2016, 19:25
ЦитироватьПишешь имя базы, которая в списке будет , и путь до файла где будет сама база хранится
Надо сделать как я написал. Имя , например BaseSQLite1. Путь , например, C:\temp\BaseSQLote.db (это путь пока ведет в "никуда" т.к. этого файла нет , он создаться при первом обращение к базе. Далее, создаете новый файл Open BASE , выбираете ODBC и подтягиваете из списка BaseSQLite1 . Потом напишите макрос и перегоните данные из старой базы в новую.
Лады, буду пробовать... спасибо!
При открытии "новой базы" пишет "Невозможно установить соединение с источником данных "Название базы" cjnntct failed - что бы это? Или пока не перепишу базы - так и будет??
Неа, что то не так.
Вот попробуйте создать таблицу ( имя базы естественно свое пропишите) . Крыжик не забыли снять с 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
Для нескольких компов выбирал между вариантами: firebird и hsql - standalone.
Пришел к выводу, что для моих целей (БД с несколькими неодновременными пользователями) лучше всего sqlite.
Есть нюансы в использовании, например, создание субформ требует определенной настройки доступа к БД (есть в хелпе по опенофису и sqlite)
Наиболее удобным менеджером для доступа к базе sqlite пока считаю sqlitestudio.
Редактирую базу в студии, а гуй-морда для пользователя в base
maksvlad А как у тебя реализовано решение коллизий при одновременной записи в базу разными пользователями ? Под Access при работе с mdb, я делал обработку ошибки, таймаут, и последующую запись. Или на SQlLite все реализовано внутри.
Цитата: idro от 5 апреля 2016, 05:42
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, как замена встроенной, ИМХО, идеальна: просто копируется, просто редактируется