![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
подсчёт кол-во в складской программе [D7, Paradox]
@k@DElpher © (2005-04-22 20:00:00)Здравствуйте,
пишу программу по учёту склада(ну и остального:))
есть две таблицы Парадокса:
покупки, продажи
структуры почти одинаковые:
ID(ключ),IDDoc-номер,как документа, имя документа(накладная №3),
GOODID- номер товара из таблицы товаров,Amount -Кол-во и так далее...
Как вы заметили здесь даны не документы, а товары со свойствами на принадлежность к одному документу(IDDoc).
Так вот мне надо так подсчитывать суммы, чтоб оно относилось к одному документу, и выводить это юзеру, как таблицу накладных с суммами, и например остатки по этим таблицам...
в общем там разберусь- главное, что использовать? Куда думать:)? У кого подглядеть?
или, если, кто знает - где взять примеры, и где почитать касательно именно этой темы(разработки бухгалтерских и складских программ на Delphi...
( писать буду на Delphi 2005:) )
Заранее благодарен:)...
Fay (2005-05-03 16:19:00) [41]2 ANB © (03.05.05 15:56) [84]
> без компа с NT Server
Это не совсем правда 8)
> триггера приезжают не строки, а наборы данных
В ora тоже (тоже так можно)
О диагностике - я имел ввиду ситуцию, когда при компилляции (или выполнении) выдаётся сообщение об ошибке, совершенно не соотв. действительности.
Про исключения - это да. Есть такая беда.
>> Пакетов нет
Дождёмся MSSQL 2005.
В MSSQL хинты намного удобнее, и можешь быть уверен - сервер сделает именно то, что ты напишешь.
Ладно. Кончаем холивор. Я работаю и с MSSQL 2000, и с Oracle 9.2, и под каждым не хватает чего-либо.
ANB (2005-05-03 15:56:00) [42]
> Но работать с сервером, у которого такая дебильная диагностика
> ошибок - спасибо, только если Родина скажет "надо".
- это про MS SQL ? Вот уж где дебильная диагностика . . .
Обработки исключений фактически нет, понятия валидности нет.
Пакетов нет.
А зачем Oracle top, если есть rownum ? К тому же rownum умеет больше.
MS SQL круче следующими вещами :
- векторные запросы (into в несколько полей, в Oracle так тоже можно, но гарантированно нарвешься на ошибку выполнения)
- from в update и delete
- операции с набором значений как у тебя в 2 (даже не знал :((()
иногда это удобно, а то в Oracle для подобных вещей надо хранимку заводить, хотя можно обойтись и безымяным блоком.
- отсутствие mutating в триггерах, но ради этого в триггера приезжают не строки, а наборы данных и частенько это криво обрабатывают, даже в примерах из книжек.
Большой глобальный минус - без компа с NT Server ты его не поднимешь. От чего я с него окончательно и слез.
Fay (2005-05-03 13:55:00) [43]ANB © (03.05.05 9:43) [79]
Я полагал, что Вы разбираетесь в том, что сравниваете.
(1) - выборка и изменение значения одновременно;
(2) - это конкатенация значений поля из всех записей.
>> в Oracle так :
Не так. Это только для одной строки. Да и ценность v := '' не совсем очевидна.
С rownum в Oracle действительно легче работать - в MSSQL его просто нет, как нет top в Oracle. Rowid подойдёт только при serializable.
Курсоры for ... in (...) loop удобнее, спору нет.
Но работать с сервером, у которого такая дебильная диагностика ошибок - спасибо, только если Родина скажет "надо".
ANB (2005-05-03 13:34:00) [44]На 286 Win32 не встанет. Он 16 разрядный. Минимум 386, но надо напихать 8 Мб RAM и будет жутко тормозить. Для такихь компов надо под DOS писать. Delphi умрет (и подойдет только 1.0)
@k@DElpher (2005-05-03 12:59:00) [45]примерно:) Но Windows встанет...:)
ANB (2005-05-03 09:48:00) [46]
> странинном компе(вроде бы даже не на двойке),
на 286 ???????
ANB (2005-05-03 09:43:00) [47]
> Fay © (29.04.05 20:01) [75]
1) declare @Num int
update Table1 set
Num = Num + 1,
@Num = Num + 1
where ID = 1 - это для чего (ТЗ, если можно)?
2) declare
@v varchar(4000)
select
@v = ''
select
@v = @v + Field1
from Table1
в Oracle так :
declare
v varchar2(4000);
begin
v := '';
select v || min(Field1) into v from Table1 where ID = 1;
end;
Да, Oracle клинит на векторных запросах, нельзя юзать from в update. Но это легко разруливается через rownum, rowid и курсоры. Тем более, что работать с ними намного проще, чем в MS SQL.
@k@DElpher (2005-04-30 11:21:00) [48]и совсем забыл! Снаступающей Пасхой!
@k@DElpher (2005-04-30 11:15:00) [49]Да и ещё:
не будет у меня там налогов, мощной кассы, и всяких прочих документов- только приход, реализация, остатки ТМЦ...
@k@DElpher (2005-04-30 11:13:00) [50]1) Автор ни куда не свалил:) Просто, когда сюда ходил- ничего не было:)...
2)В общем я понял, что не понял, поняли ли вы, что мне нужно.
3)Мне нужен простой учёт склада, который надо будет запускать на странинном компе(вроде бы даже не на двойке), и сетки там не будет и к этому компьютеру я буду подходить довольно редко=> как я понял из выше изложенного- в моём случае ни о каких КЛИЕНТ-СЕРВЕР, думать не надо:)
4)Есть в мире, что почитать(проверенного) о написании складских программ(простых, и не простых:) и о СУБД для этого? Можно в электронном, можно в бумажном виде? Посоветуйте что-нибудь.
А эту программку всё-таки напишу в парадоксе(хотя бы для собственного развития)...
Fay (2005-04-29 20:01:00) [51]Имелось ввиду
declare @Num int
update Table1 set
Num = Num + 1,
@Num = Num + 1
where ID = 1
8)
Fay (2005-04-29 20:00:00) [52]ANB © (29.04.05 16:08) [57]
Попробуй сделать на Oracle это
declare @v int
update Table1 set
Num = Num + 1,
@Num = Num + 1
where ID = 1
или это :
declare
@v varchar(4000)
select
@v = ''
select
@v = @v + Field1
from Table1
Ещё можешь попытаться всунуть в ХП запрос со вложенностью подзапросов > 4. На досуге.
Polevi (2005-04-29 17:01:00) [53]>ANB © (29.04.05 16:46) [71]
работал с ораклом - ну и советуй по нему
только не надо тут холи вор если не знаешь того против чего агитируешь
>msguns © (29.04.05 16:38) [70]
насколько я понимаю suspend помещает запись в список тех которые будут возвращены процедурой
в моем примере это делает insert @t
Romkin (2005-04-29 17:01:00) [54]msguns © (29.04.05 15:15) [38] Хм...
Не хами
>Romkin © (29.04.05 14:25) [37]
>Назови мне хотя бы пару преимуществ BDE + dbf|db перед, например, Firebird Embedded? Никак не могу найти...
>Ясный ясень, что не найдешь. Особенно если искать и не собираешься. Преимуществ мало, но они есть. И главное из них - это то, что уже написано море работающих прог с использованием презираемых тобою локалок.
Это преимущество?! На клиент-сервере тоже написано море работающих прог, и что? Какие преимущества все-таки? Я ведь тоже писал и на фоксе, и db пользовал. Не вижу я их, а у сервера - их море...
Связываться с ними просто не хочу. На клиент-сервере БД пишется раза в два быстрее, при желании. По крайней мере, у меня так. И это не считая монтирования в прогу презервативов для контроля и восстановления целостности...
>Мне для того, чтобы "подкрутить" любую из них, надо от 5 мин до 5 дней. Ты что, предложишь мне все их переписать под FB ?
Я этопредлагаю? Работает - не трогай. А вот новое лучше уж писать на клиент-сервере, оно быстрее и надежнее.
>Зачем этот твой пост ? Чтобы показать, что ты основной, а мсганз - чайник ? Тем более, что мсганз чепухи-то не городил. Высказал свои взгляды, абсолютно, кстати, не безапелляционные (в отличие от твоих).
В чем отличие:
"Для однопользователького учета (а таких пользователей великое множество, ЧП например) юзать сервера-изврат чистейшей воды. Локалки-самое то. Дело не в дб, а в руках и голове."
от
"Отвратно! Столько лишних телодвижений - все сам, проверки, целостность..."
???
По-моему, стиль я сохранил :)) И не понимаю я, чем лучше для одного пользователя связка BDE+dbf чем FB embedded?! И почему второе - изврат?!
>А по-существу-то ? Про склад ?
А по существу - все уже сказали. Мое мнение - неверно выбранный инструментарий плюс ошибочная структура БД. Что тут сказать? Учите матчасть, как производится движение товара, как проектировать БД и тд... Это уже сказали.
И не хами
ANB (2005-04-29 16:46:00) [55]
> ms sql 2000 с сотней одновременных подключений
- я работал на небольшой базе, в таблицах не больше 500 миллионов записей, а подключений не больше 3000 одновременно, но сделана она была на Oracle 8. Правда репликация была не автоматическая, а писана ручками, но связывала 10 филиалов (с 2-3 серверами в каждом) от Сибири до СПб по разнородным каналам, включая DialUp.
msguns (2005-04-29 16:38:00) [56]>Polevi © (29.04.05 16:29) [68]
>не хами
И в мыслях не было. Шутка, не более. С подкольным подтекстом. Если обидел, извиняюсь. Без проблем.
Никто не сомневается, что ты знаток скалы, но не одна она в мире БД.
Однако по сабжу-то что-то ничего от тебя не прозвучало.
На счет "работает". У меня работает несколько десятков многопользовательских систем на 3-30 пользователей. И не 3 года, а по 5, по 6, и даже по 10. Писано на парадоксе. Тем не менее я не пытаюсь всех убедить, что парадокс рулит, а все остальное - отстой.
По поводу suspend. Все глаза проглядел - не увидел аналога. Если не в лом и не обиделся на меня еще, то прокомментируй, пожалуйста, ибо я в скале почти новичок.
ANB (2005-04-29 16:34:00) [57]
> крупная распределенная система на ms sql 2000
- тут снимаю шляпу. Обмен между серваками на MS SQL пока круче сделан. Хотя я еще 10G не видел. И бэкап MSSQL в десятки раз быстрее снимает и ставит, чем Oracle дампы. Правда, при восстановлении бэкапа можно умудриться и базу навернуть, но в Oracle вообще сначала надо схему пересоздать.
Polevi (2005-04-29 16:29:00) [58]>msguns © (29.04.05 16:25) [65]
не хами
Polevi (2005-04-29 16:28:00) [59]и зря вы со мной спорите
у меня работает крупная распределенная система на ms sql 2000 с сотней одновременных подключений и милионами записей
а ваши академические наезды - собака лает караван идет
на oracle я такого не писал - и молчу в тряпочку про то чего не знаю
а у вас просто словесный понос какойто
ANB (2005-04-29 16:26:00) [60]
> да, программрование это вообще отстой,
- не, за это мне деньги платят. Но так же намного проще :
for CurVar in (select * from Tbl) loop
. . .
А здесь можно юзать CurVar.Field1 и прочее
end loop;
Никаких проблем с открытием/закрытием и прочим. Хотя можно и как обычно, но такие курсоры обычно передают или возвращают.