|
|
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Уважаемые! У меня такой вопрос. Имеется приложение на фоксе, его нужно перевести на MS SQL Server. Т.е. данные поместить на SQL Server. Предполагается использовать ADODB и VFP CursorAdapter. В коде имеется выделенный слой для работы с базой данных, в котором куча Select'ов, Insert'ов, Delete'ов напрямую обращающихся к физическим данным. Посоветуйте какую технологию переработки кода лучше всего избрать, чтобы обойтись как можно меньшей кровью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 11:22 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Поясню: Вот например мне не понятно, как бороться с таким кодом - SELECT IdExp ; FROM KsPrd ; WHERE Period IN ( lcTagPeriod, tcPeriod) ; AND idexp IN (SELECT Id FROM CurTO) AND EMPTY(ddelete); INTO CURSOR IdExpCursor строка AND idexp IN (SELECT Id FROM CurTO) предполагает, что есть некий курсор CurTO, как это объяснить SQL Server'у? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 11:43 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Есть на форуме кто-нибудь, кто переводил фоксовское приложение на SQL сервер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 12:02 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaЕсть на форуме кто-нибудь, кто переводил фоксовское приложение на SQL сервер? Ох.. тяжело это... Вот так в лоб переводить из файл-сервер в клиент-сервер. А главное, мало смысла такого перевода. Да, работать будет, но не лучше, чем у вас работало в файл-сервер. Другая идеология. Граната не той системы :). Проще, по моему мнению, для клиент-сервер все начать с нуля. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 12:10 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Тут такая ситуация. Заказчик требует сделать перевод. Делать это всеравно придется. А переработать код всетаки легче, чем написать заново. Но не в этом суть. Хотелось бы все-таки услышать реальные предложения! Возможно и другим это пригодится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 12:16 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Хотелось бы узнать, что вы имели в виду - Другая идеология. Граната не той системы :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 12:18 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaХотелось бы все-таки услышать реальные предложения! Возможно и другим это пригодится... К тому что сказал Алексей - добавлю, что прийдется переписывать все, включая интерфейс, иначе все будет работать оооччччень меееедленно... В настоящий момент имею очень большую проблему с промышленной ERP программой, быстро переведенной на MS SQL Server (наверное в Индии ) Так одна форма в ней открывается за 30-35 секунд... Это что-то But anyway, good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 12:32 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaХотелось бы узнать, что вы имели в виду - Другая идеология. Граната не той системы :). Что-то типа этого. Если переделывать - то с нуля и наче это будет тот-же файл-сервер, только способ хранения другой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 12:35 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
В нашей системе есть выделенный слой данных, в виде Dll компоненты, который обменивается с интерфейсом через XML пакеты. Вот только в этой компаненте и нужно сделать преобразования. А она в свою очередь содержит только методы доступа к данным через SQL команды, естественно в фоксовском формате. Вот эти методы требуется переработать. Как это лучше сделать? У кого есть опыт, тот может, я думаю дать реальные советы. Может использовать хранимые процедуры на сервере подобных методам компоненты? Или все же переработка кода. А может кто-то использовал другие пути? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 12:40 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaВ нашей системе есть выделенный слой данных, в виде Dll компоненты, который обменивается с интерфейсом через XML пакеты. Вот только в этой компаненте и нужно сделать преобразования. А она в свою очередь содержит только методы доступа к данным через SQL команды, естественно в фоксовском формате. Вот эти методы требуется переработать. Как это лучше сделать? У кого есть опыт, тот может, я думаю дать реальные советы. Может использовать хранимые процедуры на сервере подобных методам компоненты? Или все же переработка кода. А может кто-то использовал другие пути? Язык у Вас какой-то странный... Вы вообще, на чем пишете программы, если не секрет и как долго? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 13:44 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Вообще то на фоксе, а что странного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 13:48 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
А клиент для вашей Dll тоже на VFP написан? Иначе зачем тут XML ? С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 14:16 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaВообще то на фоксе, а что странного? Просто мы хотм понять, в чем у Вас проблема и какие Ваши возможности как программиста, чтобы показать правильный путь... Потому как правильно заметил Алексей - фраза "Dll компоненты, который обменивается с интерфейсом через XML пакеты" говорит о том, что тут пахнет "Delphi"... и очень мало от FoxPro... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 14:23 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Клиент тоже на фоксе написан, а компанента используется как COM+, преимущества те же, что и в многослойной архитектуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 14:54 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Sergey Ch Valentin_timaВообще то на фоксе, а что странного? Просто мы хотм понять, в чем у Вас проблема и какие Ваши возможности как программиста, чтобы показать правильный путь... Потому как правильно заметил Алексей - фраза "Dll компоненты, который обменивается с интерфейсом через XML пакеты" говорит о том, что тут пахнет "Delphi"... и очень мало от FoxPro... Нет! "Delphi" тут и не пахнет. все на фоксе до последней команды. А что не понятного в этой фразе? Компонента обменивается с клиентом данными через XML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 14:58 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Меня интересует то, что касается кода работы с данными через фоксовский SQL, вот что с этим кодом делать? Можно его каким то образом переработать на месте? И если можно, то как это лучше сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 15:06 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaХотелось бы узнать, что вы имели в виду - Другая идеология. Граната не той системы :). Есть такая прога, может слышал, 1С 7.7 называется. Вот ее разработчики в лоб на MS-SQL с файл-серверного варианта перевели. Идеология работы с базой как была файловая, так и осталась. Тормоз жуткий. При программировании клиент-сервера, идеология другая, абсолютно другой подход к получению данных, если с файл-сервером быстрее работа с записями, при этом к источнику данных можно постоянно быстро обращаться, то в клиент-сервере главное получить результат минимальным количеством обращений к базе. Valentin_timaВ нашей системе есть выделенный слой данных, в виде Dll компоненты, который обменивается с интерфейсом через XML пакеты. Вот только в этой компаненте и нужно сделать преобразования. А она в свою очередь содержит только методы доступа к данным через SQL команды, естественно в фоксовском формате. Вот эти методы требуется переработать. Как это лучше сделать? У кого есть опыт, тот может, я думаю дать реальные советы. Может использовать хранимые процедуры на сервере подобных методам компоненты? Или все же переработка кода. А может кто-то использовал другие пути? Простой заменой одного синтаксиса на другой не отделаться, даже если получится, то тормоз будет страшный. Совета типа "Сделай так и будет тебе счастье" никто не даст. Если задашь конкретный вопрос, получишь конкретный ответ. А разработчиков этой DLL спросить можешь? Может ТЗ или описаловка какая есть? Тебе надо четко представлять как эта DLL работает. В фоксе только один вид DLL бывает - COM-объекты, которые используются клиентским софтом, поэтому надо понять что делает каждый класс, и исходя из этого переписывать, можеть с нуля быстрей написать будет. Вероятно структура базы изменится. Valentin_timaЕсть на форуме кто-нибудь, кто переводил фоксовское приложение на SQL сервер? Переводил - писал с нуля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 15:10 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_tima Компонента обменивается с клиентом данными через XML. Уже теплее... А что клиент потом делает с этим XML, после приема его от Вашей "компоненты"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 15:12 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Sergey Ch Valentin_tima Компонента обменивается с клиентом данными через XML. Уже теплее... А что клиент потом делает с этим XML, после приема его от Вашей "компоненты"? Преобразует в VFP курсоры, т.е. происходит двусторонний обмен XML пакетами между клиентом и компанентой. А что это так важно? Вопрос то не совсем об этом, а точнее совсем не об этом... Как заставить компоненту работать с SQL Server'ом. Вот на этот вопрос хотелось бы получить ответы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 15:19 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Dima T Valentin_tima А разработчиков этой DLL спросить можешь? Может ТЗ или описаловка какая есть? Тебе надо четко представлять как эта DLL работает. В фоксе только один вид DLL бывает - COM-объекты, которые используются клиентским софтом, поэтому надо понять что делает каждый класс, и исходя из этого переписывать, можеть с нуля быстрей написать будет. Вероятно структура базы изменится. [quot Valentin_tima]Есть на форуме кто-нибудь, кто переводил фоксовское приложение на SQL сервер? Переводил - писал с нуля Dll'ки эти знаю, так как являюсь сопроводителем как раз этого добра. Тогда конкретный вопрос. Есть ли разница при работе с SQL Server'ом в СOM и COM+ технологии? Какие реальные преимущества дает CurcorAdapter и ADODB против использования SQLConnect, SQLExec. Какие преимущества при использовании CurcorAdapter против ADODB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 15:29 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaВот например мне не понятно, как бороться с таким кодом - Код: plaintext 1. 2. 3. 4. Сначала объясните, откуда Fox знает о существовании "некий курсор CurTO" ? Очевидно, клиент предварительно отправляет, а компонента выполняет нечто вроде "Select * from тра-та-та INTO Cursor CurTO" Что Вам мешает аналогично поступить с MSSQL ? *** Valentin_tima Вот только в этой компаненте и нужно сделать преобразования. А она в свою очередь содержит только методы доступа к данным через SQL команды, естественно в фоксовском формате. Насколько я себе представляю взаимодействие с компонентой происходит примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Что именно Вам мешает заменить < &Текст_SQL_запроса into tmpCursor > на < =SQLEXEC(КоннектДескриптор,Текст_SQL_запроса ,'tmpCursor' > ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 16:12 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_tima Преобразует в VFP курсоры, т.е. происходит двусторонний обмен XML пакетами между клиентом и компанентой. А что это так важно? .... Вот это очень важно... Получается, что Ваше приложение уже написано под клиент-серверную идеологию... Осталось только переписать как указано Выше запросы на прием данных от сервера и все... У меня работает аналогичный подход внутри Web Service - там идет внутри соединиение где надо с dbf или MS SQL Server... (на SQL Server я все сделал через хранимые процедуры - так проще по причине более развитого синтаксиса SQL)... Good luck! P.S. Как работать в FoxPro с MS SQL Server есть хорошие статьи на сайте Алексея или в VFP Help... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 16:27 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
По первому вопросу, данный курсор создается в коде из XML строки во входном параметре и далее используется, как видите, в запросе к источнику данных. Дело в том, что если послать на прямую этот запрос на сервер, то естественно сервер его не переварит, потому что просто не поймет. Как можно обйти подобные места в коде, а их как раз очень много? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 16:28 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Sergey Ch Valentin_tima Преобразует в VFP курсоры, т.е. происходит двусторонний обмен XML пакетами между клиентом и компанентой. А что это так важно? .... Вот это очень важно... Получается, что Ваше приложение уже написано под клиент-серверную идеологию... Осталось только переписать как указано Выше запросы на прием данных от сервера и все... У меня работает аналогичный подход внутри Web Service - там идет внутри соединиение где надо с dbf или MS SQL Server... (на SQL Server я все сделал через хранимые процедуры - так проще по причине более развитого синтаксиса SQL)... Good luck! P.S. Как работать в FoxPro с MS SQL Server есть хорошие статьи на сайте Алексея или в VFP Help... Вы очень правильно поняли мою проблему, сразу видно, что Вы имеете в этом вопросе опыт. Да, действительно приложение создавалось под идеалогию клиент-сервер. Вопрос: Каким способом Вы подключаетесь в серверу, и какие средства используете при работе с сервером через фокс (RV, ADO, CA, SPT) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 16:34 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaПо первому вопросу, данный курсор создается в коде из XML строки во входном параметре и далее используется, как видите, в запросе к источнику данных. Дело в том, что если послать на прямую этот запрос на сервер, то естественно сервер его не переварит, потому что просто не поймет. Как можно обйти подобные места в коде, а их как раз очень много? 1. перед запросом создать временную таблицу на сервере, заполнить и указать ее в запросе 2. перечислить список вместо подзапроса Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 16:36 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34177457&tid=1590237]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 412ms |

| 0 / 0 |
