Форум: "Начинающим";
Текущий архив: 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 сек. если не ошибаюсь).
Хотя, согласен, что в принципе решение, мягко говоря, далеко от идеала.
← →
Ega23 © (2006-02-20 15:27) [41]
> А ты и не почувствуешь обновления грида (если с помощью
> TTable.Refresh).
> Обновленные данные только изменятся и все. Я как-то давно
> так делал на таблицу из 30000 записей и ничего, нормально.
>
> Но все это верно если изменений не слишком много и таймер
> на очень маленький интервал не ставить (у меня тогда бал
> 5 сек. если не ошибаюсь).
> Хотя, согласен, что в принципе решение, мягко говоря, далеко
> от идеала.
Это очень мягко говоря. Бедный сервер - лопатить каждые 5 секунд для каждого клиента 30000 записей. Просто так. Чтобы не расслаблялся...
← →
ForX (2006-02-20 15:35) [42]А может тогда просто отказаться от Акцесса, и перейти на нечто более совершенное?
← →
Sergey13 © (2006-02-20 15:38) [43]2 [42] ForX (20.02.06 15:35)
>А может тогда просто отказаться от Акцесса, и перейти на нечто более совершенное?
Наконец то! 8-)
Тебе наверное больше всего подойдет MSDE.
← →
Ega23 © (2006-02-20 15:39) [44]
> А может тогда просто отказаться от Акцесса, и перейти на
> нечто более совершенное?
>
Золотые слова!
Советую MSDE - очень хорошая штука. Ещё и бесплатная.
← →
Ega23 © (2006-02-20 15:40) [45]О, Серёга уже "посватал"... :о)
← →
ForX (2006-02-20 15:45) [46]
> Советую MSDE - очень хорошая штука. Ещё и бесплатная.
Тогда подскажите где почитать общие сведения по этой МСДЕ и можно закрывать тему
......................
← →
Ega23 © (2006-02-20 15:53) [47]
> Тогда подскажите где почитать общие сведения по этой МСДЕ
> и можно закрывать тему
MSDE - это урезанная бесплатная версия MS SQL Server. Доступна для скачивания с microsoft.com
Почитать - любая толстая книжка по MS SQL, дальше - Books OnLine - самый замечательный хелп, на мой взгляд.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.014 c