On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Пост N: 70
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 06.07.10 13:17. Заголовок: Открытие баз RDD CDX


Доброго времени суток всем!
Подскажите, гуру, открываю несколько баз:
use base1 new
use base2 new
и т.п.
Свободные рабочие области при "new" выбираются начиная с 1 или в произвольном порядке (как карта ляжет). Если например у меня открыты 2 базы в 33 и 44 области, а я делаю use ... new, то база в 1 области откроется?
Пасиб!


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 13 [только новые]


Администратор




Пост N: 1561
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.07.10 13:54. Заголовок: Судя по функции hb_r..


Судя по функции hb_rddSelectFirstAvailable( void ), РО просматриваются с единицы, т.е. 1-я область, если она не используется, откроется

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 71
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 06.07.10 14:33. Заголовок: СпасиБО! Вразумили....


СпасиБО! Вразумили...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1396
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.07.10 18:41. Заголовок: Loach пишет: Подска..


Loach пишет:

 цитата:
Подскажите, гуру, открываю несколько баз:
use base1 new
use base2 new
и т.п.



А зачем к базе обращаться по SELECT(1) 2, 3 и т.д.

Используй АЛИАС базы:
USE base1 ALIAS Main_BASE new и тому подобное...

А обращаться уже:
SELECT Main_BASE



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1791
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.07.10 19:22. Заголовок: Andrey пишет: Испол..


Andrey пишет:

 цитата:
Используй АЛИАС базы


+1

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 72
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 13.07.10 15:14. Заголовок: Andrey пишет: Испол..


Andrey пишет:

 цитата:
Используй АЛИАС базы:


Не, дело не в этом. Кстати, может еще у кого какие мысли будут по поводу следующего:
Я проверяю периодически (пишу в протокол) какие базы у меня открыты в данный момент. Делаю это так:

Function Bazy()
local otvet:='*', n
for n = 1 to 256
if ! Empty( Alias( n ) )
otvet += Str( n, 3 ) + ": " + If( Select() == n,"=>", "" ) + alltrim(Alias( n ))+"*"
endif
next
return otvet

Если я знаю, что больше 50 баз я не открываю, то можно естественно for n = 1 to 50 Вот и все.
Может кто-нибудь решал это дело по-другому?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 22
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 13.07.10 15:22. Заголовок: А если при открытии ..


А если при открытии базы писать инфу про это в отдельную базу и при закрытии тоже, то получиться, что мы имеем любой отчет в данный момент времени - кто, когда и тд ...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 73
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 13.07.10 15:34. Заголовок: AlexMyr пишет: писа..


AlexMyr пишет:

 цитата:
писать инфу про это в отдельную базу


Может конечно это и выход... Просто я открытыми стараюсь держать минимум баз. Открываю и закрываю вспомогательные походу работы. Иногда естественно закрывать забываю и ...
А так сделал протокольчик работы пользователя. В начале, конце и ключевых моментах каждой функции - запись в протокол, чего он там делает, чего воротит, и заодно, какие базы открыты в текущий момент.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.07.10 17:16. Заголовок: Динамическое открыти..


Динамическое открытие/закрытие таблиц вносит существенные тормоза в работу. Причем не всегда можно в нужный момент открыть таблицу, если кто-то надумал ее сжать, или еще для чего-то захватить монопольно. Поэтому для всех проектов у меня создается список таблиц с индексами (DISTR.DBF), по которому выполняется открытие и закрытие таблиц стандартной процедурой - с проверкой корректности индексов, шифрованием, корректировкой уникальных кодов.

Спасибо: 0 
Цитата Ответить
постоянный участник




Пост N: 1437
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.07.10 18:47. Заголовок: wad1 пишет: шифрова..


wad1 пишет:

 цитата:
шифрованием,



А вот здесь поподробней пожалуйста....

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1811
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.07.10 16:12. Заголовок: wad1 пишет: с прове..


wad1 пишет:

 цитата:
с проверкой корректности индексов


Хотелось бы взглянуть на твою процедуру проверки.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 21.07.10 09:41. Заголовок: Абсолютно точно пров..


Абсолютно точно проверить индексы не просто. У нас применяются быстрые проверки, которые во многих случаях помогают. Но не всегда. Что проверяется:
1. Дата модификации DBF-файла реальная и зафиксированная в DISTR.DBF (при корректном закрытии таблиц последним пользователем эта дата запоминается). При последующем входе в программу первого пользователя (если сумел открыть таблицу монопольно, значит первый) проверяются эти даты. Если не совпадают, то автоматическая переиндексация. Естественно при открытии индексов подменяется блок обработки ошибок. Если случился облом, индекс уничтожается и создается заново. REINDEX иногда не исправляет ситуацию. Индексы открываются отдельно от DBF-файлов: если испорчен DBF, автоматически сделать что-то нельзя (не умеем).
2. Проверяется последний уникальный код таблицы, если он есть. Физически он должен находиться в конце таблицы, хотя не обязательно последним. Под концом понимается последние 10 записей. Если это не так, значит индекс скорее всего некорректный.
Код фиксируется в DISTR, в строке с индексом по соответствующему полю. Это помогает вычислять следующий код при добавлении записей одновременно с нескольких станций.
Шифрование. В DISTR есть поле, в котором указывается необходимость шифрования таблиц. Если признак есть, то открытие выполняется с расшифровкой. Дальнейшая работа с таблицей выполняется как обычно.

Спасибо: 0 
Цитата Ответить
постоянный участник




Пост N: 1439
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.07.10 11:16. Заголовок: wad1 пишет: то откр..


wad1 пишет:

 цитата:
то открытие выполняется с расшифровкой. Дальнейшая работа с таблицей выполняется как обычно.



А пример можно ?

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 21.07.10 16:45. Заголовок: Пример чего? Как отк..


Пример чего? Как открыть таблицу с шифрованием? Об этом неоднократно здесь уже писали.
Примерно так:
******************
static function OpenTable(cDatabase,cAlias,lShared,lPassWord)
******************
lShare := !empty(lShared)
lReadOnly := !empty(lReadOnly)

dbUseArea(.T.,,cDatabase,cAlias,lShared,lReadOnly)
if lPassWord
sx_SetPass(SlPassWord(),1)
endif
if lPassWord.and.( Sx_TableType() = 1 )
nalert("Внимание!;Таблица "+cDatabase+" должна быть зашифрована!")
BREAK
endif
if !lPassWord.and.( Sx_TableType() = 2 )
nalert("Внимание!;Таблица "+cDatabase+" не должна быть зашифрована!")
BREAK
endif
return

****************
function SlPassWord // Получить пароль
****************
return "PRIVETHARBOUR"


Таблицу перед таким открытием нужно зашифровать. У нас для этого есть утилита, но действие она делает простое:
use mtable
sx_DBFencrypt(SLPassWord())

Спасибо: 0 
Цитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет