powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Много вопросов
37 сообщений из 37, показаны все 2 страниц
Много вопросов
    #32089333
NightSpider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В наличие: 6 компов в лакалке, 3 компа подрубаются иногда к серверу по модему ( для скидывания информации)
Цель: Создание 1 сервера с товарно-бухгалтерскими базами, на всех остальных компах стоят клиентские приложения для работы с ними.

Возникает вопрос как это организовать. Пока решил, что на одном компе будет стоять SQL сервер, на все остальные прийдется писать программное обеспечение.

Посоветуйте на чем лучше его писать для работы с SQL Server с одной стороны Delphi знаю, но с SQL Server-ом через него не работал, с другой VB – на нем не писал, за то много инфы для работы c MS SQLS?

И если у кого-то есть какие-нибудь наработки на VB или Delphi, работающие с MS SQLS и кто не боится ими поделиться скинье на vitek@rostov.ru. Буду благодарен за любую информация.
...
Рейтинг: 0 / 0
Много вопросов
    #32089444
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На чем умеешь работать, на том и работай.

Главное - использую хранимые процедуры на стороне SQL сервера. Даже для select-ов.

И если Delphi - то через ADO, никаких BDE!!!!!!!!!!!
...
Рейтинг: 0 / 0
Много вопросов
    #32089483
NightSpider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Попробую писать на дельфи.
...
Рейтинг: 0 / 0
Много вопросов
    #32089504
Sergmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще такой вариант:
Организуешь WEB сервер и под него пишешь то что называется WEB сервер апликейшенс. Пользователи заходят на WEB узел и его используют.
...
Рейтинг: 0 / 0
Много вопросов
    #32089508
NightSpider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Была идея поставить апач, а под ним организовать Web интерфейс. Не знаю на сколько лучше, но этим я никогда не занимался.
...
Рейтинг: 0 / 0
Много вопросов
    #32089616
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрю я на юзеров, как они будут работать через WEB с товарно-бухгалтерскими базами и как будут убивать того, кто такое сделал
...
Рейтинг: 0 / 0
Много вопросов
    #32089682
NightSpider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ха.ха.ха Не смешно.
...
Рейтинг: 0 / 0
Много вопросов
    #32089884
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to tygra
Главное - использую хранимые процедуры на стороне SQL сервера. Даже для select-ов.

Почему?
...
Рейтинг: 0 / 0
Много вопросов
    #32089922
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MPro> Я за него.

Потому что

а) В теле программы легче написать

.CommandText:='execute myproc :p1, :p2, :p3, :p4, :p5, :p6, :p7'

чем

.CommandText:=
'select pubdate,title,price,ytd_sales from titles '+
'where pubdate between isnull(:p1,:p6) and isnull(:p2,:p7) '+
'and title like '%'+isnull(:p3,'')+'%' '+
'and price>=isnull(:p4,0) '+
'and ytd_sales=isnull(:p5,ytd_sales) '+
'order by pubdate,title,price,ytd_sales '

(это далеко не самый крутой запрос)

б) При изменении структуры таблиц, алгоритма расчета, во многих случаях не надо перекомпилировать код программы. Лишь бы типы и количество возвращаемых значений остались прежними.

Но самое главное -
в) Если давать разрешения только на хранимые процедуры, то пользователь гарантировано сможет сделать только то, что ему разрешено. Не забывайте, что под логином обычного юзера к базе может подключится и специалист-злоумышленник с Query Analizer'ом наперевес.


NightSpider> Про дельфу+скуль тоже инфы море.
Легче выучить SQL, чем переучиваться с Delhpi на VB
...
Рейтинг: 0 / 0
Много вопросов
    #32090150
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень спорно

а) Зато перед глазами запроса нет и когда его надо поменять надо лезть в другое место а это неудобно
б) Не знаю как ваши а моя компилится несколько секунд
в)пока не до безопасности, но ограничить доступ можно просто по разнице доступа к таблицам

Как кому удобнее, я за 2 года пока ни разу не сталкивался с необходимостью процедур. Если и так есть язык программирования, то зачем мудрить с еще одним?

Вот пример моего тоже несложного запроса который я в данный момент постоянно корректирую

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
form1.adoquery_zayavki.disablecontrols;
if form1.adoquery_zayavki.active then id_goto:=form1.ADOQuery_zayavki.fieldbyname('id').asinteger;
form1.adoquery_zayavki.Close;form1.adoquery_zayavki.sql.clear;
form1.adoquery_zayavki.sql.add('select zayavki.*,materials.*,mat_name+'' ''+mat_specif as mat_fullname,object.object_name,(select name from edizm where edizm.id=materials.mat_edizm_id) as edizm_name');
form1.adoquery_zayavki.sql.add(',(select pers_fullname from pers where pers.pers_id=zayavki.pers_id_zak) as pers_zak_name,(select pers_fullname from pers where pers.pers_id=zayavki.pers_id_pokup) as pers_pokup_name');
//if form1.n3.checked then form1.adoquery_zayavki.sql.strings[ 1 ]:=form1.adoquery_zayavki.sql.strings[ 1 ]+',''post_otdel_name''=case when zayavki.perebros=0 then ''f'' when zayavki.perebros=1 then (select object_name from object where object.object_id=zayavki.object_id_perebros) end';
if not form1.n3.checked then form1.adoquery_zayavki.sql.add(',zayavki_go.*,zayavki_go.mat_price*zayavki_go.mat_kolvo_go as mat_sum,(select car_no from cars where cars.id=zayavki_go.cars_id) as car_no,''post_otdel_name''=case'+' when zayavki.perebros=0 then (select post_otdel_name from post_otdel where post_otdel.post_otdel_id=zayavki_go.post_otdel_id) when perebros=1 then (select object_name from object where object.object_id=zayavki.object_id_perebros) end'+' ,(select pers_fullname from pers where pers.pers_id=zayavki_go.pers_id_pokup_go) as pers_pokup_name') else form1.adoquery_zayavki.sql.add('');
form1.adoquery_zayavki.sql.add('');
form1.adoquery_zayavki.sql.add('from zayavki,object,materials');
if not form1.n3.checked then form1.adoquery_zayavki.sql.add(',zayavki_go');
form1.adoquery_zayavki.sql.add('where zayavki.id=zayavki.id');
if not form1.n3.checked then form1.adoquery_zayavki.sql.add('and zayavki.id=zayavki_go.zayavki_id and zayavki_go.mat_id=materials.mat_id') else form1.adoquery_zayavki.sql.add('and zayavki.mat_id=materials.mat_id');
form1.adoquery_zayavki.sql.add('and zayavki.object_id=object.object_id');

if form1.comb_cars_filter.itemindex> 0  then form1.adoquery_zayavki.sql.add('and zayavki_go.cars_id='+inttostr(get_id_from_comb(form1.comb_cars_filter)));

if form1.comb_object_filter.itemindex> 0  then form1.adoquery_zayavki.sql.add('and zayavki.object_id='+inttostr(get_id_from_comb(form1.comb_object_filter)));

if form1.comb_date_dostavki_filter.itemindex> 0  then
        begin
        form1.adoquery_zayavki.sql.add('and date_dostavki='+date_to_sqldate(strtodate(form1.comb_date_dostavki_filter.items.strings[form1.comb_date_dostavki_filter.itemindex]))+'');
        end;

form1.adoquery_zayavki.sql.add('order by 1');

//for id_goto:= 0  to form1.ADOQuery_zayavki.SQL.count- 1  do showmessage(form1.ADOQuery_zayavki.SQL.Strings[id_goto]);

form1.adoquery_zayavki.open;
...
Рейтинг: 0 / 0
Много вопросов
    #32090193
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а) А зачем запрос перед глазами? И перед глазами обычно текуший код или форма - скроллить все время? Вместо того, чтобы нажать Alt+Tab и увидеть весь запрос без лишних операторов? Это называется мазохизм. Я так раньше - давно-давно - работал.

б) А причем тут время компиляции - представь, у тебя 100 юзеров, все используют программу. Вдруг нужно поправить в запросе кое-что, ну мелочь, 1 на 1.0 заменить. И что? Ты полезешь код менять, компилить, потом всей сотне юзеров либо ехе-шник рассылать, и всем придется перезаходить по десять раз в час - если все же надо не 1.0 а 1.01 ??? Так и делаешь? Молодец. Вместо того, чтобы поменять все, что хочешь, в процедуре на сервере, а юзеры это даже не заметят.
Ну если у тебя один пользователь, и он это ты, то тогда конечно...

в) А когда будет не ПОКА, то тут то и повоешь !!!!!!!!!!

Как же ты с их необходимостью столкнешься, если ты их не используешь и вообще против. Только вот один раз так поработав, с процедурами, обратно уже дороги нет, адская мука - писать запросы в тесте программы.

Кстати, в твоем приведенном коде если не разбираться специально, отсеивая всякие form1.adoquery_zayavki.sql.add нифига не понятно .

Так что
г) Читабельность кода и легкость изменения

и
д) Хранимые процедуры - хороший и правильный стиль программирования.

Вот когда придется чей-то чужой код разбирать, тогда полностью поймешь
...
Рейтинг: 0 / 0
Много вопросов
    #32090530
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а) а чем код запроса отличается от кода программы? и то и то нужно править
б) у меня софтина с сервера запускается и никто не замечает что это уже новая версия
в) на это нет времени

В общем ничего принципиально полезного нет. Как кому удобнее так пусть и работают.
Спасибо
...
Рейтинг: 0 / 0
Много вопросов
    #32090535
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пиши на акцессе - траблов не будет
...
Рейтинг: 0 / 0
Много вопросов
    #32090538
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый кирилллллов. Отъебись
...
Рейтинг: 0 / 0
Много вопросов
    #32090560
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MPRO - ПОШЕЛ НАХУЙ!
...
Рейтинг: 0 / 0
Много вопросов
    #32090570
NightSpider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и поговорили о select-ах. Как маленькие. Зачем хамить?
...
Рейтинг: 0 / 0
Много вопросов
    #32090572
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mprO - никогда никого не оскарбляй в форуме .... адм может тебя левым пальцем правой ноги кильнуть по айпи - ты первый начал ....
...
Рейтинг: 0 / 0
Много вопросов
    #32090584
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почту за счастье если мне не дадут увидеть твою писанину, мне ####### на дороге хватает

Только если вырубят мой айпи то еще несколько тыс народа обрубят. Прокси дело хитрое;-)
...
Рейтинг: 0 / 0
Много вопросов
    #32090618
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
б) у меня софтина с сервера запускается и никто не замечает что это уже новая версия

Бааааа, да ты уже научился незаметно для пользователя закрывать программу и открывать новую версию с сервера ??????????????

Вот это программер!!!!!!!
Или ты им всем двум глаза повязками завязываешь на время смены версии??
...
Рейтинг: 0 / 0
Много вопросов
    #32090633
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra

еще один умник
а где у меня написано что она запускается немедленно? в течении дня обновляется у всех
...
Рейтинг: 0 / 0
Много вопросов
    #32090637
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что за ехидство? попытки доказать что я чтото делаю не так, что я дурак в конце концов? Вам то что от этого? Цель форума - помочь решить поставленный вопрос а мериться кто круче.
...
Рейтинг: 0 / 0
Много вопросов
    #32090638
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...не мериться....
...
Рейтинг: 0 / 0
Много вопросов
    #32090659
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в течении дня обновляется у всех

А надо сейчас и всем - чего делать, всем перезаходить по десять раз?
...
Рейтинг: 0 / 0
Много вопросов
    #32090775
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MPro> Может быть Вам это и не надо, но может быть кому-то покажется полезным.

>>а) а чем код запроса отличается от кода программы? и то и то нужно править

Код запроса пишется на одном языке программирования (директивном), код программы - на другом (процедурном). Используя метод собирания строки запроса в программе Вы теряете возможность оперативной проверки его синтаксиса.

>>б) у меня софтина с сервера запускается и никто не замечает что это уже новая версия

Бывает, как запустит у меня юзер с утра прогу, закроет кабинет - и уйдет до следующего утра. А находится он километров за 400 от меня. И другие тоже, не в одном кабиненте сидят.

>>в) на это нет времени
Не понял, у кого :)). Вредитель всегда время найдет, и когда это случится, то будет уже поздно.
Права на таблицы вещь, конечно, правильная, но вертикальный разрез ими не сделать.

P.S.
Глянул Ваш запрос.

Этот и аналогичные кусочки

Код: plaintext
1.
2.
3.
4.
select zayavki.*,materials.*,mat_name+' '+mat_specif as mat_fullname,object.object_name,
(select name from edizm where dizm.id=materials.mat_edizm_id) as edizm_name,
...
from zayavki,object,materials
...


все же надо писать так

Код: plaintext
1.
2.
3.
4.
5.
6.
select zayavki.*,materials.*,mat_name+' '+mat_specif as mat_fullname,object.object_name, 
edizm.name as edizm_name,
...
from zayavki,object,materials
join edizm 
edizm.id=materials.mat_edizm_id
...


Это будет выполнятся значительно быстрее и выглядеть вовсе не так уж страшно.

"Переменный" WHERE также можно сделать иначе. См., например, FAQ.

=============
P.S.2

Матом на форуме принято ругаться только в Трёпе, и то если это необходимо для создания художественного образа.
...
Рейтинг: 0 / 0
Много вопросов
    #32090776
Фотография judge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только стоило отвернуться, как начали матом ругаться :(
Стыдно господа, стыдно.

Alex
...
Рейтинг: 0 / 0
Много вопросов
    #32090781
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет,

Все проекты разные, поэтому 100% "правильных"
решений нет.

1.
н-шинная течнология
- клиент (браузер)
- сервер (асп, жсп, рнр, перл)
- дазабанных
...это один из хороших решений для многопол'зовател'ского
режима, особенно навырост. недостатки - средней силы
интерфасе (хтмл) и необходимост' знаний технологий
(язык и веб/аппликайшн сервер). Версии на сервере
можно менят' на-лету (ну максимум за 10 сек останова).

С "толстым" клиентом (дельфи, свинг, вб) может возникнут'
морока с апдейтами.

2.
Использование процедур на базе имеет много за и против.

Мое мнение, их можно/надо применять если:
-- разработчик - уверенный скулист
-- для логики свянанной с итегрити данный
-- для дата-напряженных процессов
-- если пл/скл программер не хочет потерять работу
-- если нет Б2Б процессов
-- для максимального использования контроля доступа
-- надо разгрузить "толстого" клиента и умен'шить и/о

против:
-- не ООП
-- в случае клиент-сервер-дб домайн бизнес процессы
намного (!) легче делат' на жаве или с#
-- чуждая среда програмирования для разработчика
аппликации на ОО : другой язык, другие тулы,
права доступа, инвалидация, контрол' версий,
деплоймент (установка) итд - все по другому.

ЙЙ
...
Рейтинг: 0 / 0
Много вопросов
    #32090957
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to admin
стыдно;-( но я както месяц назад сообщеий 5 его упрашивал чтобы он не флудил, второй раз терпения не хватило..

to cat2
а) да теряю, поэтому иногда приходится копировать его в QA и проверять, но как правильно заметил javajdbc, sql я както не воспринимаю как равноценную часть программу, а лишь как способ хранения данных. Ну так привык

б) если вы имеете в виду то что файл нельзя перезаписать, то эта проблема у меня решена, но вообще у меня все находяться в пределах 20 секунд хода


Однозначного преимущества любого из способов я так понимаю нет, но спасибо за разъяснения, может когда нибудь буду и процедуры юзать
...
Рейтинг: 0 / 0
Много вопросов
    #32090958
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2MPro
Только если вырубят мой айпи то еще несколько тыс народа обрубят. Прокси дело хитрое;-)


Не боись! :) Всегда можно узнать твой внутренний IP, и много других параметров, которые учитываются при голосованиях, статистика заходов на сайты, версии бровзера! Одним словом - вычислят! :)

А вот ругаться на сайте действительно не порядочно! Есть специально отведенные места для этого!
...
Рейтинг: 0 / 0
Много вопросов
    #32093942
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может теоритески и можно а вот практически я сомневаюсь что хватит квалификации
...
Рейтинг: 0 / 0
Много вопросов
    #32093945
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но я вообщето и не скрываюсь
...
Рейтинг: 0 / 0
Много вопросов
    #32093955
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зря. ужа давно пора. Big Brother is watching you
...
Рейтинг: 0 / 0
Много вопросов
    #32094081
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоже нарываешься?
...
Рейтинг: 0 / 0
Много вопросов
    #32094083
mpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
откуда только столько бездельников берется
...
Рейтинг: 0 / 0
Много вопросов
    #32094152
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мы тут живём

ЗЫ
ну ты даёшь
...
Рейтинг: 0 / 0
Много вопросов
    #32094338
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если файл с программой лежит на Unix сервере то тогда проблемы не будет,ак пользователи уже открывшую программу будут работать в старой, но это не помешает залить поверх новую программу и при запуске пользоваться уже новой. Хардлинки и все такое.
IMHO может и ошибаюсь, не проверял. Надеюсь что это правда,потомучто рассчитываю сделать так у себя.
...
Рейтинг: 0 / 0
Много вопросов
    #32094341
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Залить-то Вы может и зальете, но все равно надо будет оповестить юзеров, что надо перезапустить прогу.

И вдогонку. Еще два преимущества хранимых процедур.
1. ХП компилируется один раз, во время создания, а запрос сделаный в тексте каждый раз при обращении к базе. Для 10 пользователей это, конечно, не критично.
2. Если запрос собирается в проге, то из текста проги можно выловить имена таблиц и полей. Что не есть хорошо с точки зрения безопасности.
...
Рейтинг: 0 / 0
Много вопросов
    #32094981
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да о чем спор. Хранимые процедуры нужны если есть бизнес правила.
В 20 разных местах рассчитывается стоимость позиции. Можно через селект и формулу. Можно создать специальную функцию и везде ее вызывать(ну кстати бывает что нужно подсчитанную сумму из селекта получить, тут то как?). А можно создать ХП и сделать рассчет там. И тогда если изменяется правило рассчета(а всякое бывает) то ничего нигде переделывать не нужно, все селекты, все функцие все зависимые ХП выдают правильный результат и все счастливы и довольны. Да только консерватизм. Ничего уже не поделаешь.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Много вопросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]