|
|
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
Акс кваксMS Access для подобной поделки вполне подходит, надо только правильно всё делать, для этого нужны определённые знания . Для начала выбрать структуру Основы проектирования складской БД (v. 2) , база отдельно, интерфейс и логика отдельно тоже возможно для MS Access и даже желательно, интерфейс на MS Access база на MySQL и т.п. тоже приветствуется и т.д.. Вы просто не умеете его готовить :) как впрочем и 1С, а посему прекращайте метаться, выбирайте платформу и приступайте к изучению основ баз данных а затем к изучению платформы разработки и будет вам счастье. Как второй вариант - платить тити-мити стороннему разработчику. Так за знаниями сюда и пришел. Можно конечно. Только на мой взгляд, это забивание гвоздей микроскопом. На MS Access обычно клиента по MS SQL и пишут. Еще под Opacle видел, но как сказали сами разработчики, это знатное извращение, но заказчик так захотел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2013, 23:40 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
kot275Я как-то размыто вопрос задал. Попробую немного его сфокусировать.Это называется "сфокусировать"???? kot275 Нужен программный код на котором будет написано общение пользователя с БД. Так называемое система управлении базой данных(СУБД).Нет. СУБД это та часть которая хранит данные. Общение с пользователем это уже интерфейс. kot275 А в общезаводской системе, я постоянно выгребаю дубли. Вот чтобы дублей не было - на стороне СУБД делается проверка, и если новая запись это дубль, то ругаемся и не записываем. Почему на стороне СУБД а не в GUI? Потому что GUI'ев у тебя может быть много - классическое десктопное приложение, веб-сайт, мобильное приложение на телефоне и все это в нескольких версиях... Можно конечно и в GUI такую проверку повторить, но это не всегда возможно. Хотя если возможно, то лучше сделать - удобнее для пользователя. А в СУБД это обычно оформлено как триггер на таблице. А если вставка делается не напрямую в таблицу а через хранимую процедуру, то можно проверку в ХП положить. Хотя триггер все равно будет очень полезен (особенно для тех кто полезет в базу минуя ХП). kot275простой запрос к серверу БД, он возвращает массив данных(или по научному курсор),Нет. Массив данных возвращаемый СУБД и курсоры это две очень разные вещи. Первое это несколько строк, а второе это указатель на одну строку. Не надо их путать. kot275 дальше мне надо нарисовать интерфейс. По первому варианту, я бегу в цикле по полученному набору данных и рисую картинку пользователю. По второму варианту, мне рисует это сам компонентs(это в Delphi например), ну там DataSet+dbGrid разные. Думается там тоже цикл, но утверждать не берусь,Да, там тоже цикл, но.... Обычно там цикл основанный на курсоре, но каждый курсор это открытый запрос к СУБД. Вполне работоспособно если доступ к базе идет в монопольном режиме и если ты показываешь только одну табличку за раз. Если надо делать многопользовательское приложение или показывать несколько табличек на экране одновременно - дельфевые компоненты становятся чрезвычайно неудобными. Так что лучше вытягивать весь датасет в массив в памяти, а потом уже рисовать его на экране. Представь что тебе надо работать с архивом. Архивом заведует специальный человек - архивариус. Ты ему говоришь: пойди в архив и принеси папки с делами за прошлый месяц. Он идет, копирует все дела за прошлый месяц и плюхает тебе на стол стопку папок с копиями. Ты в этой стопке копаешься, что-то делаешь. А в это время твой коллега отправляет архивариуса за делами за тот-же самый месяц - архивариус снова делает копии и отдает твоему коллеге его стопку. А если тебе нужно сделать изменение, ты пишешь бумажку и отдаешь ее архивариусу с командой: положи ее в папку номер АБВГД или убери из папки ФЫВА бумажку с заголовком ЙЦУКЕН. Это метод работы с массивами данных которые ты вытянул из базы целиком прежде чем работать с ними. А теперь представь что ты говоришь архивариусу: дай первую папку за прошлый месяц - арихвариус бежит в архив приносит тебе папку и стоит возле твоего стола пока ты не вернешь ее, потом бежит за второй папкой за прошлый месяц... и на каждую папку ты даешь отдельную команду и архивариус бегает в архив и при этом приносит тебе не копию, а саму папку. Добавить или поправить какую-нибудь бумажку в этой папке становится очень просто.... Но в это время твой коллега сидит и скучает, потому что папки по одной появляются у тебя на столе. И архивариус бегает по твоим заказам и у него нету времени выслушать заказ твоего коллеги. Это метод работы с курсором. kot275Особо умные DataSet помимо явно прописанного запроса еще и генерируют свои. Например, вытаскивают из метаданных БД название полей, автообновляют набор данных.Ни в коем случае не используй их! Это тот случай когда архивариус не только стоит возле твоего стола, но еще и советует как именно надо читать эти папки. А если ты читаешь их "не так", то следует немедленный удар дубинкой по голове. kot275 Циклы ведь вещь медленная.С чего это вдруг? Медленны не циклы, а то что внутри них. Сам по себе цикл это всего-лишь команда "повтори!" а вот что именно надо повторять - вот это уже может быть быстрым или медленным. kot275 Везде пишут циклы медленные и лучше обойтись без них.Это писали идиоты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 05:34 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
kot275На MS Access обычно клиента по MS SQL и пишут. Еще под Opacle видел, но как сказали сами разработчики, это знатное извращение, но заказчик так захотел.Любое использование MS Access это извращение. MS Access это прямой идеологический потомок однопользовательских систем типа FoxPro, Paradox, Clipper, etc. Но если эти СУБД изначально задумывались и работали как однопользовтельские СУБД. То MS Access это чрезвычайно тормозная однопользовательская база, в многопользовательском окружении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 05:42 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
White OwlЛюбое использование MS Access это извращение. MS Access это прямой идеологический потомок однопользовательских систем типа FoxPro, Paradox, Clipper, etc. Но если эти СУБД изначально задумывались и работали как однопользовтельские СУБД. То MS Access это чрезвычайно тормозная однопользовательская база, в многопользовательском окружении. Вот только не надо гнать на Access, и в случае ТС kot275Вот захотел написать небольшую учёную программу по рабочему оборудованию и комплектующим. Для простоты, скажу так, нечто похожее на складской учет. Access самое оно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2013, 17:21 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
Проблемы с большими выборками были и будут всегда. Это определяется только качеством используемых компонентов и качеством проектирования самого приложения. Например, у меня в одной выборке было до 90 тыс записей и операции фильтрации и сортировки шли очень туго. Частично решить проблему удалось заменой компонентов доступа к данным. Новые компоненты работали с клиентскими библиотека СУБД напрямую, а потому на порядок быстрее. Тут надо смотреть в сторону серверных курсоров, постраничных выборок и уловок позволяющих сократить объем выборок изначально. Например, выборка может выполняться сервером приложений или самой СУБД, а клиенту выдавать частями только чтобы заполнить пространство на экране. Только при этом становятся бесполезными многие фишки компонентов представления данных. Например, сортировку по щелчку в заголовок колонки они уже сами сделать не могут, составить список уникальных значений для быстрого фильтра уже не могут, корректно подсчитать количество записей тоже не могут и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 11:55 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
Акс квакс, Access - часть монстро подобного офисного пакета с массой глюков за неприличные деньги. Делать на его основе что либо не для личного использования это ставить своё предприятие в зависимость от этого продукта. Вообще для подобных ситуаций и придуманы различные платформы вроде 1С, Tomcat и тому подобные Application Servers. Там уже есть готовые сервер приложений, клиентская часть и большинство технических тонкостей взаимодействия между ними и СУБД решены. Остаётся только заложить свою бизнес логику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 12:06 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
kot275Дело в том что 1С нелюбимая. Да и дорогое это удовольствие. По поводу медленно. Ну нет у меня дата-центра своего, и крутой серверной стойки. А в файловом варианте нормально не больше десятка пользователей тянет. Да и фигня получается. 8,3 нормально сама веб интерфейс рисует уже. Но я для себя не вижу перспектив в 1С. На счёт дорого это надо сравнивать с другими. Тот же Oracle стоимость миллионами исчисляет, а про SAP даже вспоминать не стоит. 1С очень не плохой выбор. Особенно с выходом 8.3 которая уже работает с PostgreSQL без всяких 1С-патчей и может работать вся в Linux, а не только сервер. А это позволяет сэкономить на лицензиях Windows Server и SQL Server. Там как раз на 1С с 20-30 клиентскими лицензиями и наберётся. Плюс ряд уже готовых и обкатанных решений, например, та же Бухгалтерия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 12:20 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
Max_ХацкерАкс квакс, Access - часть монстро подобного офисного пакета с массой глюков за неприличные деньги. Делать на его основе что либо не для личного использования это ставить своё предприятие в зависимость от этого продукта. Вообще для подобных ситуаций и придуманы различные платформы вроде 1С, Tomcat и тому подобные Application Servers. Там уже есть готовые сервер приложений, клиентская часть и большинство технических тонкостей взаимодействия между ними и СУБД решены. Остаётся только заложить свою бизнес логику. В одной конторе, где я сисадминю, есть программист 1С и используется его самописная конфигурация. Это я к тому что в зависимость предприятие можно поставить на любой продукт, пока жив и здоров разработчик. А потом что? Кому то придётся в его коде ковыряться, да ещё в нашей глуши, что практически не реально. В общем это не аргумент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 16:53 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
Прошу прекратить обсуждение 1С в этой ветке. 1С это для заработка, для ученых систем. Для хобби, и для себя не годится. Дорого и функционал ограниченный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 18:40 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
Max_Хацкерразличные платформы вроде 1С, Tomcat и тому подобные Application Servers Брадт, 1С и Tomcat не пишут через запятую. Это просто анреал. Это как жёлтое с квадратным. Надеюсь мысль донёс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 18:51 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
White Owl, Спасибо за подробный ответ. Переварю с более толковыми вопросами приду, а то видать мыслей по древу растекаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 21:40 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
White OwlЛюбое использование MS Access это извращение. MS Access это прямой идеологический потомок однопользовательских систем типа FoxPro, Paradox, Clipper, etc. Но если эти СУБД изначально задумывались и работали как однопользовтельские СУБД. То MS Access это чрезвычайно тормозная однопользовательская база, в многопользовательском окружении. Это утверждение неверно. У аксеса много недостатков, есть очень яркие преимущества, но в многопользовательском окружении она "тормозит", если ее неправильно использовать. Вы наверняка мало знаете про аксесс АДП на базе МС СКЛ. Так что для определенных случаев использование аксес - оптимальный выбор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 13:22 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
П-ЛWhite OwlЛюбое использование MS Access это извращение. MS Access это прямой идеологический потомок однопользовательских систем типа FoxPro, Paradox, Clipper, etc. Но если эти СУБД изначально задумывались и работали как однопользовтельские СУБД. То MS Access это чрезвычайно тормозная однопользовательская база, в многопользовательском окружении. Это утверждение неверно. У аксеса много недостатков, есть очень яркие преимущества, но в многопользовательском окружении она "тормозит", если ее неправильно использовать. Вы наверняка мало знаете про аксесс АДП на базе МС СКЛ. Так что для определенных случаев использование аксес - оптимальный выбор.Да, про "аксесс АДП" я не знаю ничего. Зато я знаю о том как пишутся клиенты на других фреймфорках. И да, в моей практике был один клиент к большой СУБД написанный на Акцессе и пара баз целиком основанных на Акцессе... По моему личному мнению, оптимальным выбором MS Access будет только для одной задачи: есть много данных в формате MS Access и надо с ними поиграться, а в нормальную базу переливать данные лениво. Во всех остальных случаях использование MS Access это извращение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 19:39 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
авторПроблемы с большими выборками были и будут всегда Это от лукавого, не нужны гибкие интерфесы НСИ прямо вот для 1 миллиона строк. Инертность мышления пользователей. Привычка работать в экселе или еще что. Нужна просто "политическая воля начальника" - ограничить 30 строками выборку, и все. Хочешь точнее - уточняй критерии поиска. Ибо нет необходимости "работать" одновременно со всеми строками. Работают в 1 момент времени только с несколькими (1,2 ну 10). В выгружать весь склад в интерфейс - это безобразие, которое влечет за собой кучу проблем. Еще хорошо придумать хорошую иерархию, где на каждом уровне будет не сильно много элементов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 18:25 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
Мысль верная, но реализация хреновая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 19:38 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovМысль верная, но реализация хреновая. +100 К тому же как писал ТС, работа зависит от справочника, который бездумно пополняется юзерами в другой системе. ТС на это повлиять не может. Тут наверно нужен какой-то гибридный вариант - своя иерархия к плоским исходным данным, плюс доп. поле(поля), которые позволят не показывать дубли (вместо них по ссылке на "причесанные" данные). Только здесь причесывать ручками надо... и не один раз, а периодически... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 10:40 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
sanBez... который бездумно пополняется юзерами в другой системе. Это самое страшное. Безобразный ввод ни к чему хорошему не приводит. Соболезную, если так. sanBez... Только здесь причесывать ручками надо... и не один раз, а периодически... Это бывает довольно трудозатратно а визуально профита для компании = 0. От дублей, как следствия неверной организации бизнеспроцесса(и/или структуры стправочников), очень тяжело избавиться, т.к. по сути начинается борьба со следствием а не с причиной - а это бесконечные процесс. ____ Если таблица своя собственная а вставка из внешней системы, то крайним решением можно прикрутить супер-пупер-триггер, который будет артачится при попытке вставить дубли, но это опять борьба со следствием. Нужен удобный и грамотный интерфейс добавления новых артикулов. Хотя есть и другой путь, нужно лишь принять темную сторону... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2013, 12:32 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
до диез + мс скл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2013, 19:49 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
Покопался я в разных примерах и на форумах почитал. Да, другого варианта как работать с массивом кроме как цикл гонять не увидел. Ну ладно с циклом можно разобрался и его оптимизировать. Тут проблем не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 22:54 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovМысль верная, но реализация хреновая. Можете более развернуто ответить? Я не въехал. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 22:56 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
sanBezBasil A. SidorovМысль верная, но реализация хреновая. +100 К тому же как писал ТС, работа зависит от справочника, который бездумно пополняется юзерами в другой системе. ТС на это повлиять не может. Тут наверно нужен какой-то гибридный вариант - своя иерархия к плоским исходным данным, плюс доп. поле(поля), которые позволят не показывать дубли (вместо них по ссылке на "причесанные" данные). Только здесь причесывать ручками надо... и не один раз, а периодически... Ну у меня так и сделано. Плоский справочник, плюс ситемае тегов как на веб сайтах, можно собрать любую иерархию, кому как удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 22:58 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
kmawдо диез + мс скл Дорого. Да и сильно на винду завязано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 22:59 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
kot275kmawдо диез + мс скл Дорого. Да и сильно на винду завязано.Если вам обязательно в новую систему тащить все 300 ГБ накопленных данных, то дешево не будет. Я сначала хотел посоветовать Oracle Application Express (бесплатно идет в комплекте с ораклом, в освоении не сложнее аксесса), но бесплатная версия оракла позволяет хранить только 11 ГБ. Если у вас нет возможности ужать данные - ничем не могу помочь. Берите бесплатный Lazarus (вместо любимого вами Delphi) и PostgreSQL, и переезжайте на линукс/макось/куда хотите. Веб-интерфейс как сделать - не знаю пока, что вам посоветовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 08:30 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
kot275А вот второй цикл вывод полученного массива данных на экран, меня и напрягает. Это техническая проблема. Решается так - идет запрос на сервер на большое число строк. Но читается и выводится на экран только первые 30. При листании вперед считываются следущие 30. При листании назад показываются уже считаные. зы совет такой - писать всю логику на хранимках (pl/sql), а тонкий интерфейс на чем угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 09:38 |
|
||
|
Как правильно писать программу для работы с БД?
|
|||
|---|---|---|---|
|
#18+
kot275Доброго времени суток. Я не профессиональный программист, но пишу мелочёвку для себя. Вот захотел написать небольшую учёную программу по рабочему оборудованию и комплектующим. Для простоты, скажу так, нечто похожее на складской учет. Я не силен в программировании. В своей небольшой практике я встречал три похода. Первый. База данных отдельно, программный код отдельно, интерфейс отдельно. Видел такое в Python, PHP. Сама БД разрабатывается отдельно. После пишется программный код который реализует всю логику работы с БД. Отдельно разрабатывается интерфейс. Для Python я использовал PyQt и рисовал в QT Designer, для PHP обычные веб страницы. Логика работы обяно была такая. В программном коде формуем и отправляем запрос. Получаем массив данных с БД. Полученные данные выводим в интерфейс(тут обычный цикл крутим). Посмотрели, чего надо ввели. Забираем данные с интерфейса(тоже тут обычный цикл крутим). Собираем запрос для обновления(вставки) на сервер. Оправляем запрос. И по новой. Второй. База данных, программный код, интерфейс все в одном флаконе. В качестве примера приведу Microsoft Access. Тут достаточно просто расписать структуру базы данных, накидаьб форму. Сам программа неким «магическим способом» будет вносит данные в БД и наполнять интрефейс(формы). Третий. База данных отдельно, программный код и интерфейс совместно. Здесь к у меня Дельфи. Здесь возможно реализовать, как и первый подход и так частично второй. На эту тему даже ведется длительные полемики в ветке по Дельфи. Как писать с или без DB-aware компонентами. Также это поход могут реализовать и многие фреймворки. Как правильно писать программу для работы с БД? В твоем случае правильно не писать, а освоить уже понаписанное в 1С. Даже абсолютно грамотно написанное нечто - будет непроходимой глупостью с силу наличия уже готового и почти бесплатного функционала. Всегда ваш - капитан очевидность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2013, 09:48 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38419731&tid=1341635]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
147ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 405ms |

| 0 / 0 |
