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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.014 c
1-1138970225
ORMADA
2006-02-03 15:37
2006.03.12
Pascal Script (Rem Object)


2-1140525190
Wel
2006-02-21 15:33
2006.03.12
TImage


15-1140263782
Pazitron_Brain
2006-02-18 14:56
2006.03.12
Подскажите книгу по мотивам Half-Life


4-1134982464
Chaser
2005-12-19 11:54
2006.03.12
При закрытии программы - минимизация в трей


1-1139310580
Алексей Петухов
2006-02-07 14:09
2006.03.12
OLE Automation по примеру





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский