Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 39 40 41 42 43 [44] 45 46 47 48 .. 72   вперед  Ctrl
 Re: Access и FoxPro. Сравнение мощей  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
FM32YO aka KID
ASCRUS, ник у тебя какой-то странный.. ты в прошлой жизни в Гестапо не работал?

В гестапо (не заслужило большой буквы), людей пытали, а я молодежь учу, причем как известно некоторые вещи становятся понятными только на собственном опыте и за то, что я этот опыт делаю не таким больным и разочаровывающем и когда можно не вмешиваюсь, а когда нужно даю звездюлей, очень много народу сказало мне спасибо за поддержку, проявленное терпение и где нужно тыканье носом и построение.
9 мар 06, 16:11    [2431429]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
Alex Ustas
Member

Откуда:
Сообщений: 281
222
Alex Ustas
ну, обыкновенная форма в дизайнере, натыкались неоднократно, форма записана->падение операционки->перазагрука->изменения не сохранились


То бишь имееца в виду сама форма в дизайнере а не введенные данные ?...
Блин. Я подумал уже в раб. проекте данные пользовательские.
Насчет самой формы в дизайнере - в дельфи однажды было такое - "на заре" (еще под вин 98). Эксепшен в дизайнере ступорнул всю среду. И действительно форма не сохранилась. Перегрузились и давай ваять по новой с нуля.
Наверно в фоксе может быть так же.


Win2k+VFP6, Это было не просто регулярно, это работало как часы, запись формы в дизайнере->ну скажем пропало лепестичесов->перезагрузились->якобы сохраненные изменения пропапали

222

Alex Ustas
вот это и оно, теперь ясно почему равны, Вы и там и там юзаете тока то, что есть, тада да - паритет :) ну а если руцями прижмет написать что-то нестандартное? чо будем делать?

Совершенно верно.
Юзается только то, что необходимо для реализации требуемой задачи (и все пишеца руцями).
Если "прижмет" - тогда бум смотреть и открывать новые возможности. И в одном и в другом.


ну вот я о том же, Hello Word везде почти одиноково, я же о клубничке, похоже вы до нее еще не дошли ;)

222

На фигрмочке товарищ был - Си занимался. Владел вроде как нормально, но недостаток в том, что он считал, что если он не может этого реализовать, то этого нельзя сделать в принципе.
А вот не надо быть настолько самоуверенным.


ну, с категоричностью надо быть поосторожней все-таки, но если Вам для того чтоб что-то сделать придется вылезти из шкуры, Вам будет от этого легче?

222

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


дело в другом, Вы утверждаете не зная толком ни VFP ни Delphi, ставя между ними знак равенства, меня это и удивило. И эта, вспомните Лысенко, этот кадр хотел заставить коров давать шоколадное молоко, дали б ему время, он бы доказал бы свою правоту, тоже упорный был товарищ :)
9 мар 06, 17:10    [2431767]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
222
Member [заблокирован]

Откуда: из форума
Сообщений: 1251
Alex Ustas

дело в другом, Вы утверждаете не зная толком ни VFP ни Delphi, ставя между ними знак равенства, меня это и удивило.


Полностью любую из сред не знает никто.
Каждая из них в лучшем случае эксплуатируется процентов на 30.
Могу утверждать, Дельфи я владею очень неплохо, когда сидел на фоксе - очень успешно рулил там.
То бишь - основания утверждать все вышеописанное есть и более чем.Вот единственное - да, на фоксе даже не пробовал ваять подобий активиксов, потому как спортивного интереса никогда не преследовал, а занимался исключительно воплощением заданий в реальные проекты.
И если знак равенства ставится, значит так оно и есть.
9 мар 06, 17:36    [2431913]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
FM32YO aka KID
Member

Откуда: Ukraine
Сообщений: 884
Alex Ustas

222
Alex Ustas
ну, обыкновенная форма в дизайнере, натыкались неоднократно, форма записана->падение операционки->перазагрука->изменения не сохранились


То бишь имееца в виду сама форма в дизайнере а не введенные данные ?...
Блин. Я подумал уже в раб. проекте данные пользовательские.
Насчет самой формы в дизайнере - в дельфи однажды было такое - "на заре" (еще под вин 98). Эксепшен в дизайнере ступорнул всю среду. И действительно форма не сохранилась. Перегрузились и давай ваять по новой с нуля.
Наверно в фоксе может быть так же.


Win2k+VFP6, Это было не просто регулярно, это работало как часы, запись формы в дизайнере->ну скажем пропало лепестичесов->перезагрузились->якобы сохраненные изменения пропапали


шутите? регулярно7 так при таком и винда может сыпаться, если у вас так свет мигает


Alex Ustas

222

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


дело в другом, Вы утверждаете не зная толком ни VFP ни Delphi, ставя между ними знак равенства, меня это и удивило. И эта, вспомните Лысенко, этот кадр хотел заставить коров давать шоколадное молоко, дали б ему время, он бы доказал бы свою правоту, тоже упорный был товарищ :)


алекс - зачем наезжать.. я например не стал бы.. ибо не могу знать на каком уровне 222 владеет этими вещами... некрасиво это...
9 мар 06, 17:40    [2431943]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
Justanotherguest
Guest
Господа, признаться честно, хренею с ваших флудерских способностей. Вы когда успеваете работать да еще и 8(7) марта отмечать?


По просьбам трудящихся....

ASCRUS
Вы что-то в попсу тоже сворачиваете. Пионерскую экспрессивность и навешивание ярлыков оставили бы Вы птичьему гриппу - тем более, что у него, судя по всему, весеннее обострение. Никак не иначе та самая "пандемия" началась


PB у меня нет. Но, судя по описанию, DataWindow - аналог классов CursorAdapter или DataEnvironment в VFP.
Это переписанный на FoxPro Ваш пример. В качетстве источника взята стандарная Northwind от MSSQL

TEXT TO CursorAdapter.SelectCmd TEXTMERGE NOSHOW
   SELECT *
   FROM Orders
   WHERE Freight BETWEEN ?StartValue AND ?EndValue
ENDTEXT

CursorAdapter.Alias = "RemoteData"


* // Цепляем к базе описанное соединение SQLCA
CursorAdapter.DataSourceType = "ODBC"
CursorAdapter.UseTransactions = .F.
сConnString = "DRIVER=SQL Server;SERVER=(local);Trusted_Connection=Yes; DataBase=Northwind"
nConnHndl = SQLSTRINGCONNECT(сConnString)

 

*// указать dw, что он работает с соединением SQLCA
CursorAdapter.DataSource = nConnHndl


*// получить набор записей (в интервале Value между 1 и 1000)
StartValue = 1
EndValue = 1000
CursorAdapter.CursorFill()


* // теперь нам связь с БД не нужна и мы можем работать локально
SQLDISCONNECT(nConnHndl)


*// Дальше редактируем все визуально или с кода 
*//(например изменить значения поля Value на Value + 1 для всех записей:
UPDATE RemoteData SET Freight=Freight+1


*// Снова подрубаем к БД соединение
nConnHndl = SQLSTRINGCONNECT(сConnString)
CursorAdapter.DataSource = nConnHndl


*// Сохраняем все сделанные добавления, изменения и удаления способом,
*// указанным в схеме DataWindow (например вызовом ХП)
IF !TABLEUPDATE(.T.)
  SQLROLLBACK(nConnHndl)
ELSE
  SQLCOMMIT(nConnHndl)
ENDIF


*// Получаем текущую дату и время с сервера напрямую запросом в коде
SQLEXEC(nConnHndl,"select GETDATE() as Result","DateTime")
?DateTime.Result

*// Отцепляемся от БД
SQLDISCONNECT(nConnHndl)

Для говоривших про локальный SQL "а нам и нинада" прошу обратить внимание (так чисто, на всякий случай) на реализацию апдейта на локальные данные в PB и в FoxPro :

PB:
decimal{0} value
long r, c
c = dw.RowCount()
for r = 1 to c
  value = dw.GetItemDecimal(r, 'Value')
  dw.SetItem(r, 'Value', value + 1)
next
Примерно та же картина и в Delphi и в VB и в .NET - отличия лишь в синтаксисе


FoxPro:
UPDATE RemoteData SET Freight=Freight+1






На свойства записей можем указать, какая таблица по каким полям будет обновляться, какой первичный ключ, какой режим обновления (оптимистический или пессемистический)


Аналогично

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

И смысл этого? Что, сам PB знает все реализации инкремента на разных серверах и ничего не придется настраивать ручками?


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

свойства InsertCmd, DeleteCmd, UpdateCmd, RefreshCmd, InsertCmdRefreshFieldList, InsertCmdRefreshCmd класса CursorAdapter



Далее по пунктам:

Первое, что можно заметить - весь код - чистая бизнес-логика. Все что касается логики получения, работы и сохранения с данными и БД берет на себя PB.

Я привел полный аналог листинга на FoxPro, по сему - вывод можете делать какой хотите

Второе - не требуется постоянное соединение. DataWindow может спокойно себе работать автономно вообще без сервера БД, добавлять, изменять и удалять записи, сохранять свой набор данных на диск, проводить сортировки и группировки, фильтры и поиски записей (с поддержкой интегрированных и собственно написанных функций), импортировать и экспортировать данные с XML, генерировать HTML код с JScript для веб-версии просмотра и работы с данными.

Аналогично. Результатом запроса на SQL-сервер является фоксовский "курсор" (временный dbf). В отличие от курсоров SQL-серверов, созданных для фетчей в переменные, возможности изращений над фоксовским курсором ограничены лишь фантазией, т.к. он есть временная таблица - и применять к ней можно весь арсенал БД-движка Фокспро (в т.ч. и локальный SQL), ничем не отличающийся от применяемого к DBF

Третье - сама схема DataWindow фактически описывается как XML текст, то есть не является обьектом, ее можно просто собрать в стринге и назначить контролу DataWindow на форме или же управлять с помощью функции Describe() для получения свойств схемы и Modify() для установки свойств схемы, что дает неограниченные возможности по генерации в рунтайме любого динамически изменяющегося интерфейса.

CursorAdapter и DataEnvironment - это классы, соотвественно получить новый экземпляр где-то в другом месте сложностей не представляет. Насчет рантайм-модификации, аналогичной функциональности можно достичь использованием метода SaveAsClass, который может сохранить любой рантаймовский объект как класс - и унаследовать его, изменяя его описание, если нужно (в рантайме же).


Четвертое - сам набор данных DataWindow представлен не как традиционный RecordSet, к которому мы привыкли, а как многомерный массив, где первое измерение - это порядковый номер записи (плюс каждая запись внутри DW имеет свой уникальный ROWID), а все последующие - номера или имена полей. Например я могу получить с 100 записи значение поля Value так:
dw.object.Value[100]

Набор данных в Фокспро - временный dbf. Я писал выше об этом. Значение поля Value 100-й записи можно получить так:
100
?Value
Либо тем же локальным SQL:
SELECT Value FROM RemoteData WHERE RECNO()=100

или все данные в виде CSV в строку так:
string s
s = dw.object.DataWindow.Data


FoxPro:
CSV:
COPY TO FileName TYPE CSV

XLS:
COPY TO FileName TYPE XLS

а так же
| DIF | MOD | SDF | SYLK | WK1 | WKS | WR1
   | WRK

XML:
CURSORTOXML()
класс XMLAdapter

Клипбоард:
_VFP.DataToClip()


Так же я могу на один источник данных сделать несколько схем DataWindow в разном представлении (например в виде грида, отчета и графика). Босить на форму 3 контролса DataWindow, каждому назначить нужную схему DataWindow. Далее получить данные на DataWindow с отображением грид и через функцию ShareData() привязать к нему все оставшиеся DataWindow. В итоге на одни данные у нас будет 3 представления, причем когда я буду менять данные в гриде, автоматически будут перестраиваться DataWindow с отчетом и графиком, где я могу работать с любым из них и брать и менять данные, как будто он и есть владелец самих данных.

У меня хреново с пространственным воображением :) Пока я не увижу PB - не пойму о чем Вы. На полученные с сервера данные в VFP можно натягивать свои реляции и покрывать локальными CursorAdapter (т.е. CursorAdapter на CursorAdapter) с произвольным SQL и правилами обновления. К гриду и прочим контролам можно привязать любой источник, если он - курсор, неважно получен он с локальных данных или удаленных. Контролы в VFP рефрешатся автоматом, когда изменяется прибинденный к ним источник. В особо тяжелых случаях можно сделать это принудительно методами Refresh/Requery объектов


Пятое - в PB поддерживается встроенный SQL, то есть можно напрямую писать все SQL операторы DDL и DML, вызывать ХП и прочее, связывая с переменными, обьявленными в скриптах.

Мне непонятно что Вы подразумеваете под "встроенным SQL" если задача локальной модификации поля Value в Вашем листинге решена перебором всего рекордсета (!) а-ля VB/Delphi. Я, если честно, не совсем улавливаю суть отличий. В моем примере она решена именно через тот самый "встроенный SQL" - оператором UPDATE, с помощью фоксовского диалекта SQL


Шестое - PowerScript в PB является обьектно-ориентированным скриптовым языком с строгой типизацией и поддежкой динамических массивов. Таким образом можно рисовать свои классы, одним движением мышки наследоваться от стандартных и собственных контролов и форм, расширять функциональность того же контрола DataWindow, строить иерархии интерфейсов посредством наследования форм и т.д.

FoxPro - интерпретатор с поддержкой рантайм-компиляции. Это говорит о том, что вы можете в рантайме сгенерить исходник, скопилировать его командой COMPILE и запустить на выполнение/использовать как библиотеку классов. Функция EXECSCRIPT() также может выполнить на лету сгенеренный код без компиляции, но имеет кое-какие ограничения, которых нет у COMPILE. Ну, а про макроподстановку (&, EVALUATE()) я думаю, все в курсе
Наследование есть и у форм, и у контролов, и у Data-классов. Подавляющее большинство классов - визуальные

Так же есть поддержка динамической событийной модели, где можно динамически вызвать событие без риска получить ошибку при его отсутсвии, в отличие от других ООП языков. Это очень полезная штука, например у нас есть наследованное меню, которое при нажатии определенного пункта вызывает у формы владельца событие CloseForm()
.....

Прямого аналога Post в VFP нет. Можно извратиться привязав в коде через функцию EVENTHANDLER происходящее событие с другим событием, ставя порядок его отработки в конец текущего, но это повлияет только на следующий вызов. Быть может можно и извратиться как-нибудь, но я честно признаться, никогда не заморачивался этим, тем более, что все равно "чистого" аналога post не получится

Седьмое - в PB нет привязки к драйверу данных, сегодня указал в параметрах работать через ODBC, завтра укажу через OLEDB или ADO.NET - работа самого приложения от этого не пострадает, все так же будет работать как обычно. Так же в PB можно сколько угодно делать обьектов соединений transaction, таким образом можно одновременно обращаться к разным серверам, разных производителей, через разные драйверы доступа к данным как в DataWindow, так и через встроенный SQL.

Аналогично и для CursorAdapter. Соединения через ADO.NET VFP на данный момент не поддерживаются, но главной задачей нового релиза VFP объявлена интеграция с .NET. Будут ли в MS наяривать какую-нибудь прокси-прокладку к ADO.NET, к сожалению, не в курсе. Большинство фоксовского народа работают через ODBC, т.к. это родная и наиболее адаптированная к VFP технология. ADO поддерживается, но работают с ним не очень активно


Восьмое - в PB есть специальный обьект PipeLine, который позволяет описать схему конвертации или синхронизации данных (так же, как и схему DataWindow), динамически ее изменять и выполнять в коде, назначая схему контолу PipeLine. Возможности достаточно большие (создание и обновление метаструктуры, вставка только новых, вставки и обновление существующих, и т.д.), плюс достаточно шустрый и продуманный механизм управления работой с данными (например можно назначить, через сколько записей делать COMMIT).

Без примеров, к сожалению, не смогу ничего путного сказать, очень обще написано
9 мар 06, 17:41    [2431949]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
222
Member [заблокирован]

Откуда: из форума
Сообщений: 1251
Alex Ustas

ну вот я о том же, Hello Word везде почти одиноково, я же о клубничке, похоже вы до нее еще не дошли ;)


К сожалению, из 44-х страниц ни одного упоминания о какой-то пресловутой "клубничке", которую можно реализовать в Дельфи и невозможно на визуале - так и не было :((

Но разговор начинался с того, что КОМ-сервера в том же фоксе создавать быстрее, удобнее и нагляднее, чем в Дельфи. Клиентов к БД - я выбираю Дельфи, но не потому, что удобнее (как раз неудобнее), а потому что привык.
Надо написать АктивИкс - выберу Дельфи, потому как на нем создавал, а на фоксе не пробовал (не могу самоуверенно утверждать, что на нем нельзя).
Обычную текучку - типа сортировщиков почты, контроллера сетевой интенсивности и т.д. - совершенно параллельно на чем. Но там, где надо динамично выполнять пользовательские полноценные команды - вфп (за счет наличия там макроподстановки).

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

Я могу себе позволить возможности этих сред сравнять.
9 мар 06, 17:50    [2432006]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
222
Member [заблокирован]

Откуда: из форума
Сообщений: 1251
FM32YO aka KID

ибо не могу знать на каком уровне 222 владеет этими вещами... некрасиво это...


так уж ?
9 мар 06, 17:51    [2432012]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
222
Member [заблокирован]

Откуда: из форума
Сообщений: 1251
Justanotherguest
Вы когда успеваете работать да еще и 8(7) марта отмечать?


Делать на работе нечего..
9 мар 06, 17:52    [2432024]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
Alex Ustas
Member

Откуда:
Сообщений: 281
222
Alex Ustas

дело в другом, Вы утверждаете не зная толком ни VFP ни Delphi, ставя между ними знак равенства, меня это и удивило.


Полностью любую из сред не знает никто.
Каждая из них в лучшем случае эксплуатируется процентов на 30.
Могу утверждать, Дельфи я владею очень неплохо, когда сидел на фоксе - очень успешно рулил там.
То бишь - основания утверждать все вышеописанное есть и более чем.Вот единственное - да, на фоксе даже не пробовал ваять подобий активиксов, потому как спортивного интереса никогда не преследовал, а занимался исключительно воплощением заданий в реальные проекты.
И если знак равенства ставится, значит так оно и есть.


ну, осталось только добавить, что все это ИМХО.
и еще, как Вы можете что-то утверждать, даже не попробовав?

ну и вот Вы сказали что знаете неплохо Delphi, а что значит неплохо? на уровне форм и готовых компонент? или заглядывали куда глубже, ну там VCL, WinAPI?
9 мар 06, 18:00    [2432075]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
Alex Ustas
Member

Откуда:
Сообщений: 281
FM32YO aka KID
Alex Ustas

222
Alex Ustas
ну, обыкновенная форма в дизайнере, натыкались неоднократно, форма записана->падение операционки->перазагрука->изменения не сохранились


То бишь имееца в виду сама форма в дизайнере а не введенные данные ?...
Блин. Я подумал уже в раб. проекте данные пользовательские.
Насчет самой формы в дизайнере - в дельфи однажды было такое - "на заре" (еще под вин 98). Эксепшен в дизайнере ступорнул всю среду. И действительно форма не сохранилась. Перегрузились и давай ваять по новой с нуля.
Наверно в фоксе может быть так же.


Win2k+VFP6, Это было не просто регулярно, это работало как часы, запись формы в дизайнере->ну скажем пропало лепестичесов->перезагрузились->якобы сохраненные изменения пропапали


шутите? регулярно7 так при таком и винда может сыпаться, если у вас так свет мигает


было-было, на стечение обстоятельств списать не получиться.

FM32YO aka KID

Alex Ustas

222

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


дело в другом, Вы утверждаете не зная толком ни VFP ни Delphi, ставя между ними знак равенства, меня это и удивило. И эта, вспомните Лысенко, этот кадр хотел заставить коров давать шоколадное молоко, дали б ему время, он бы доказал бы свою правоту, тоже упорный был товарищ :)


алекс - зачем наезжать.. я например не стал бы.. ибо не могу знать на каком уровне 222 владеет этими вещами... некрасиво это...


та похоже уровень ясен, человек сам признался, писанием компонент не занимается, а формы рисовать и там и там почти одинаково, так что это не наезд, просто констатация того, что и так было сказано, но другими словами и не мной :)
9 мар 06, 18:07    [2432127]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
222
Member [заблокирован]

Откуда: из форума
Сообщений: 1251
Alex Ustas
и еще, как Вы можете что-то утверждать, даже не попробовав?


Будьте более внимательны. :))

Alex Ustas
а на фоксе не пробовал (не могу самоуверенно утверждать, что на нем нельзя).


ЗЫ
Неплохо - это значит очень неплохо.

ЗЫЫ
вкл и апи в вашем понимании и есть та самая занебесная "клубничка" ?

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

Людей не смешите. :))
9 мар 06, 18:10    [2432156]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
222
Member [заблокирован]

Откуда: из форума
Сообщений: 1251
Опять блин :))
9 мар 06, 18:18    [2432194]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
Alex Ustas
Member

Откуда:
Сообщений: 281
222
Alex Ustas
и еще, как Вы можете что-то утверждать, даже не попробовав?


Будьте более внимательны. :))


ok, дам и свой совет, следите за базаром :) если говорите что не далали, то придерживайтесь той же версии до конца.

222

Alex Ustas
а на фоксе не пробовал (не могу самоуверенно утверждать, что на нем нельзя).


ЗЫ
Неплохо - это значит очень неплохо.


это как? контролы по форме разбросать?


222

ЗЫЫ
вкл и апи в вашем понимании и есть та самая занебесная "клубничка" ?

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

Людей не смешите. :))


ну, занебесная - не занебесная... это был просто вопрос, и не надо так бурно реагировать, меня просто удивил ход мысли: "пробовать, не пробовал, но знак равенства поставлю. я сказал" забавно :)
9 мар 06, 18:22    [2432210]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
222
Member [заблокирован]

Откуда: из форума
Сообщений: 1251
2 АлексЮстас
Повтор для особо одаренных :)
9 мар 06, 18:45    [2432306]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
Alex Ustas
Member

Откуда:
Сообщений: 281
222
Опять блин :))


молодой человек, надо не злорадствовать, а думать головой, если бы вы думали почаще, то это вошло бы в привычку, и вместо ехидства обнаружи вот это:

...This is faster than storing and manipulating the value using a true BCD type, but limits the precision of the BCD values it can support to 4 decimal places and 20 significant digits.
9 мар 06, 19:19    [2432413]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
222
Member [заблокирован]

Откуда: из форума
Сообщений: 1251
Alex Ustas
молодой человек, надо не злорадствовать, а думать головой,


Я не злорацтвую. Соболезную - потому как сам дельфишник..

И человек не молодой. 4 года до пенсии :((
9 мар 06, 20:18    [2432555]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
Alex Ustas
Member

Откуда:
Сообщений: 281
222
Alex Ustas
молодой человек, надо не злорадствовать, а думать головой,


Я не злорацтвую. Соболезную - потому как сам дельфишник..

И человек не молодой. 4 года до пенсии :((


ой :)

ну, вот по поводу собелезную позвольте не согласиться, есть длительный опыт общения и с тем и с другим, лично мне delphi ближе своей универсальностью, рамки установленные vfp не по мне, для наших задач, универсальность delphi дает некоторые конкурентные преимущества, так что меня все вполне устраивает.
9 мар 06, 20:26    [2432569]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
Justanotherguest
По просьбам трудящихся....

Наконец то, большое спасибо, теперь стало гораздо все понятнее, как все по пунктам проконсультировал проф. Немножко обьясню там, где непоняли:

Justanotherguest
PB у меня нет. Но, судя по описанию, DataWindow - аналог классов CursorAdapter или DataEnvironment в VFP.
Это переписанный на FoxPro Ваш пример. В качетстве источника взята стандарная Northwind от MSSQL

DataWindow нельзя назвать аналогом чего либо, потому как:
он не является чем то материальным. Это просто схема описания получения, сохранения, правил редактирования и визуализации данных. То есть мы все это описываем, сохраняем фактически в виде текстового описания в библиотеку PB, текстовый файл, таблицу или куда фантазия позволит и может это поднять с любого места, в нескольких местах, в нескольких приложениях и т.д. То есть основное отличие - DW одновременно описывает работу с данными и их визуализацию (то есть карточка, грид, табличная форма, график, кросстаб) и это один флакон. Сам Datawindow поддерживает свой собственный язык описания и управления своими свойствами, обьектами и т.д. Можно в один DW вкладывать другие (аналог присоединенных форм Access). Можно просто на свойство Color визуального контрола Value нацепить формулу, что красить ее красным, если например предыдущая запись меньше нуля или же сумма по группе, которой принадлежит эта запись меньше нуля (тут большая схожесть с способом задания динамических значений свойств в Crystal Report). А вот для оживления DW как раз служит конкретный компонент DataWindow, который мы можем кинуть на форму или составной компонент, указать для него схему DW (или загрузить ее, где храним) и пустой контрол оживет всеми цветами мощности описания DW - в тех же редактируемых гридах мы можем делать группировки, указывать аггрегатные вычисляемые поля и т.д., при чем без кода, достаточно просто написать формулу для вычисляемого столбца в описании DW: SUM(Value FOR GROUP 1). Отсюда по моему мнению и растут впервую очередь ноги мощности PB - у него нет разделения между обьектом набора данных и интерфейсом, он единое целое, что дает однозначность, снижает кол-во кодирования и позволяет централизованно управлять как данными, так и их отображением.


Justanotherguest

Для говоривших про локальный SQL "а нам и нинада" прошу обратить внимание (так чисто, на всякий случай) на реализацию апдейта на локальные данные в PB и в FoxPro :

PB:
decimal{0} value
long r, c
c = dw.RowCount()
for r = 1 to c
  value = dw.GetItemDecimal(r, 'Value')
  dw.SetItem(r, 'Value', value + 1)
next
Примерно та же картина и в Delphi и в VB и в .NET - отличия лишь в синтаксисе


FoxPro:
UPDATE RemoteData SET Freight=Freight+1
.

Настолько редкий случай, что все таки "не нада локальный SQL" - для массовых каких либо обновлений я использую сервер, оно гораздо надежнее, быстрее и актуальнее ;)

Justanotherguest

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

И смысл этого? Что, сам PB знает все реализации инкремента на разных серверах и ничего не придется настраивать ручками?

Конечно знает - почти все сервера. Для тех, кого не знает, это прекрасно правится в специальном INI, в котором описаны все известные СУБД, их типы совместимости, способ получения инкремента и т.д. Так что к примеру, PB не был заточен под инкременты Access и сиквенсеты Interbase, правкой пару строк в INI я спокойно сдружил PB с ними и заставил самостоятельно работать с их особенностями поддержки типов, хранения схем данных и получения генераторов.


Justanotherguest
Третье - сама схема DataWindow фактически описывается как XML текст, то есть не является обьектом, ее можно просто собрать в стринге и назначить контролу DataWindow на форме или же управлять с помощью функции Describe() для получения свойств схемы и Modify() для установки свойств схемы, что дает неограниченные возможности по генерации в рунтайме любого динамически изменяющегося интерфейса.

CursorAdapter и DataEnvironment - это классы, соотвественно получить новый экземпляр где-то в другом месте сложностей не представляет. Насчет рантайм-модификации, аналогичной функциональности можно достичь использованием метода SaveAsClass, который может сохранить любой рантаймовский объект как класс - и унаследовать его, изменяя его описание, если нужно (в рантайме же).

Выше я уже написал, про то, что такое на самом деле DW, что это не обьект и не класс и что это в одном флаконе описание данных и визуала. Разница есть, но единственный способ ее почувствовать - это действительно просто поюзать PB.

Justanotherguest
Так же я могу на один источник данных сделать несколько схем DataWindow в разном представлении (например в виде грида, отчета и графика). Босить на форму 3 контролса DataWindow, каждому назначить нужную схему DataWindow. Далее получить данные на DataWindow с отображением грид и через функцию ShareData() привязать к нему все оставшиеся DataWindow. В итоге на одни данные у нас будет 3 представления, причем когда я буду менять данные в гриде, автоматически будут перестраиваться DataWindow с отчетом и графиком, где я могу работать с любым из них и брать и менять данные, как будто он и есть владелец самих данных.

У меня хреново с пространственным воображением :) Пока я не увижу PB - не пойму о чем Вы. На полученные с сервера данные в VFP можно натягивать свои реляции и покрывать локальными CursorAdapter (т.е. CursorAdapter на CursorAdapter) с произвольным SQL и правилами обновления. К гриду и прочим контролам можно привязать любой источник, если он - курсор, неважно получен он с локальных данных или удаленных. Контролы в VFP рефрешатся автоматом, когда изменяется прибинденный к ним источник. В особо тяжелых случаях можно сделать это принудительно методами Refresh/Requery объектов

Исходя из описанного выше - так как DataWindow это просто схема, которая в рунтайме оживлятся движком-контролом, и эта схема одновременно описывать данные и их визуальное представление, то логично было сделать возможность на один и тот же набор данных сделать различные их способы отображения (коих как я перечислил до кучи) и использовать их все одновременно на один и тот же источник данных, где в итоге один контрол, оживляющий DW будет реально иметь данные, а все другие шариться на них, т.е. не иметь собственных и работать с данными зашаренного контрола DW, как будто бы они родные. Что позволяет без затрат к примеру быстро менять форму отображения данных (примерно как в Access реализовано переключение между дизайнером/формой/таблицей, только в PB эти и другие виды можно разрисовать в сколь угодных и приятных для взора кол-вах).


Justanotherguest
Пятое - в PB поддерживается встроенный SQL, то есть можно напрямую писать все SQL операторы DDL и DML, вызывать ХП и прочее, связывая с переменными, обьявленными в скриптах.

Мне непонятно что Вы подразумеваете под "встроенным SQL" если задача локальной модификации поля Value в Вашем листинге решена перебором всего рекордсета (!) а-ля VB/Delphi. Я, если честно, не совсем улавливаю суть отличий. В моем примере она решена именно через тот самый "встроенный SQL" - оператором UPDATE, с помощью фоксовского диалекта SQL

Встроенный SQL - это означает, что прямо в коде программы я пишу SQL-операторы к серверу так, как будто бы они часть моей программы. Основное отличие от Вашего метода - мой SQL код будет проверяться при компиляции и сохранении программы прямо на сервере и ошибка будет обнаружена на момент компиляции, а не на момент выполнения в рунтайме, как это произойдет у Вас, так как с точки зрения Фокса выполнить команду на сервере будет выглядеть как выполнить переданную стринговое значение. Далее наличие встроенного SQL означает, что все получение и передачу переменных на запросы, вызов ХП с параметрами и прочее PB опять же будет проверять на этапе компиляции, и я не смогу получить текущую дату сервера в числовую переменную, так как при компиляции PB проверит запрос на сервере, получит отлуп и выдаст соотвествующую ошибку о несовместимости типов.

Justanotherguest
Восьмое - в PB есть специальный обьект PipeLine, который позволяет описать схему конвертации или синхронизации данных (так же, как и схему DataWindow), динамически ее изменять и выполнять в коде, назначая схему контолу PipeLine. Возможности достаточно большие (создание и обновление метаструктуры, вставка только новых, вставки и обновление существующих, и т.д.), плюс достаточно шустрый и продуманный механизм управления работой с данными (например можно назначить, через сколько записей делать COMMIT).

Без примеров, к сожалению, не смогу ничего путного сказать, очень обще написано

Принцип такой же, как и DW - есть специальный синтаксис, на котором визуально или с помощью языка DW мы можем описать схему, откуда будут браться данные и как они будут конвертиться. Как я уже и указывал, очень смахивает принципами на MSSQL DTS (вернее уж он наверное смахивает, так как делался гораздо позже PB).

По всем остальным вопросам все понятно и от меня огромное огромное сенкс за прояснение ситуации. В принципе убедили, что если есть свои наработки, если локальные dbf используются по назначению (то есть не как способ обработки данных на клиенте, а как просто локальные промежуточные наборы данных для редактирования их пользователем), если интерфейс Фокса позволяет лепить нормальные удобные формы с группировками, вычисляемыми (в т.ч. аггрегированными столбцами), если событийная модель Фокса не слишком гемморная и позволяет легко описать логику контроля ввода данных, если к Фоксу прицепить COM-сервер отчетника FastReport, то в принципе то получается не так плохо. Однако все "если" нужно смотреть лично, ибо как понимаете - что для Вас может быть нормально, для других может оказаться недостаточным.
9 мар 06, 20:28    [2432572]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
Leonid
Member [заблокирован]

Откуда: From nowhere
Сообщений: 743
222
В ВФП таких багов даже в принципе быть не может :))
Просто, вы плохо знаете Delphi. Что называется слышали звон, да не знаете где он.

Что касается приведенного вами бага - это не баг, а неправильное указание типа поля для dbExpress компонент.

Вероятность нарваться на такой "баг" там выше, поскольку море способов связи с базой, море сторонних компонент связи и визуализации. Кроме того вы можете залезть в исходники или написать свои собственные компоненты/модули связи к любой низкоуровневой библиотеке, любого сервера. Свободы в выборе путей в Delphi море, что требует понимания того что вы делаете, через какие компоненты/библиотеки и как.

Delphi гораздо гибче во всех аспектах, вплоть до того, что на Delphi можно написать точный аналог VFP, а на VFP вы Delphi не напишете.

Поэтому, не сравнивайте в этой ветке полнофункциональный язык ООП ObjectPascal и Delphi с VFP.
9 мар 06, 20:44    [2432605]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
Leonid
Member [заблокирован]

Откуда: From nowhere
Сообщений: 743
222
Могу утверждать, Дельфи я владею очень неплохо...
По вашим постам, мне почему-то так не кажется.
Объясните мне "на пальцах" что значит строка:
type
TF = class of TForm;
и чем она отличается от:
type
TF = class(TForm);
10 мар 06, 01:04    [2433065]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
-)
Guest
Leonid

…, вплоть до того, что на Delphi можно написать точный аналог VFP, а на VFP вы Delphi не напишете.

НЕ ВЕРЮ ! Не видел ни одной СУБД написанной на Delphi !
Кстати, а на чем написан BDE ? Не уж-то на Delphi ? Нет ? Тогда почему?
10 мар 06, 05:57    [2433220]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
-)
Leonid

…, вплоть до того, что на Delphi можно написать точный аналог VFP, а на VFP вы Delphi не напишете.

НЕ ВЕРЮ ! Не видел ни одной СУБД написанной на Delphi !
Кстати, а на чем написан BDE ? Не уж-то на Delphi ? Нет ? Тогда почему?

Верить в церкви или туалете надо. А здесь лучше знать. Не знаете Delphi, чего тогда SHIFT напрягать ?
10 мар 06, 06:15    [2433237]     Ответить | Цитировать Сообщить модератору
 C++/Linux/FireBird  [new]
f_w_p
Member

Откуда:
Сообщений: 1603
-)
НЕ ВЕРЮ ! Не видел ни одной СУБД написанной на Delphi !
Кстати, а на чем написан BDE ? Не уж-то на Delphi ? Нет ? Тогда почему?

А исходники посмотреть религия не позволяет?
10 мар 06, 08:38    [2433346]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
Vlad2005
Member

Откуда: Воронеж
Сообщений: 119
-)
Leonid

…, вплоть до того, что на Delphi можно написать точный аналог VFP, а на VFP вы Delphi не напишете.

НЕ ВЕРЮ ! Не видел ни одной СУБД написанной на Delphi !


Эт о какой СУБД идет речь? О Лисе? Дык не СУБД оно... Ни разу.
От рождения и до сего момента - чистых кровей DataBase.
Это не придирки, просто прошу обратить внимание на неверное
использование термина.
10 мар 06, 08:54    [2433376]     Ответить | Цитировать Сообщить модератору
 Re: Access и FoxPro. Сравнение мощей  [new]
222
Member [заблокирован]

Откуда: из форума
Сообщений: 1251
Leonid
222
Могу утверждать, Дельфи я владею очень неплохо...
По вашим постам, мне почему-то так не кажется.
Объясните мне "на пальцах" что значит строка:
type
TF = class of TForm;
и чем она отличается от:
type
TF = class(TForm);



Ух... Это та "Клубничка" ? :))
Явное обьявление и ссылочный тип ?
Первое применяеца когда тип обьекта на этапе обьявления еще неизвестен.
И фсе.:))
То же самое, что элементарно реализуеца в том же вфп.

"Скуштувалы х%я ?"
(с) Лесь Подеревянский
("Казка про Репку або х%ли неясно")

ЗЫ
Приходит ситуация - горе-программер делает простіе пассі в фоксе. По причине того, что он совершенно не знает основ теории СУБД - ессно это ему неудается.Он попадает под влияние подобных себе, ему впаривают, что на Фоксе нельзя ничего совершенно. Он "пробует себя в Дельфи" - и ему, например, показывают команду CreateOLEObject()
Он в восхищении - Из Дельфи можно даже Эксель запускать!!!А совершенно не зная, что абсолютно то же так же возможно и из того же фокса.
Копните вглубь.
ВФП не только СУБД - это абсолютно полнофункциональная среда программирования. Говорю как сторонник Дельфи.
10 мар 06, 09:52    [2433585]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 39 40 41 42 43 [44] 45 46 47 48 .. 72   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить