Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Ivan215
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
1

Visual Basic .NET vs Visual FoxPro 9.0 в рамках задач реляционной модели данных

05.12.2015, 19:12. Просмотров 1151. Ответов 12
Метки нет (Все метки)

Очень хочется обсудить следующую тему.

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

Какие преимущества дает система VB.NET по сравнению с ныне устаревшей и уже редко используемой системой Visual FoxPro, последняя версия которой вышла в 2004 году.

Просьба откликнуться форумчан, работавших в среде Visual FoxPro и создаваших в ней более-менее серьезные проекты (курсовая работа ВУЗа - не есть серьезный проект).

Дело в том, что я уже в течение четырех месяцев переделываю большую программу с Visual FoxPro на VB.NET по заданию руководства, посчитавшего Visual FoxPro устаревшей системой. Этого срока оказалось достаточно, чтобы почувствовать все недостатки VB.NET-а, крайнюю неуклюжесть и ограниченную функциональность его классов DataSet и DataTable по сравнению с имеющимися возможностями обработки DBF-файлов на стороне клиента у Visual FoxPro.

Совершенно справедливыми оказались оценки пользователей FoxPro, согласно которым на написание аналогичного функционала на VB.NET уходит в 5-6 раз больше сил и времени по сравнению с проектированием того же самого на Visual FoxPro.

В чем же причина этого парадокса? Выходит, мир ИТ-технологиий деградирует, а не развивается. И если то, что раньше делалось просто, теперь делается сложно и долго - разве это есть показатель движения ВПЕРЕД, а не НАЗАД.

Еще раз подчеркиваю, здесь рассматривается ТОЛЬКО класс задач СУГУБО РЕЛЯЦИОННОЙ тематики. Поэтому просьба оценивать VB.NET под этим конкретным углом зрения.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2015, 19:12
Ответы с готовыми решениями:

Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net ?
Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net

Visual Basic 6 и Visual Basic .NET - в чем различия?
Visual Basic и Visual studio это не одно и тоже? если нет то в чём разница, по мимо оформления?

Visual Basic .Net и Visual Basic 6.0 - В чём разница
В общем возник вопрос: Visual Bisic.Net и Visual Basic - это два разных языка, или же .NET версия...

Visual Basic.Net и Visual Studio 2013 - в чем разница?
Visual Basic.Net и Visual Studio 2013 - в чем разница? Или это одно и тоже, просто называются по...

12
XIST
1196 / 912 / 124
Регистрация: 01.10.2009
Сообщений: 2,738
Записей в блоге: 1
05.12.2015, 21:14 2
я на VFP много не писал. Только скрипты. Но, вы как помниться пишите на VFP 15 лет, конечно Вам лучше кажется фокс. Это Ваша стихия, которой если Вы владеете в совершенстве, конечно выиграет у любой другой среды (а если C++ взять, то вы скажите вообще год писать буду одну функцию).
И как мне кажется, Ваше руководство, немного не разбирается в технологиях (либо так нужно - я конечно не знаю). Но! Переписывать готовый VFP проект, на другой платформе, опять же под DBF-ки, это кощунство!!! Есть же нормальные СУБД, с большой буквы С! Зачем эти костылди с этими устаревшими базами?? Я буквально неделю назад писал, утилитку под 3 базы фокса, нужно было связать по нескольким полям, так я обалдел, ну совсем же отличный диалект, от ныне принятых диалектов! Кануло все это в лето, ну не нужно СУБД серверная, ну есть Sqlite. Попробуйте Вы им объяснить!
0
Ivan215
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
06.12.2015, 00:12  [ТС] 3
Есть же нормальные СУБД, с большой буквы
Видите ли, есть задачи, или лучше сказать, подзадачи, которые гораздо удобнее решать на стороне клиента, чем на сервере. Почему? Причин много. Во-первых, отлаживать хранимые процедуры гораздо сложнее, чем программы на Фоксе. Во-вторых, при разработке ХП на сервере имеется куча ограничений, которых нет на Фоксе. В-третьих, если ситуация такова, что постановка задачи (предметная область) подвержена частым изменениям, а Вы уж поверьте, такое бывает, опять-таки обработка данных на клиенте предпочтительнее.

Зачем эти костыли с этими устаревшими базами??
Поясните, что Вы имеете в виду, я просто не понял?

Да нет, конечно же на VB.NET пришлось заменить DBF-файлы на XML - НО В ЭТОМ-ТО И ГЕМОРРОЙ И ТЕАТР АБСУРДА.

Да на Фоксе я писал очень долго, но не скажу, что это моя стихия. Я пользовался только теми возможностями, которые были нужны, а это не более 30 процентов от всего Фокса.

Если смотреть абстрактно на вещи, то XML и DBF - это вещи АБСОЛЮТНО СИММЕТРИЧНЫЕ. Потому как ЛЮБУЮ РЕЛЯЦИОННУЮ МОДЕЛЬ ДАННЫХ Вы можете представить и в виде XML и в виде DBF-файлов.

Но проблема как раз в том и заключается, что работать с DBF-файлами на FoxPro в сто раз удобнее, чем с XML при помощи DataSet на VB.NET.

Добавлено через 8 минут
Насчет СУБД с большой буквы.

Приведу пример.

Фрагмент кода на Visual FoxPro

vb.net
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
29
30
31
32
select OLD
set order to CVUVPC
set filter to &gzabcrit
 
select NEW
set relation to CODE_LPU+VID_MP+USL_OK+VOZR+PROFIL+CODE_USL into OLD
 
=shp('on','Изменения')
 
select NEW
 
scan for !eof('OLD')    and    ;
   ;
   (  TARIF    #  OLD.TARIF or  ;
      TARIF_D  #  OLD.TARIF_D   or  ;
      TARIF_1K #  OLD.TARIF_1K  or  ;
      TARIF_F  #  OLD.TARIF_F  )
 
   insert into DIF_TMU ;
      (FLAG,                         ;
              REC_SRC,        CODE_LPU,      ;
       VID_MP,        USL_OK,         VOZR,      ;
       PROFIL,        CODE_USL,       TARIF,         ;
       TARIF_D,       TARIF_F,        TARIF_1K)      ;
   values    ;
      (iif(_staggmm+space(4)==OLD.YML+OLD.YMH, 'Y', 'C'),  ;
              recno('OLD'),   NEW.CODE_LPU,  ;
       NEW.VID_MP,    NEW.USL_OK,     NEW.VOZR,      ;
       NEW.PROFIL,    NEW.CODE_USL,   NEW.TARIF,     ;
       NEW.TARIF_D,   NEW.TARIF_F,    NEW.TARIF_1K)
 
endscan

А вот что потребовалось писать в хранимой процедуре на FireBird-е

SQL
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
    FOR EXECUTE statement '
        select 
            cast(iif(FUL.YML=' || :CGM || ' and FUL.YMH=0, ''Y'', ''C'') as char(1)) as FLAG,
            FUL.ID as ID_SRC,
            CUR.CODE_LPU as CODE_LPU,
            CUR.VID_MP as VID_MP,
            CUR.USL_OK as USL_OK,
            CUR.VOZR as VOZR,
            CUR.PROFIL as PROFIL,
            CUR.CODE_USL as CODE_USL,
            CUR.TARIF as TARIF,
            CUR.TARIF_D as TARIF_D,
            CUR.TARIF_F as TARIF_F,
            CUR.TARIF_1K as TARIF_1K
        from ' || :CUR_TMU || ' CUR ' || '
        inner join ' || :FUL_TMU || ' FUL on
            (CUR.CODE_LPU=FUL.CODE_LPU)
            and 
            (CUR.VID_MP=FUL.VID_MP)
            and
            (CUR.USL_OK=FUL.USL_OK)
            and
            (CUR.VOZR=FUL.VOZR)
            and
            (CUR.PROFIL=FUL.PROFIL)
            and
            (CUR.CODE_USL=FUL.CODE_USL)
            and
            ( 
                (
                    (FUL.YMH=0) and
                    (FUL.YML<=' || :CGM || ')
                )
                or
                (
                    (FUL.YMH<>0) and 
                    (FUL.YML<=' || :CGM || ') and
                    (' || :CGM || '<=FUL.YMH)
                )
            )
        where
            (CUR.TARIF<>FUL.TARIF) or
            (CUR.TARIF_D<>FUL.TARIF_D) or
            (CUR.TARIF_1K<>FUL.TARIF_1K) or
            (CUR.TARIF_F<>FUL.TARIF_F)
        plan join (CUR natural, FUL index (' || :FUL_TMU || '_CVUVPC))'
        INTO :cFLAG,
             :nID_SRC,
             :cCODE_LPU,
             :cVID_MP,
             :cUSL_OK,
             :cVOZR,
             :cPROFIL,
             :cCODE_USL,
             :nTARIF,
             :nTARIF_D,
             :nTARIF_F,
             :nTARIF_1K
 
        do EXECUTE statement ('
            insert into ' || :TMP_TMU1 || '(
                FLAG,
                ID_SRC,
                CODE_LPU,
                VID_MP,
                USL_OK,
                VOZR,
                PROFIL,
                CODE_USL,
                TARIF,
                TARIF_D,
                TARIF_F,
                TARIF_1K)
            values (
                :P01,
                :P02,
                :P03,
                :P04,
                :P05,
                :P06,
                :P07,
                :P08,
                :P09,
                :P10,
                :P11,
                :P12)')
             
            (P01 := :CfLAG,
             P02 := :nID_SRC,
             P03 := :cCODE_LPU,
             P04 := :cVID_MP,
             P05 := :cUSL_OK,
             P06 := :cVOZR,
             P07 := :cPROFIL,
             P08 := :cCODE_USL,
             P09 := :nTARIF,
             P10 := :nTARIF_D,
             P11 := :nTARIF_F,
             P12 := :nTARIF_1K);
Добавлено через 3 минуты
Это самый простой пример, когда связаны всего 2 файла. А если их не 2, а скажем 7-8, то на Фоксе все пишется играючи, причем Вы ПОЛНОСТЬЮ КОНТРОЛИРУЕТЕ ПРОЦЕСС, или можете разбить его на подзадачи. А вот как будет работать FireBird не ясно - скорее всего это Select на полдня. Потому как любой мало-мальски сложный Select - это тупик для FireBird-а - он туп, как сибирский валенок.

Добавлено через 6 минут
И попутно вопрос, чтобы определиться и не спорить впустую. Допустим, у Вас есть подзадача, требуется некая обработка данных, которую можно выполнить И на клиенте, И на сервере. Что для Вас предпочтительнее - клиент или сервер. Для меня - без вопросов - клиент предпочтительнее. Я выполню обработку на клиенте - а результаты сброшу на сервер.

Добавлено через 3 минуты
это тупик для FireBird-а - он туп, как сибирский валенок.
Это не мое мнение. Зайдите на форум по FireBird - там полно тем с одинаковым названием - КАК УСКОРИТЬ РАБОТУ ОПЕРАТОРА SELECT. И всегда (или почти всегда) оператор Select приходиться заменять хранимой процедурой - так пардон, это сделать на клиенте в сто раз удобнее (если конечно не идет речь о передаче больших объемов данных)
0
XIST
1196 / 912 / 124
Регистрация: 01.10.2009
Сообщений: 2,738
Записей в блоге: 1
06.12.2015, 00:23 4
Цитата Сообщение от Ivan215 Посмотреть сообщение
подзадачи, которые гораздо удобнее решать на стороне клиента
опять же Sqllite
Цитата Сообщение от Ivan215 Посмотреть сообщение
при разработке ХП на сервере имеется куча ограничений, которых нет на Фоксе
например?
Цитата Сообщение от Ivan215 Посмотреть сообщение
В-третьих, если ситуация такова, что постановка задачи (предметная область) подвержена частым изменениям, а Вы уж поверьте, такое бывает
верю, именно по этому серверная СУБД это пляж для таких моментов. Все данные в одном месте, втори что хочу и пришивай к EXE.
Цитата Сообщение от Ivan215 Посмотреть сообщение
Но проблема как раз в том и заключается, что работать с DBF-файлами на FoxPro в сто раз удобнее, чем с XML при помощи DatatSet на VB.NET.
конечно удобнее, т.к. и это и есть состав среды программирования еще FOX 1992 года, как Вы знаете наверное. А вот тут вообще не пойму, делали ПО на VFP, решили передалеать на другой среде, при чем есть готовые базы и разработчики знающий эту среду, взяли XML еще и нагрузили Вы там ничего плохого им не сделали?.
А по поводу удобности? х.з., для меня лично DBF это вообще не удобная штука, а по поводу удобности разработки?, все основывается на единых парадигмах, на то оно и .net. Хоть DBF хоть mdf хоть xls хоть sl. Один и тот же метод подключения, меняется строка, все остальное считай такое же, и вообще не вижду логики вашего руководства, опять же если не нужна серверная, так Вы же говорите был рабочий проект VFP, там же есть готовые базы DBF-ки? работа с которыми не отличается от работы с XML, что-то занимаются они не нужной переработкой рабочего ПО, с ненужными тратами времени . ИМХО

Добавлено через 9 минут
Цитата Сообщение от Ivan215 Посмотреть сообщение
Это самый простой пример, когда связаны всего 2 файла. А если их не 2, а скажем 7-8, то на Фоксе все пишется играючи, причем Вы ПОЛНОСТЬЮ КОНТРОЛИРУЕТЕ ПРОЦЕСС, или можете разбить его на подзадачи. А вот как будет работать FireBird не ясно - скорее всего это Select на полдня. Потому как любой мало-мальски сложный Select - это тупик для FireBird-а - он туп, как сибирский валенок.
вот тут не надо, сам работаю, на работе, куча софта на нем, вообще его любят т.к. разработчкики еще старшие на Delphi, и скажу я Вам, хороша птица, есть нюансы как и везде, уметь нужно с ней, а счас 3,0 вышел, там возможностей прибавилось. А про скорость, х.з. у меня центральный офис 210 км, канал 4 мегабита, к серверу подключаются 30 подразделений с фиг знает сколькими компами, это только ОДНО ПО! а у нас почти все оно на птице, трохан фокса, трохна моего .net+ MySQL) и ява + H2 - вот это *няга я вам скажу, хоть и быстрая, а
Цитата Сообщение от Ivan215 Посмотреть сообщение
И попутно вопрос, чтобы определиться и не спорить впустую. Допустим, у Вас есть подзадача, требуется некая обработка данных, которую можно выполнить И на клиенте, И на сервере. Что для Вас предпочтительнее - клиент или сервер. Для меня - без вопросов - клиент предпочтительнее. Я выполню обработку на клиенте - а результаты сброшу на сервер.
Если это мало мальский костыль\утилитка да клиент, если это нормальное ПО c большим объемом данных сервер, только сервер
0
Ivan215
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
06.12.2015, 00:37  [ТС] 5
Ограничения в ХП? Да я плеваться устал, пока написал с огромным трудом пару хранимых процедур на FireBird. Ну может когда-нибудь привыкну.

Итак FoxPro. Вы пишете Select, а в конце into table <имя DBF-файла>. Вроде бы логично, Select - это пересечение таблиц (с вариантами Inner, Outer, и т.д.) - и в результате получается таблица, ничего другого Вы в принципе получить не можете. Поэтому into table на Фоксе выглядит вполне логично и закономерно.

FireBird. В хранимой процедуре (а на сервере ничего другого нет, где бы можно было выполнить Select) Вы имеете возможность ВЫБИРАТЬ результаты Select-а ТОЛЬКО ПО ОДНОЙ ЗАПИСИ, потом оператором INSERT засовываете это ПО ОДНОЙ ЗАПИСИ скажем во временную таблицу И О ДОСТИЖЕНИЕ! эту временную таблицу Вы не можете создать на сервере, ее приходится создавать заранее на клиенте! То есть всегда должна иметь место комбинированная обработка - часть на клиенте, а часть на сервере. Вам удобно? Мне не очень.

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

Добавлено через 2 минуты
А вот тут вообще не пойму, делали ПО на VFP, решили передалеать на другой среде, при чем есть готовые базы и разработчики знающий эту среду, взяли XML еще и нагрузили Вы там ничего плохого им не сделали?
Вы не понимаете? А зря, все просто как 25 копеек. Начальство опасается, как если меня уволить, так некому будет Фокспрошную программу сопровождать, ну как бы трудно уже людей найти, которые на Фоксе работают.

Добавлено через 7 минут
Продолжаем сравнивать FoxPro и FireBird, то бишь базу С БОЛЬШОЙ БУКВЫ.

Итак Fox - Вы открываете DBF-файлы, устанавливаете порядок чтения, связи и получаете выходной файл - Вы все контролируете и прекрасно знаете СКОЛЬКО ПО ВРЕМЕНИ ЭТО будет работать.

FireBird - имеется аналог, некий мистический оператор PLAN, который вроде как бы подсказывает FireBird-у, что и как надо сделать. Так FireBird часто плюется и выдает - здесь оператор PLAN говорит, неприменим и жует Select по-своему! То есть Вы уже не контролируете маразматический оптимизатор запросов FireBird-а, и сколько продлится и на сколько оптимально будет выполнен Select - РЕШАТЬ УВЫ НЕ ВАМ.
0
XIST
1196 / 912 / 124
Регистрация: 01.10.2009
Сообщений: 2,738
Записей в блоге: 1
06.12.2015, 00:44 6
Цитата Сообщение от Ivan215 Посмотреть сообщение
Итак FoxPro. Вы пишете Select, а в конце into table <имя DBF-файла>. Вроде бы лочично, Select - это пересечение таблиц (с вариантами Inner, Outer, и т.д.) - и в результате получается таблица, ничего другого Вы в принципе получить не можете. Поэтому into table на Фоксе выглядит вполне логично и закономерно.
как и везде это стандарт ISO SQL а не конкретной среды и базы. И вот VFP как раз-таки со своим диалектом)
Цитата Сообщение от Ivan215 Посмотреть сообщение
FireBird. В хранимой процедуре (а на сервере ничего другого нет
простите, но что там должно быть на сервере? в Ваших руках мощная служба, обработки данных посредством управления клиентом? что там еще нужно?[/quote]
Цитата Сообщение от Ivan215 Посмотреть сообщение
где бы можно было выполнить Select) Вы имеете возможность ВЫБИРАТЬ результаты Select-а ТОЛЬКО ПО ОДНОЙ ЗАПИСИ, потом оператором INSERT засовываете это ПО ОДНОЙ ЗАПИСИ скажем во временную таблицу И О ДОСТИЖЕНИЕ! эту временную таблицу Вы не можете создать на сервере, ее приходится создавать заранее на клиенте!
ну может быть, скиньте хотите в личку структуры баз, и я после выходных с поддержкой старших коллег вам предоставлю, как делается временная таблица (а в приципе что там предоставлять, как и везде почти) и может и хранимки запилим, если время будет , я же не просто так говорю
Цитата Сообщение от Ivan215 Посмотреть сообщение
Вы не понимаете? А зря, все просто как 25 копеек. Начальство опасается, как если меня уволить, так некому будет Фокспрошную программу сопровождать, ну как бы трудно уже людей найти, которые на Фоксе работают.
понятно теперь
0
Ivan215
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
06.12.2015, 00:52  [ТС] 7
для меня лично DBF это вообще не удобная штука
Это чем же? Более простого и ЕСТЕСТВЕННОГО представления табличных данных, чем DBF-файл - ПРОСТО НЕ СУЩЕСТВУЕТ.

Да XML-универсален, но создавался он СОВСЕМ ДЛЯ ДРУГОГО, как универсальный язык разметки. Да его МОЖНО использовать и для представления данных в реляционной модели, но то, что он удобнее DBF - извините!

Добавлено через 46 секунд
все основывается на единых парадигмах
Это что из серии, победа коммунизма неизбежна. Знаете, очень напоминает...

Добавлено через 2 минуты
как делается временная таблица
Где? На клиенте? Да сделал уже, нет проблем. А что у кого-то получилось создать таблицу на FireBird из ХП? Я правильно понял? Вот это было бы интересно...
0
XIST
1196 / 912 / 124
Регистрация: 01.10.2009
Сообщений: 2,738
Записей в блоге: 1
06.12.2015, 00:55 8
Цитата Сообщение от Ivan215 Посмотреть сообщение
Да XML-универсален, но создавался он СОВСЕМ ДЛЯ ДРУГОГО, как универсальный язык разметки. Да его МОЖНО использовать и для представления данных в реляционной модели, но то, что он удобнее DBF - извините!
сравнивая эти две вещи, лично я ставлю жирное =, когда есть нормаль современные базы данных и системы управления ими, а эти, ну курсовую да инвентаризационное ПО написать - усё

Добавлено через 2 минуты
Цитата Сообщение от Ivan215 Посмотреть сообщение
Где? На клиенте? Да сделал уже, нет проблем. А что у кого-то получилось создать таблицу на FireBird из ХП? Я правильно понял? Вот это было бы интересно...
А что не так-то с созданием оной? Права, я может не в курсе? Но я беру, по своим знаниям mysql и sqls, в чем проблема создать оную? Вот и у товарищей уточню
0
Ivan215
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
06.12.2015, 01:03  [ТС] 9
Я выложил в посте #3 пример кода на FireBird-е. Выполняется Select и данные помещаются во временную таблицу, созданную на клиенте заранее. Помещаются по одной записи, в хранимой процедуре. А что можно по-другому действовать в ХП? Там же в описании синтаксиса оператора Select стоит в конце без вариантов

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[WITH [RECURSIVE] <cte> [, <cte> ...]]
SELECT
[FIRST m] [SKIP n]
[DISTINCT | ALL] <columns>
FROM
SOURCE [[AS] alias]
[<joins>]
[WHERE <condition>]
[GROUP BY <grouping-list>
[HAVING <aggregate-condition>]]
[PLAN <plan-expr>]
[UNION [DISTINCT | ALL] <other-select>]
[ORDER BY <ordering-list>]
[ROWS m [TO n]]
[FOR UPDATE [OF <columns>]]
[WITH LOCK]
[INTO <variables>]
INTO <variables> - то есть в список переменных?

Добавлено через 4 минуты
а эти, ну курсовую да инвентаризационное ПО написать - усё
Кто эти-то? Какая курсовая, да инвентаризация? Крупная компания страховая работала 15 лет на этих DBF-вках, никто не жаловался. А писали бы на всяких Delphi да Oraclе-ах, пришлось бы вместо меня одного пятерых сажать, и то не справлялись бы. Потому как объем работы-то разный - на Фоксе писать, и не на Фоксе.
0
XIST
1196 / 912 / 124
Регистрация: 01.10.2009
Сообщений: 2,738
Записей в блоге: 1
06.12.2015, 01:08 10
Цитата Сообщение от Ivan215 Посмотреть сообщение
Я выложил в посте #3 пример кода на FireBird-е. Выполняется Select и данные помещаются во временную таблицу, созданную на клиенте заранее. Помещаются по одной записи, в хранимой процедуре
вот тут, а зачем на клиенте создавать в памяти временки? на сервере ХП. Она же помещает все что нужно во временку (которая создается там же, или уже созданная для постоянного использования для ХП), далее с временки, клиент забирает массив данных, для чего там, что он делает

Добавлено через 2 минуты
Цитата Сообщение от Ivan215 Посмотреть сообщение
Крупная компания страховая работала 15 лет на этих DBF-вках
Так у меня крупная компания, и так же еще работаем, но стараемся убрать в лета, DBF и Paradox, т.к. это всё уже
0
Ivan215
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
06.12.2015, 01:31  [ТС] 11
далее с временки, клиент забирает массив данных, для чего там, что он делает
Во-первых, после отработки этой процедуры, клиент ничего не забирает, а запускает следующую ХП, которая берет созданные временные таблицы и продолжает обработку. Задача - разбита на 2 подзадачи.

Она же помещает все что нужно во временку (которая создается там же
Пардон, Вы так пишете, ничего не понимаю. Которая создается там же - где там же? Хранимая процедура приведенная в посте 3 НЕ СОЗДАЕТ никаких таблиц на сервере , потому что ЭТО НЕВОЗМОЖНО.

И мы вообще-то уклонились от темы. Мне интереснее было бы сравнить обработку данных на клиенте - в среде FoxPro с помощью DBF и в среде VB.NET с помощью XML (DataSet). С FireBird мне все уже ясно. Кстати по FireBird, последнее замечание по поводу удобства разработки - Вы же не будете сравнивать дружественность среды, так сказать, вспомоществующей при создании кода - в среде Visual Studio и ну, скажем, в среде IBExpert?

Добавлено через 5 минут
но стараемся убрать в лета, DBF и Paradox, т.к. это всё уже
М-да... На Visual FoxPro можно написать ЛЮБУЮ ПРОГРАММУ в архитектуре клиент-сервер. Просто обработка данных на клиенте по простоте несоизмерима с VB.NET. Вот и все. Ну да, программируя в среде VB.NET ощущаешь себя на голову выше, чем программируя на FoxPro, однако если все рассматривать с точки зрения трудозатрат и конечного результата, то прифицит отрицательный и в разы. Это из серии кому что больше нравится.

Кстати, Вы так и не ответили, чем не удобны DBF-файлы, было бы интересно. Термин - устарело - простите, это не аргумент.

Добавлено через 10 минут
Теперь все-таки давайте сравнивать VB.NET vs Visual FoxPro.

Сразу бросаются в глаза несколько моментов.

1. На Фоксе для того, чтобы подготовиться к обработке данных надо ПРОСТО ОТКРЫТЬ DBF-файлы, установить порядок обработки и установить связи. На VB.NET для начала обработки Вы должны все таблицы засунуть в DataSet в виде DataTable. И потом ПОЛНОСТЬЮ прочитать их в память! ПОЛНОСТЬЮ!

2. Как выяснилось, память занимаемая таблицей DataTable в ОЗУ, в 7-9 раз ПРЕВЫШАЕТ память занимаемую DBF-прототипом на диске! Это Вам как, не жмет?

3. Связи между таблицами DataSet-а можно устанавливать только по полю или комбинации полей. Вычисляемые выражения не разрешаются. Это значит, что если надо связать по выражению, надо добавлять в таблицы ВЫЧИСЛЯЕМЫЕ колонки. Для Вычисляемых колонок на VB.NET (для самого выражения вычисляемой колонки) - куча ограничений, на Фоксе - ИХ НЕТ ВООБЩЕ!!! Вы можете использовать ДАЖЕ СВЯЗЬ ПО ПОЛЬЗОВАТЕЛЬСКОЙ ФУНКЦИИ!
0
XIST
1196 / 912 / 124
Регистрация: 01.10.2009
Сообщений: 2,738
Записей в блоге: 1
06.12.2015, 01:31 12
Цитата Сообщение от Ivan215 Посмотреть сообщение
Пардон, Вы так пишете, ничего не понимаю. Которая создается там же - где там же? Хранимая процедура приведенная в посте 3 НЕ СОЗДАЕТ никаких таблиц на сервере , потому что ЭТО НЕВОЗМОЖНО.
почему процедуре на сервере, данной соответствующие привилегии нельзя это сделать? ну лад - уточнимЮ а то ночь на дворе
Цитата Сообщение от Ivan215 Посмотреть сообщение
Кстати по FireBird, последнее замечание по поводу удобства разработки - Вы же не будете сравнивать дружественность среды, так сказать, вспомоществующей при создании кода - в среде Visual Studio и ну, скажем, в среде IBExpert?
а как их можно сравнивать-то? эксперт для работы с самим сервером, vs ждля написания кода для работы с базой
Цитата Сообщение от Ivan215 Посмотреть сообщение
М-да... На Visual FoxPro можно написать ЛЮБУЮ ПРОГРАММУ в архитектуре клиент-сервер. Просто обработка данных на клиенте по простоте несоизмерима с VB.NET. Вот и все. Ну да, программируя в среде VB.NET ощущаешь себя на голову выше, чем программируя на FoxPro, однако если все рассматривать с точки зрения трудозатрат и конечного результата, то прифицит отрицательный и в разы.
Вот чего и ответил на Ваш пост, вы зациклены на vbn.net, vb.net это оболочка DOTNETFRAMEWORK, хоть vb, хоть C, хоть F#, далее хоть Delphi хоть Java везде, одна и та же парадигма! подключение-запрос-адаптер-датасет(и т.п.) вывод, это не относиться к языку!!! это такой стандарт на данный момент! и тот уже уходит linq и .т.п. паттерны шагают по планете
0
Ivan215
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
06.12.2015, 06:07  [ТС] 13
Да не зациклен я на VB.NET. Ну если хотите, представляйте себе любой другой язык из Студии (все равно на выходе один и тот же IL). Претензии-то у меня НЕ К ЯЗЫКУ (VB), А К САМОМУ NET-у!

почему процедуре на сервере, данной соответствующие привилегии нельзя это сделать?
Ну я же привер СИНТАКСИС оператора Select из документации по FireBird. Ну как Вы из ХП осуществите Select сразу в таблицу в базу на сервере? Это невозможно в принципе.

а как их можно сравнивать-то? эксперт для работы с самим сервером, vs для написания кода для работы с базой
IBExpert - это пожалуй единственное интерактивное средство по работе с ХП. Там откомпилировать можно ХП - он текст ХП там показывает с некоторыми иллюстрациями - например строковые константы выделяет голубеньким, ошибку сообщает при компиляции, если она есть - и на этом пожалуй все.

А как их сравнивать, а почему бы и не сравнить? На сервере - данные, и на клиенте - данные. На сервере - ХП обрабатывает данные, и на клиенте программа - обрабатывает данные. Все одно и то же.

Добавлено через 2 минуты
подключение-запрос-адаптер-датасет
Ну да, я потому и заметил, что мы от темы отклонились.

На Фоксе вообще проще: Подключение - запрос - DBF-файл (или курсор)

Добавлено через 3 минуты
я на VFP много не писал. Только скрипты
А там вроде нет никаких скриптов. Там есть процедурные файлы (PRG) - минимальная компилируемая единица, и приложения - APP или EXE.

Добавлено через 4 часа 4 минуты
И к посту 11 четвертый недостаток NET работы с таблицами. Для работы с таблицами (если нужно учитывать связи между ними) их все надо засовывать в контейнер (DataSet), а на Фоксе - они были свободными, и не требовали НИКАКОГО контейнера.

Добавлено через 14 минут
Далее поиск по DataTable. Я читал что быстрый поиск по DataTable - это с использованием метода Find. А метод Find работает быстро только по колонке (или совокупности колонок), которые объявлены как Primary Key. Вот здесь могу ошибиться - на таблицу кажется может быть только один Primary Key? Если один, то это паршиво. И вообще, говорят, что NET строит и использует какие-то там индексы. Он что, каждый раз при загрузке DataSet их заново строит что ли? Фокс строит по команде Index, так он их на диске сохраняет и корректирует при корректировке таблицы. А NET значит строит каждый раз заново. Очень мило.

И потом на Фоксе я в курсе какие индексы Я ИСПОЛЬЗУЮ. А NET их где-то там строит в недоступной оперативке и невидимо для меня использует, я даже понятия не имею как. Но конечно же САМЫМ ОПТИМАЛЬНЫМ ОБРАЗОМ, типа оптимизатор запросов на FireBird.

Кстати, насчет дружественности среды при написании скриптов или ХП на FireBird. Откройте любой SQL-скрипт в Студии и посмотрите окно кода и перечень ошибок - вот это ДРУЖЕСТВЕННАЯ СРЕДА, не то что IBExpert. Хотя IBExpert - это вообще сторонняя программа. Сами создатели FireBird вообще никакой среды для написания и отладки скриптов или ХП не создали - НИКАКОЙ!
0
06.12.2015, 06:07
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2015, 06:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Перенос данных из Visual Basic .NET в Excel
Ребят подскажите пожалуйста, у меня есть Visual Studio и в нем есть Visual Basic, так вот в нем...

Какую среду программирования лучше выбрать для обучения языку C++ ? Visual Studio,Visual Basic или Visual C++?
И напишите,чем рекомендуемая вами среда программирования лучше других? Насколько я понял из...

Вычисление значений функции двух переменных в Visual Basic - Visual Basic
Помогите пожалуйста! В среде VB написать программу вычисления значений функции двух переменных....

Решение задач в Visual Basic?
Есть задача (к сожалению не могу написать формулу), решение которая так выглядит на яз....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.