Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

Клиент - Сервер   Найти похожие ветки 

 
ForX   (2006-02-18 22:42) [0]

Сделал прогу учета  (БД Access), хотелось бы, что бы она работала в локалке. Реально ли сделать это приложение Клиент-Серверным, если я вообще не знаком с SQL-запросами.


 
Галинка ©   (2006-02-18 22:57) [1]

А как же ты вообще работаешь с базой без SQL-запросов?


 
ForX   (2006-02-18 23:14) [2]

Ну как....
с помощью ADOTable; Datasource; TDBGrid; а так же Append; Edit; Post; BookMark  и т.п.
______________
так можно ли использовать эту базу в локалке???


 
Галинка ©   (2006-02-19 00:13) [3]

Да скорее всего можно. SQL не такой уж и сложный. Я именно Аксесоскую базу с ним делала. Все классно работает. Но вот трехзвенку я не знаю ((( Сама хочу научиться...

Вот. Можешь почитать:

http://www.osp.ru/win2000/sql/2000/02/207.htm


 
Sergey13 ©   (2006-02-20 09:15) [4]

2ForX   (18.02.06 22:42)
> Реально ли сделать это приложение Клиент-Серверным
Нет. Клиент-Сервер предполагает наличие как клиента (твоя программа) так и сервера БД, а его у тебя нет.


 
ForX   (2006-02-20 13:14) [5]

[4]

Спасибо. Вопрос исчерпан.
:)


 
Ega23 ©   (2006-02-20 13:22) [6]


> Нет. Клиент-Сервер предполагает наличие как клиента (твоя
> программа) так и сервера БД, а его у тебя нет.


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


 
Sergey13 ©   (2006-02-20 13:33) [7]

2 [6] Ega23 ©   (20.02.06 13:22)
Ты про многозвенку?


 
ForX   (2006-02-20 13:35) [8]

[6]
Почему нет? НА мой взгляд, тут извечное недопонимание того, что сервер - это совершенно не обязательно другая физическая машина.

Поясни если можно.
Как с помощью ADO, организовать работу с одной БД нескольких машин в сети?


 
Ega23 ©   (2006-02-20 13:36) [9]


> Ты про многозвенку?


Нет, про двух-звенку. Её ведь тоже по-разному организовать можно. Если у меня программа с MS SQL-Server локальным работает (без трёх-звенки, хотя это тоже спорный вопрос), то это как? Клиент-сервер, или нет?


 
Ega23 ©   (2006-02-20 13:38) [10]


> Как с помощью ADO, организовать работу с одной БД нескольких
> машин в сети?


Элементарно. В ConnectionString указываешь один и тот же сервер и одну и ту же базу. И прекрасно работаешь. Я так уже лет 5 пишу.
Хотя сейчас действительно на трёх-звенку придётся переходить, ибо Oracle-сервер добавляется...


 
Sergey13 ©   (2006-02-20 13:40) [11]

2[9] Ega23 ©   (20.02.06 13:36)
> Если у меня программа с MS SQL-Server локальным работает
А что работает в случае БД Access?


 
Ega23 ©   (2006-02-20 13:42) [12]


> А что работает в случае БД Access?


А с каких пор Access однопользовательской БД стал?


 
Sergey13 ©   (2006-02-20 13:44) [13]

2[12] Ega23 ©   (20.02.06 13:42)
> А с каких пор Access однопользовательской БД стал?
А давно ли он стал сервером?


 
msguns ©   (2006-02-20 13:45) [14]

>Ega23 ©   (20.02.06 13:42) [12]
>А с каких пор Access однопользовательской БД стал?

А с каких многопользовательской ?


 
Sergey13 ©   (2006-02-20 13:49) [15]

2[12] Ega23 ©   (20.02.06 13:42)
Олег, ты путаешь многопользовательский доступ и сервер БД. К Парадоксу тоже можно нескольким юзерам подключиться. Но Клиент-сервером это не станет. Это файл-сервер.


 
Ega23 ©   (2006-02-20 13:49) [16]


> А с каких многопользовательской ?


Ты хочешь сказать, что я к BD Access только один коннект могу иметь????
Уточню: я access только в качестве embedded-СУБД использовал, но мне казалось, что возможности у неё гораздо больше...


 
Asail   (2006-02-20 13:53) [17]

ИМХО можно иметь сколько хочешь конектов к Access. Только управлять транзакциями и блокировками тяжеловато будет, да и трафик по сети не хилый (если клиентов много).


 
Ega23 ©   (2006-02-20 14:06) [18]


> Олег, ты путаешь многопользовательский доступ и сервер БД.
>  К Парадоксу тоже можно нескольким юзерам подключиться.
> Но Клиент-сервером это не станет. Это файл-сервер.


Как раз не путаю. Теоретически, я и к MS_SQL базе как к файлу могу подключиться (если знать структуру mdf).
Просто мне казалось, что Access МОЖЕТ как сервер работать...

Хорошо, допустим такой пример:
Есть простая база на MS SQL, на Oracle и на MS Access. По структуре базы одинаковые - таблицы, столбцы и данные. Клиент общается с БД исключительно по правилам ANSI SQL (Select/Insert/Update/Delete и никаких sp-триггеров-функций).
Есть ODBC-алиас, который в зависимости от ситуации смотрит или на одну, или на другую или на третью БД.
Клиент знает только про ODBC.
Что это тогда будет? Клиент-сервер? Трёх-звенка?

Я это к тому, что все эти градации весьма условны.


 
Sergey13 ©   (2006-02-20 14:16) [19]

2 [18] Ega23 ©   (20.02.06 14:06)
> Есть простая база на MS SQL, на Oracle и на MS Access. ...
>Что это тогда будет? Клиент-сервер? Трёх-звенка?
Для первых двух - КС. Для Аксеса - файл-сервер.


 
ForX   (2006-02-20 14:18) [20]

Насколько я успел разобраться в ИнтерВазе при изменении клиентом НД, для обновления данных у др. подключенных клиентов, сервер может выполнять команду EVENT (если не ошибаюсь), а что за это отвечает в АДО, Акцес?


 
Sergey13 ©   (2006-02-20 14:22) [21]

2[20] ForX   (20.02.06 14:18)
Ты не про это же хочешь спросить?
http://delphimaster.net/view/3-1140422891/


 
Ega23 ©   (2006-02-20 14:22) [22]


> Для первых двух - КС. Для Аксеса - файл-сервер.


Но с точки зрения клиента будет фиолетово, согласись. У меня есть абстрактная БД, я с ней работаю. А срвер это, файл или ещё какая-нить фигня - мне фиолетово...


 
Asail   (2006-02-20 14:26) [23]

Я не знаю как ODBC, но имхо в BDE при работе с локальными БД за функции сервера отвечает сам BDE. Т.е. при, например,
SELECT * FROM prdx_tbl WHERE field1="aaa"
BDE сгрузит всю таблицу prdx_tbl, найдет все записи, отвечающие условию, и вернет в клиента только эти записи. Ну, чем не Client/Server?!!
Поправте меня, если ошибаюсь.


 
Sergey13 ©   (2006-02-20 14:28) [24]

2[22] Ega23 ©   (20.02.06 14:22)
> Но с точки зрения клиента будет фиолетово, согласись.
Если клиент - это тетька бухгалтер, то согласен. 8-)

>  мне фиолетово...
А вот это странно. Почему люди сервера используют, если и с аксесом можно такие же чудеса вертеть?


 
ForX   (2006-02-20 14:32) [25]

[21]Ты не про это же хочешь спросить?

Наверное нет. Я имею ввиду, когда клиент_1 добавил запись в табл, у клиента_2 обновяться данные сразу или у клиента_2 надо переоткрывать TQuery.


 
Asail   (2006-02-20 14:33) [26]


> Почему люди сервера используют

см. [17]


 
Sergey13 ©   (2006-02-20 14:34) [27]

2[25] ForX   (20.02.06 14:32)
>Наверное нет. Я имею ввиду, когда клиент_1 добавил запись в табл, у клиента_2 обновяться данные сразу или у клиента_2 надо переоткрывать TQuery.

надо переоткрывать TQuery.


 
Asail   (2006-02-20 14:34) [28]


> у клиента_2 надо переоткрывать TQuery

надо


 
ForX   (2006-02-20 14:36) [29]

А если данные добавляются достаточно часто, мне что, Query.close -
Query.open в таймер помещать что ли?


 
Sergey13 ©   (2006-02-20 14:40) [30]

2[29] ForX   (20.02.06 14:36)
Ты задачу то опиши уже. Что за данные, какие требования?


 
ForX   (2006-02-20 14:49) [31]

Прога приема заказов такси (аналог Такси диспетчер). Несколько диспетчеров (клиентов) принимают поступающие заказы. Назначают водителей из др. НД. Заказ может быть или предварительным и текущим. предварительный содержит дату > NOW, когда Дата = Now, он становиться текущим.


 
Ega23 ©   (2006-02-20 14:50) [32]


> А если данные добавляются достаточно часто, мне что, Query.
> close -
> Query.open в таймер помещать что ли?


А ты уверен, что пользователю нужно вот это обновление?
Я бы за такое просто убил...


 
Sergey13 ©   (2006-02-20 14:57) [33]

2[31] ForX   (20.02.06 14:49)
А принимает заказ и назначает по нему водителя один человек или разные? Я так подозреваю, что один. Иначе нужна еще идентификация по диспетчерам, что бы на один заказ водил разных не искали. И зачем тогда диспетчеру информировать коллег о недооформленном заказе?


 
Asail   (2006-02-20 14:58) [34]


> Я бы за такое просто убил...

Ну зачем-же так сразу.
Ну, предположим, пользователь хочет видеть В ВИДЕ ТАБЛИЦЫ РЕАЛЬНЫЕ данные, которые могут быть внесены другими пользователями. ИМХО, можно и на таймер. Только тогда лучше через TTable и не Table.Open, a Table.Refresh.


 
ForX   (2006-02-20 15:11) [35]


> Sergey13 ©   (20.02.06 14:57) [33]
> И зачем тогда диспетчеру информировать коллег о недооформленном >заказе?


О недооформленном и не надо. Надо что бы оформленный заказ появлялся сразу у всех клиентов

> пользователь хочет видеть В ВИДЕ ТАБЛИЦЫ РЕАЛЬНЫЕ данные,
>  которые могут быть внесены другими пользователями

Чтобы после добавления, любой клиент, например, мог его завершить


 
Ega23 ©   (2006-02-20 15:16) [36]


> Ну зачем-же так сразу.
> Ну, предположим, пользователь хочет видеть В ВИДЕ ТАБЛИЦЫ
> РЕАЛЬНЫЕ данные, которые могут быть внесены другими пользователями.
>  ИМХО, можно и на таймер. Только тогда лучше через TTable
> и не Table.Open, a Table.Refresh.


Вот я сижу за компом. Смотрю на грид. И вдруг начинается переоткрытие запроса. Я его об этом не просил.
А представь ситуацию, что в наборе данных 100000 записей.

З.Ы. Если уж такое и делать, то делать надо по уму. А именно: не TTable, а TQuery. И не на таймер, а в отдельный поток.


 
Sergey13 ©   (2006-02-20 15:16) [37]

2[35] ForX   (20.02.06 15:11)
>О недооформленном и не надо. Надо что бы оформленный заказ появлялся сразу у всех клиентов
А зачем он им?


 
ForX   (2006-02-20 15:18) [38]


> Sergey13 ©   (20.02.06 15:16) [37]
>
> 2[35] ForX   (20.02.06 15:11)
> >О недооформленном и не надо. Надо что бы оформленный заказ
> появлялся сразу у всех клиентов
> А зачем он им?


Допустим диспетчер принял заказ. Через минуту человек перезванивает, и говорит, что хочет отменить заказ. А на звонок ответил другой диспетчер (телефон многоканальный).


 
Ega23 ©   (2006-02-20 15:23) [39]


> Допустим диспетчер принял заказ. Через минуту человек перезванивает,
>  и говорит, что хочет отменить заказ. А на звонок ответил
> другой диспетчер (телефон многоканальный).


Вот путь другой диспетчер нажмёт кнопочку "обновить", увидит новый заказ и снимет его.


 
Asail   (2006-02-20 15:25) [40]


> Вот я сижу за компом. Смотрю на грид. И вдруг начинается
> переоткрытие запроса

А ты и не почувствуешь обновления грида (если с помощью TTable.Refresh).
Обновленные данные только изменятся и все. Я как-то давно так делал на таблицу из 30000 записей и ничего, нормально.
Но все это верно если изменений не слишком много и таймер на очень маленький интервал не ставить (у меня тогда бал 5 сек. если не ошибаюсь).
Хотя, согласен, что в принципе решение, мягко говоря, далеко от идеала.



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

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.047 c
2-1140616856
Silica
2006-02-22 17:00
2006.03.12
Сортировка


1-1139233552
KyRo
2006-02-06 16:45
2006.03.12
Как зарегистрировать сервис


1-1139242281
Дмитрий_177
2006-02-06 19:11
2006.03.12
Событие, когда в буфере есть текст


2-1140708558
Vitalik__
2006-02-23 18:29
2006.03.12
Кодировки и системы счисления


2-1140342145
keyser
2006-02-19 12:42
2006.03.12
Сервисы в windows 98 и Me