Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];

Вниз

Используя ADO, подключается Access-база   Найти похожие ветки 

 
alkin   (2006-04-24 19:50) [0]

Используя ADO, подключается Access-база. Все отлично работает на локальной машине, но в процессе использования Access-базы по сети появляется проблема - изменения, внесенные одним пользователем, не видны другим пользователям (в режиме реального времени). Отчасти проблема решается переактивированием таблицы  
в момент, когда происходит модификация, а равно создание или удаление записи. Но это не очень удачный вариант, к тому же не знаю как сделать, чтобы изменения "видели" другие. Слышал, что возможно обновить конкретную запись, с которой идет работа, но к сожалению не знаю как это сделать (точнее не удается использовать UpdateRecord)  Кто знает, ПОМОГИТЕ.

P.S. Неужели, как говорит уважаемый М.Фленов в "библии Delphi",  необходимо использование SQL сервера.
Заранее благодарен всем.


 
Alarm ©   (2006-04-24 20:48) [1]

изменения, внесенные одним пользователем, не видны другим пользователям (в режиме реального времени)
Чем и как смотрим (то есть, чем не видны)?
Это необходимо уточнить, иначе сложно дать советы


 
Плохиш ©   (2006-04-25 11:09) [2]


> Это необходимо уточнить, иначе сложно дать советы

Ничего сложного, чтобы увидеть данные, их нужно как минимум заново прочитать, что делается, к примеру, закрытием и открытием набора данных. Об этом в каждой брошурке "Делфи для чайников за 21 секунду" написано.


 
balepa ©   (2006-04-25 11:38) [3]


> Плохиш ©   (25.04.06 11:09) [2]


"Делфи для чайников за 21 секунду" Ваша любимая книжка ? :)


 
Sergey13 ©   (2006-04-25 11:43) [4]

2alkin   (24.04.06 19:50)
>изменения, внесенные одним пользователем, не видны другим пользователям (в режиме реального времени).
Ну и слава Богу. Значит все нормально работает, как и должно. 8-)


 
alkin   (2006-04-25 11:49) [5]

(Изменения в реальном времени), т.е. приходится при создании,
удалении либо изменении записи в БД перечитывать базу (вот так):

//------------------------------------------------
     DataModule.ADOConnection.Close;
     DataModule.ADOConnection.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;"+
     "Data Source=" + BasePath + ";";
     DataModule.ADOConnection.Connected:= True;
     DataModule.ADOConnection.Open;
     DataModule.BookTable.Active:=True;
     DataModule.ADOTable.Active:=True;
//------------------------------------------------

А есть ли другая возможность (НЕ ПЕРЕЧИТЫВАТЬ ВСЮ БАЗУ) ?


 
balepa ©   (2006-04-25 11:52) [6]

Может Update ?


 
Sergey13 ©   (2006-04-25 11:53) [7]

2[5] alkin   (25.04.06 11:49)
>А есть ли другая возможность (НЕ ПЕРЕЧИТЫВАТЬ ВСЮ БАЗУ) ?
Конечно. Можно перечитать отдельную таблицу, с которой работаешь. А еще лучше переоткрыть запрос (это для Аксес не актуально вроде).


 
sniknik ©   (2006-04-25 11:59) [8]

> А есть ли другая возможность (НЕ ПЕРЕЧИТЫВАТЬ ВСЮ БАЗУ) ?
конечно есть... можно перечитывать только ту часть данных которая необходима для работы (сделать прогу на нормальной клиент серверной логике).
можно даже одну запись перечитать, если знать какую (скажеш как ты это собираешся узнавать, скажу как), но только измененную, не новую.

> P.S. Неужели, как говорит уважаемый М.Фленов в "библии Delphi",  необходимо использование SQL сервера.
желательно, но вовсе не по тем причинам что ты привел, чтобы у всех в реал тайме появлялись изменения сделанные каким нибудь юзером и SQL сервер не поможет.


 
sniknik ©   (2006-04-25 12:03) [9]

> это для Аксес не актуально вроде
актуально, jet работает аналогично sql серверу, через ядро (COM) которое можно считать псевдо сервером, со всеми правилами работы с sql сервером (правда у него есть еще режим "прямого" доступа, там будет по другому).


 
Sergey13 ©   (2006-04-25 12:08) [10]

2 [9] sniknik ©   (25.04.06 12:03)
Т.е. если кинуть файл на сетевой диск, то jet будет работать как клиент-сервер - т.е. качать по сети только нужное?


 
sniknik ©   (2006-04-25 12:19) [11]

точно также как и файл, если открыть по сети установить указатель в конец и считать пару байт... он весь же он на клиента не перекачается. только нужное + служебная инфа.
у jet - а правда осложняется тем что в служебную еще и индексы входят, и тд. (черт его знает чего ему еще там нужно будет), т.что трафика конечно пожрет больше чем с sql сервером на тойже машине в сети что и база (нормальный вариант), но всю таблицу при запросе всетаки качать не будет...


 
Sergey13 ©   (2006-04-25 12:34) [12]

2[11] sniknik ©   (25.04.06 12:19)
>у jet - а правда осложняется тем что в служебную еще и индексы входят
Я к этому и вел. Тем более, что их надо обновлять постоянно.

>но всю таблицу при запросе всетаки качать не будет...
Не во всех случаях, ИМХО. Если запрос простой, типа where id=:id то да. А если типа с агрегатами да с условиями на агрегаты, то скорее всего всю закачает.


 
sniknik ©   (2006-04-25 12:50) [13]

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


 
alkin   (2006-04-26 15:54) [14]

В том то и дело, что я не делаю выборки по запросу. Точнее у меня всегда видна ВСЯ база, и уже ее я могу отфильтровать, задать абсолютно любой поиск, сделать выборку по интересу и т.д. Но при внесении изменений в базу перечитываю на других компьютерах опять же ВСЮ базу, в момент сохранения изменений. Может кто даст конкретные строки кода, буду признателен.
Использовать SQL запросы пока не вижу необходимости, поскольку опять же работаю со всей базой сразу, и скорость работы устраивает.
P.S. для balera - что Вы имели в виду Update? Не все так просто, как кажется.
А при перечитывании таблицы, их у меня всего две, результат по времени практически такой же.


 
sniknik ©   (2006-04-26 17:34) [15]

зачем же тогда спрашивать
> А есть ли другая возможность (НЕ ПЕРЕЧИТЫВАТЬ ВСЮ БАЗУ) ?
если настаиваеш на своем методе который основан на чтении/перечтении "ВСЕЙ базы".

> Может кто даст конкретные строки кода
конкретного кода к чему, и чего? делать логически правильно ты отказываешся, а по извращенной логике нормально не напишеш.

> результат по времени практически такой же.
ну а зачем лучше то? строчкой ранее идет
> и скорость работы устраивает.

p.s. определись сначала чего хочеш.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.018 c
8-1134739183
CasperR
2005-12-16 16:19
2006.05.14
Формат DJVU


1-1144304985
Alex_C
2006-04-06 10:29
2006.05.14
Событие при активации приложения?


2-1145774100
manevil
2006-04-23 10:35
2006.05.14
Прозрачная панель


15-1145462574
Piter
2006-04-19 20:02
2006.05.14
Нужна программка, которая максимально нагружает диск :)


11-1126105615
Riton
2005-09-07 19:06
2006.05.14
urgent: kol+freelibrary - access violation





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский