powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Много вопросов
25 сообщений из 37, страница 1 из 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
25 сообщений из 37, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Много вопросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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