|
|
|
Перевод кода на 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 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Dima T Valentin_timaПо первому вопросу, данный курсор создается в коде из XML строки во входном параметре и далее используется, как видите, в запросе к источнику данных. Дело в том, что если послать на прямую этот запрос на сервер, то естественно сервер его не переварит, потому что просто не поймет. Как можно обйти подобные места в коде, а их как раз очень много? 1. перед запросом создать временную таблицу на сервере, заполнить и указать ее в запросе 2. перечислить список вместо подзапроса Код: plaintext По первому пункту я понял, т.е. предполагется сначала создать ХП по формированию нужного курсора, а затем ее выполнить, а в фоксе в команде запроса указать имя таблицы. А вот второй пункт не совсем понял, что имеется в виду? Что это за список, если можно подробнее.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 16:44 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_tima1. перед запросом создать временную таблицу на сервере, заполнить и указать ее в запросе 2. перечислить список вместо подзапроса Код: plaintext По первому пункту я понял, т.е. предполагется сначала создать ХП по формированию нужного курсора, а затем ее выполнить, а в фоксе в команде запроса указать имя таблицы. А вот второй пункт не совсем понял, что имеется в виду? Что это за список, если можно подробнее..[/quot] Например тебе пришло на вход: TempTableId324364755и запрос Код: plaintext по п.1 надо Код: plaintext 1. 2. 3. 4. 5. Код: plaintext чем больше TempTable, тем длинее строка запроса получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 18:11 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaПоясню: Вот например мне не понятно, как бороться с таким кодом - 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, 18:24 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Igor86 Valentin_timaПоясню: Вот например мне не понятно, как бороться с таким кодом - 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'у? А получить в результате надо одну строку или несколько ??? CurTO - это TempTable в моем примере Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 18:30 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Dima T Valentin_tima1. перед запросом создать временную таблицу на сервере, заполнить и указать ее в запросе 2. перечислить список вместо подзапроса Код: plaintext По первому пункту я понял, т.е. предполагется сначала создать ХП по формированию нужного курсора, а затем ее выполнить, а в фоксе в команде запроса указать имя таблицы. А вот второй пункт не совсем понял, что имеется в виду? Что это за список, если можно подробнее.. Например тебе пришло на вход: TempTableId324364755и запрос Код: plaintext по п.1 надо Код: plaintext 1. 2. 3. 4. 5. Код: plaintext чем больше TempTable, тем длинее строка запроса получится.[/quot] Спасибо ... В общем то это реальный выход, по аналогии можно и с дугим кодом бооться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 18:32 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_tima Вы очень правильно поняли мою проблему, сразу видно, что Вы имеете в этом вопросе опыт. Да, действительно приложение создавалось под идеалогию клиент-сервер. Вопрос: Каким способом Вы подключаетесь в серверу, и какие средства используете при работе с сервером через фокс (RV, ADO, CA, SPT) ? Работаю с сервером SQL через SPT (закачиваю, что надо на "компонент" и затем передаю на клиента)... Насчет временных таблиц (курсоров) - в 95% случаев можно без них обойтись, так как синтаксис у MS SQL Server намного шире, чем синтаксис FoxPro. Я бы на Вашем месте переписал бы все на Хранимые процедуры серевра, а Ваш "компонент" бы просто передавал данные между приложением и сервером через параметры... К меня много работет таких приложений, только вместо "компонента" использую Web Service (так как по требованию заказчиков приложения должны работать через Интерент)... Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 18:45 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Sergey Ch Valentin_tima Вы очень правильно поняли мою проблему, сразу видно, что Вы имеете в этом вопросе опыт. Да, действительно приложение создавалось под идеалогию клиент-сервер. Вопрос: Каким способом Вы подключаетесь в серверу, и какие средства используете при работе с сервером через фокс (RV, ADO, CA, SPT) ? Работаю с сервером SQL через SPT (закачиваю, что надо на "компонент" и затем передаю на клиента)... Насчет временных таблиц (курсоров) - в 95% случаев можно без них обойтись, так как синтаксис у MS SQL Server намного шире, чем синтаксис FoxPro. Я бы на Вашем месте переписал бы все на Хранимые процедуры серевра, а Ваш "компонент" бы просто передавал данные между приложением и сервером через параметры... К меня много работет таких приложений, только вместо "компонента" использую Web Service (так как по требованию заказчиков приложения должны работать через Интерент)... Good luck! Т.е. как я понял, перенести методы компоненты на сервер, выполнив разумеется их адаптацию? В общем это конечно выход, тем более что Вы на практике используете такой метод. Значит от прямых запросов на сервер из кода следует лучше всего избавиться, я правильно понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 18:53 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_tima Т.е. как я понял, перенести методы компоненты на сервер, выполнив разумеется их адаптацию? В общем это конечно выход, тем более что Вы на практике используете такой метод. Значит от прямых запросов на сервер из кода следует лучше всего избавиться, я правильно понял? Да, я не делаю прямых запросов на сервер - передаю параметрами и возвращаю курсоры с необходимыми данными... С обнолением и вставкой данных немного сложнее, но если данных немного, то можно через параметры. В FoxPro это сделать проще, так как курсор можно легко преобразовать в XML текст и передать как параметр, потом в Вашем "компоненте" снова получить курсор и уже его "залить" в таблицу dbf... C MS SQL Server такой "фокус" я не пробовал, так как 2000 работал отвартительно плохо с XML, после чего я стал делать все через параметры к Хранимым процедурам... P.S. Но новые приложения я разрабатываю уже для работы непосредственно с SQL Server из самого приложения, так как этот серавер прекрасно работает по TCP/IP (то есть через Интернет, а использование Web Services замеляет процесс обмена данных официально на 30% , а по моей правтике в 2-3 раза). Таким образом с SQL Server проблемы обновления нет - для простых вариантов использую курсор-адаптер, для более ответсвенных - вызов хранимых процедур с параметрами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 20:03 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за помощь! Но думаю, что будет еще масса вопросов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 09:24 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Хотелось бы узнать насчет соединения с сервером, какая технология предпочтительнее, для каждого обращения отдельное соединение или одно глобальное соединение для всего сеанса работы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 10:03 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaХотелось бы узнать насчет соединения с сервером, какая технология предпочтительнее, для каждого обращения отдельное соединение или одно глобальное соединение для всего сеанса работы? Думаю для одного клиента - одно соединение, т.е. для сеанса. На установку соединения время тоже тратится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 10:17 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
В общем я с Вами согласен. Логичное представление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 10:43 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Меня волнует вопрос переноса данных на сервер, думаю что не только меня. Вот хотелось бы услышать, какими способаи это лучше делать? Я пробовал пользоваться фоксовским мастером и выявил такие проблемы: - В SQL Server'е отсутствуют некоторые типы данных имеющихся в фоксе и наоброт. - Мемо поля вообще не переносятся, в перенесенной таблице название поля есть а самих данных нет. - При переносе полей типа (С), на сервере они отображаются не верной кодовой страницей. - Некоторые таблицы мастер вообще отказывается переносить по непонятным мне причинам. У кого есть опыт - поделитесь.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 11:01 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Еще такой вопрос: - Как подключить СОМ+ компоненту к серверу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 12:11 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Сколько таблиц? Если меньше 100, то делал все вручную... Для большего количества есть утилиты, правда хороших бесплатных не видел - можете написать свою, это делается очень просто... Соединение я использую ODBC для MS SQL Server 2005 (Native client)... Если будете использовать Ваш "компонент" то соединение вначале сессии, закрытие в конце... Надеюсь, что DLL скомпилирована как multithreaded... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 12:16 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Sergey ChСколько таблиц? Если меньше 100, то делал все вручную... Для большего количества есть утилиты, правда хороших бесплатных не видел - можете написать свою, это делается очень просто... Соединение я использую ODBC для MS SQL Server 2005 (Native client)... Если будете использовать Ваш "компонент" то соединение вначале сессии, закрытие в конце... Надеюсь, что DLL скомпилирована как multithreaded... Что значит соединение в начале сессии, не совсем понял, и еще что означает multithreaded, single-threaded? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 12:22 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
И еще какой принцип написания своей утлилиты, через RV или еще както по другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 12:23 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaИ еще какой принцип написания своей утлилиты, через RV или еще както по другому? Я бы самому поиграться с этим посоветовал. Заодно все способы взаимодействия с SQL сервером поизучаешь. Я бы sqlexec() попользовал. Если база большая, то почитай про команду bulk insert у MS SQL, иначе все очень медленно будет любым способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 12:47 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Dima T Valentin_timaИ еще какой принцип написания своей утлилиты, через RV или еще както по другому? Я бы самому поиграться с этим посоветовал. Заодно все способы взаимодействия с SQL сервером поизучаешь. Я бы sqlexec() попользовал. Если база большая, то почитай про команду bulk insert у MS SQL, иначе все очень медленно будет любым способом. А почему не CursorAdapter? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 12:53 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
авторА почему не CursorAdapter? изв. за флуд любят мазохизм вначале подолбятся с екзеком + темповыми таблицами, потом еще строк на 50 повыпендриваются как на локале курсор обновить идеи КС в массы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 13:27 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
пишу "большую красную кнопку" для VFP9-CAD-ODBC если чего-то получится, покажу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 13:30 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaА почему не CursorAdapter? Потому что VFP6, я на 9 еще не перебрался. CursorAdapter соответственно сам не юзал и ничего про него не скажу. Я бы решал задачу переброса так: на вход имя таблицы 1. Разбираем структуру и создаем аналогичную таблицу в SQL сервере (в приаттаченном файлике пример разбора DBC контейнера) 2. Генерим файл с содержимым таблицы 3. sqlexec("bulk insert ...") 4. создаем индексы на SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 13:33 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
alex11100 авторА почему не CursorAdapter? изв. за флуд любят мазохизм вначале подолбятся с екзеком + темповыми таблицами, потом еще строк на 50 повыпендриваются как на локале курсор обновить идеи КС в массы! Господи.. alex11100, да не надоело вам всех крестить этим CA ?! Ну вы то должны понимать, что CD это просто красивая обретка над не любымым вами "екзеком " (кстати, не понял, причем тут "временные таблицы"). Ничего больше, что может SPT, CA не может. Что-то типа ADO, но не над OLE DB, а над SQLEXEC. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 14:03 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Aleksey-K alex11100 авторА почему не CursorAdapter? изв. за флуд любят мазохизм вначале подолбятся с екзеком + темповыми таблицами, потом еще строк на 50 повыпендриваются как на локале курсор обновить идеи КС в массы! Господи.. alex11100, да не надоело вам всех крестить этим CA ?! Ну вы то должны понимать, что CD это просто красивая обретка над не любымым вами "екзеком " (кстати, не понял, причем тут "временные таблицы"). Ничего больше, что может SPT, CA не может. Что-то типа ADO, но не над OLE DB, а над SQLEXEC. С уважением, Алексей. В общем то Вы правы, кроме того, что SQLEXEC возвращает не изменяемый сурсор, а СА буферизированный изменяемый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 14:09 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_timaВ общем то Вы правы, кроме того, что SQLEXEC возвращает не изменяемый сурсор, а СА буферизированный изменяемый. 1) SQLExec() возвращает изменяемый и буферизированный курсор. Его вполне можно редактировать, при этом не забывая, что он буферрезирован. Отменить буферизацию такого курсора невозможно в принципе. Как и в CursorAdapter 2) При желании, используя ряд настроек CursorSetProp(), полученный через SQLExec() курсор можно сделать обновляемым. Т.е. самому написать класс CursorAdapter. Как уже сказал Aleksey-K CursorAdapter - это просто некий класс-надстройка над SQLExec(). Все основные функции в SQLExec() уже заложены. CursorAdapter - это просто удобный интерфейс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 14:39 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Valentin_timaВ общем то Вы правы, кроме того, что SQLEXEC возвращает не изменяемый сурсор, а СА буферизированный изменяемый. 1) SQLExec() возвращает изменяемый и буферизированный курсор. Его вполне можно редактировать, при этом не забывая, что он буферрезирован. Отменить буферизацию такого курсора невозможно в принципе. Как и в CursorAdapter 2) При желании, используя ряд настроек CursorSetProp(), полученный через SQLExec() курсор можно сделать обновляемым. Т.е. самому написать класс CursorAdapter. Как уже сказал Aleksey-K CursorAdapter - это просто некий класс-надстройка над SQLExec(). Все основные функции в SQLExec() уже заложены. CursorAdapter - это просто удобный интерфейс. Ну тогда SQLExec() должен уметь коннектиться через АDO, а он это умеет? Иначе это принципиальное отличие от СА. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 15:05 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
2 Valentin_tima, используй КАД он позволяет абстрагироваться от сервера, курсоров ..., позволяет правильно моделировать процессы получения и обновления данных но только 9-ю версию лисы нужно использовать sqlexec - это трудоемкий ручной способ работы с сервером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 15:43 |
|
||
|
Перевод кода на MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Valentin_tima Valentin_tima В общем то Вы правы, кроме того, что SQLEXEC возвращает не изменяемый сурсор, а СА буферизированный изменяемый. Ну тогда SQLExec() должен уметь коннектиться через АDO, а он это умеет? Иначе это принципиальное отличие от СА. Интересно, какое отношение технология ADO имеет к типу возвращаемого курсора Cursor Adapter - это объединение 4 принципиально разных технологий доступа к данным в одном интерфейсе Native - прямой доступ к DBF средствами FoxPro ODBC ADO XML Т.е. внешне, вроде бы все однаково, но "начинка" принципиально разная SQLExec() - это одна из 4 технологий. В данном случае ODBC. Для работы через ADO используют другие механизмы. НЕ SQLExec(). В свою очередь CursorAdapter является оберткой и над этими другими механизмами. КАЖДУЮ из этих 4 технологий можно реализовать без CursorAdapter. В одних случаях это будет просто, в других - сложно. Технология ADO - это "не естесственный" механизм доступа к данным с точки зрения FoxPro. Поэтому реализовать такой механизм вне CursorAdapter можно, но потребует значительных усилий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 15:49 |
|
||
|
|

start [/forum/topic.php?all=1&fid=41&tid=1590237]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 373ms |

| 0 / 0 |
