Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.12.2011, 00:25
|
|||
---|---|---|---|
|
|||
Проблема с SQL view |
|||
#18+
Не могу понять в чем проблема. Скорее всего вопрос больше относится не к Visual FoxPro, а к SQL Server. В программе на VFP9 спомощью "create view" на SQL Server (2000) создаются два разных представления, на разных таблицах, но называются они ASX_ и ASXX. В результате на SQL Server вижу два одинаковых представления. Представление ASX_ имеет код представления ASXX (в design view) и соответственно показывают одинаковый результат. Но стоит переименовать ASX_ например в ASY_ на SQL Server , как отображается правильный код.. :-( Если руками на SQL Server перебрать код ASX_ предстваления он сохраняется правильный. К сожалению требуется при создании новой базы это представление формировать программно. Может кто знает как эту проблему можно решить..? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.12.2011, 12:21
|
|||
---|---|---|---|
Проблема с SQL view |
|||
#18+
Приведите полный код того, что Вы делаете. Если я правильно понимаю, речь идет о создание View непосредственно на сервере при помощи SQLExec(lnCH, "create view ..."). Вот и покажите, как Вы конструируете строку запроса, как передаете ее серверу, как обрабатываете возможные ошибки. И, кстати, а зачем представления-то создавать? В смысле, зачем менять структуру базы данных SQL-сервера? Нельзя простые запросы выполнить? Ну, или создать View в FoxPro? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.12.2011, 13:06
|
|||
---|---|---|---|
|
|||
Проблема с SQL view |
|||
#18+
Спасибо Вам , Владимир, за внимание к моей проблеме. comsql=" create view ASX_ as select ASO_.HA_, ASO_.HB_, KLI.MQ_ as MQO, KLI.MR_ as MRO from ASO_ INNER JOIN KLI ON ASO_.HD_ = KLI.MP_ where ASO_.HA_>0" rezsql=sqlexec(This.Pdesc,comsql) if rezsql<0 * сообщение об ошибке, сюда ни разу не попала endif comsql=" create view ASXX as select ASO.HA_, ASO.HB_, ' ' as MQO, ' ' as MRO from ASO where ASO.HA_>0 and not exists (select MP_ from KLI where ASO.HD_=KLI.MP_)" rezsql=sqlexec(This.Pdesc,comsql) if rezsql<0 * сообщение об ошибке endif Структура базы SQL Serever не меняется, она создается. Данная ситуация возникает при создании новой базы. К сожалению , я не первоначальный хозяин программного кода :-) - я его дорабатываю. У заказчика много новых пользователей и ,кроме того, периодически они начинают работать с чистой базы или с копии. В этот момент программным путем происходит формирование новой базы и ее заполнение. Поэтому когда мне пришлось вносить изменения в код , основанный на представлении ASX_ я не могла понять почему программа работает не так как ожидалось и обнаружила что код представления ASX_ другой, а следовательно и возвращаемый им результат другой. Я не сталкивалась с таким интересным моментом, что когда представление на SQL- сервере переименовываешь , ему возвращается правильный код.. значит где-то ж он есть. Можно конечно предложить выход – менять представление руками на SQL- сервере :-) – как ни странно оно сохраняется правильно , но это не выход. Есть еще один самый простой выход, хотя он влечет пресмотр всего комплекса - изменить имя представления , например ASXX на ASYX. Но интересно же в чем проблема.... на первый взгля кажется что символ "_" (подчеркивания) воспринимается как любая буква.. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.12.2011, 15:05
|
|||
---|---|---|---|
Проблема с SQL view |
|||
#18+
Стандартным способом "экранирования" имен объектов в MS SQL являются квадратные скобки. Т.е. все имена, особенно, если они имеют предположительно не стандартные символы, желательно обрамлять квадратными скобками. Примерно так Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Кроме того, можно получить скрипт создания View непосредственно в SQL Manager. Правой кнопокй мыши по имени View и в контекстном меню выбрать пункт "Script View as" \ Create to \ New query editor window. Правда, это для MS SQL 2005, но, если не ошибаюсь, для 2000 было примерно также. Так вот, созданный таким образом скрипт имя создаваемого View обязательно обрамляет квадратными скобками. Имена таблиц и полей-источников - по разному. Но имя нового объекта - обязательно! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.12.2011, 02:40
|
|||
---|---|---|---|
|
|||
Проблема с SQL view |
|||
#18+
Не получается к сожалению.. :-( Всеравно предстваление ASX_ показывает код представления ASXX. Я нашла где генерируется скрипт SQL 2000. Но SQL сервер генерирует скрипт один к одному тот котрый я написала в фоксе.. Я даже одному реквизиту случайно пропустила скобки он такой же и сгенерировал... Но вот в Design View показывается код ASXX и результат работы представления такой как у ASXX. Может это всетаки какой-нибудь глюк SQL Server 2000. Пока решили переименовать представление. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.12.2011, 18:18
|
|||
---|---|---|---|
Проблема с SQL view |
|||
#18+
Глупый вопрос. А если команды поменять местами? В смысле, сначала создать ASXX, а потом ASX_? А если в разных соединениях? И еще, если дать те же самые команды напрямую в SQL-manager результат будет такой же? В смысле, это ошибка именно следствие передачи DDL-команд через SQLExec() или это какая-то фича самого SQL-сервера? PS: У меня нет SQL 2000, поэтому проверить не могу. Только предположения. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=41&mobile=1&tid=1583906]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 254ms |
total: | 404ms |
0 / 0 |