<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3916638</guid>
        <pubDate>Sat, 25 Jan 2025 18:44:35 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3916638</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3916169'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Evgi1980 &#064; <time class="tag-quote__quoted-time" datetime="2025-01-16T12:46:36+03:00">16.01.25, 09:46</time></span><div class='quote '></div></div><br>
<br>
Я бы спросил у мелкософта. Хоть и вероятность ответа минимальная. Но имхо дело не в mfc, а в DAO ибо MFC к этому отношения не имеет от слова совсем.]]></description>
        <author>sharky72</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3916169</guid>
        <pubDate>Thu, 16 Jan 2025 09:46:36 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3916169</link>
        <description><![CDATA[Evgi1980: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3915339'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-21T07:22:44+00:00">21.12.24, 07:22</time></span><div class='quote '>Еще один вопросик-уточнение: та программа, которая норм работает, и та, которая глючит - они подключаются к одному и тому же серверу БД?</div></div><br>
Это одни и те же исходники, собранные разными студиями VC2010 и VS2022 (соответственно разные версии библиотеки mfc), база конечно же то же одна и таже. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-01-16T09:48:27+00:00">16.01.25, 09:48</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3915340'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MIF &#064; <time class="tag-quote__quoted-time" datetime="2024-12-21T07:57:51+00:00">21.12.24, 07:57</time></span><div class='quote '>MovePrev команда выбрасывает ошибку на forward-only рекордсетах. Возможно, что одна среда создает static а другая forward-only курсор.</div></div><br>
Именно, версия mfc на VS2022 почему то переводит курсор на forwardonly]]></description>
        <author>Evgi1980</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3915340</guid>
        <pubDate>Sat, 21 Dec 2024 07:57:51 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3915340</link>
        <description><![CDATA[MIF: MovePrev команда выбрасывает ошибку на forward-only рекордсетах. Возможно, что одна среда создает static а другая forward-only курсор.]]></description>
        <author>MIF</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3915339</guid>
        <pubDate>Sat, 21 Dec 2024 07:22:44 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3915339</link>
        <description><![CDATA[Majestio: Еще один вопросик-уточнение: та программа, которая норм работает, и та, которая глючит - они подключаются к одному и тому же серверу БД?]]></description>
        <author>Majestio</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3915315</guid>
        <pubDate>Fri, 20 Dec 2024 11:52:13 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3915315</link>
        <description><![CDATA[Evgi1980: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3914823'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-12T14:50:04+00:00">12.12.24, 14:50</time></span><div class='quote '>ты разбирался, почему твой код в новой системе выдаёт &quot;Оператор SQL выполняется напрямую, без курсора&quot;</div></div><br>
В этом сообщении и есть вся проблема.<br>
Это сообщение не появляется с использованием библиотек mfc100, но появляется с использованием mfc140.<br>
Причину определить не удалось.]]></description>
        <author>Evgi1980</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914823</guid>
        <pubDate>Thu, 12 Dec 2024 14:50:04 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914823</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>Evgi1980</strong>, жаль что не смог помочь, сорян&#33; :( <br>
<br>
Просто я никогда не работал ни с компиляторами M&#036;, ни с его SQL-сервером, ни разу. Думал прокатит &quot;на обще-стандартных подходах&quot;. Не прокатило :(<br>
<br>
Вопрос, так, для уточнения ... в коде:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">rs.Open(CRecordset::snapshot, (LPCTSTR)&quot;{CALL dbo.test2}&quot;, CRecordset::readOnly | CRecordset::noDirtyFieldCheck);</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Ты пробовал действительно <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">CALL dbo.test2</span></span>, а не твой старый <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">CALL test2</span></span>?<br>
<br>
Но всеже, и если нет и не прокатило ... ты разбирался, почему твой код в новой системе выдаёт &quot;Оператор SQL выполняется напрямую, без курсора&quot;? Мне почему-то чуйка подсказывает, что последующие операторы <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">rs.MoveNext();</span></span> и <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">rs.MovePrev();</span></span> не могут работать без &quot;курсора&quot;. <br>
<br>
Чисто совет от балды:<br>
<br>
1) Прочитай, действительно ли операторы <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">rs.MoveNext();</span></span> и <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">rs.MovePrev();</span></span> могут/не могут работать без курсора?<br>
2) Выясняй причину &quot;Оператор SQL выполняется напрямую, без курсора&quot;. Если эта причина - ищи как сделать &quot;с курсором&quot;. Но есть ещё момент ... этот подход вполне может зафиксится как &quot;устаревший&quot;, времени то прошло много&#33; И если &quot;да&quot; смотри &quot;современный&quot; варик&#33;]]></description>
        <author>Majestio</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914770</guid>
        <pubDate>Thu, 12 Dec 2024 07:54:08 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914770</link>
        <description><![CDATA[Evgi1980: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3914420'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-06T09:40:42+00:00">06.12.24, 09:40</time></span><div class='quote '>Скину тебе ответ ChatGPT, может быть поможет. Дальше, увы, не знаю.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>Проблема с кодом</strong><br>
<br>
Судя по вашему описанию, ошибка синтаксиса в хранимой процедуре может быть связана с изменениями в версии SQL Server или в настройках подключения, используемых в Visual Studio 2022. Давайте рассмотрим несколько возможных причин и решений.<br>
<br>
<strong class='tag-b'>Возможные причины ошибки</strong><br>
<br>
<ol class="tag-list" type="1"><li>Изменения в SQL Server: Если вы используете более новую версию SQL Server, возможно, некоторые синтаксические правила изменились. Убедитесь, что ваша хранимая процедура соответствует стандартам SQL для вашей версии сервера.</li><li>Проблемы с подключением: Проверьте, правильно ли настроено подключение к базе данных в Visual Studio 2022. Возможно, параметры подключения отличаются от тех, что использовались в VS 2010.</li><li>Использование executeDirect: Попробуйте убрать флаг CRecordset::executeDirect. Этот флаг может вызывать проблемы с выполнением хранимых процедур в некоторых версиях Visual Studio. Попробуйте использовать просто CRecordset::snapshot и CRecordset::readOnly.</li></ol><br>
<strong class='tag-b'>Рекомендации по исправлению</strong><br>
<br>
Попробуйте изменить ваш код следующим образом:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">rs.Open(CRecordset::snapshot, (LPCTSTR)&quot;{CALL dbo.test2}&quot;, CRecordset::readOnly | CRecordset::noDirtyFieldCheck);</div></ol></div></div></div></div><br>
Обратите внимание на добавление dbo. перед именем процедуры. Это может помочь, если у вас есть несколько схем в базе данных.<br>
<br>
<strong class='tag-b'>Проверка хранимой процедуры</strong><br>
<br>
Также убедитесь, что ваша хранимая процедура действительно создана и доступна в базе данных. Вы можете выполнить следующий запрос в SQL Server Management Studio, чтобы проверить:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">EXEC dbo.test2;</div></ol></div></div></div></div><br>
Если процедура выполняется без ошибок, значит, проблема скорее всего в коде C++ или в настройках подключения.<br>
<br>
Если после всех этих изменений проблема не решится, попробуйте посмотреть на сообщения об ошибках, которые предоставляет Visual Studio, чтобы получить больше информации о том, что именно не так.</div></div></div></div><br>
Пробовал ставить разные вариации флагов при открытии рекордсета, эффекта не дает.<br>
Хранимку, как я уже писал, запускал в SQL Managment Studio через <strong class='tag-b'>exec dbo.test2</strong>, все прекрасно работает.]]></description>
        <author>Evgi1980</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914420</guid>
        <pubDate>Fri, 06 Dec 2024 09:40:42 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914420</link>
        <description><![CDATA[Majestio: Скину тебе ответ ChatGPT, может быть поможет. Дальше, увы, не знаю.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>Проблема с кодом</strong><br>
<br>
Судя по вашему описанию, ошибка синтаксиса в хранимой процедуре может быть связана с изменениями в версии SQL Server или в настройках подключения, используемых в Visual Studio 2022. Давайте рассмотрим несколько возможных причин и решений.<br>
<br>
<strong class='tag-b'>Возможные причины ошибки</strong><br>
<br>
<ol class="tag-list" type="1"><li>Изменения в SQL Server: Если вы используете более новую версию SQL Server, возможно, некоторые синтаксические правила изменились. Убедитесь, что ваша хранимая процедура соответствует стандартам SQL для вашей версии сервера.</li><li>Проблемы с подключением: Проверьте, правильно ли настроено подключение к базе данных в Visual Studio 2022. Возможно, параметры подключения отличаются от тех, что использовались в VS 2010.</li><li>Использование executeDirect: Попробуйте убрать флаг CRecordset::executeDirect. Этот флаг может вызывать проблемы с выполнением хранимых процедур в некоторых версиях Visual Studio. Попробуйте использовать просто CRecordset::snapshot и CRecordset::readOnly.</li></ol><br>
<strong class='tag-b'>Рекомендации по исправлению</strong><br>
<br>
Попробуйте изменить ваш код следующим образом:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">rs.Open(CRecordset::snapshot, (LPCTSTR)&quot;{CALL dbo.test2}&quot;, CRecordset::readOnly | CRecordset::noDirtyFieldCheck);</div></ol></div></div></div></div><br>
Обратите внимание на добавление dbo. перед именем процедуры. Это может помочь, если у вас есть несколько схем в базе данных.<br>
<br>
<strong class='tag-b'>Проверка хранимой процедуры</strong><br>
<br>
Также убедитесь, что ваша хранимая процедура действительно создана и доступна в базе данных. Вы можете выполнить следующий запрос в SQL Server Management Studio, чтобы проверить:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">EXEC dbo.test2;</div></ol></div></div></div></div><br>
Если процедура выполняется без ошибок, значит, проблема скорее всего в коде C++ или в настройках подключения.<br>
<br>
Если после всех этих изменений проблема не решится, попробуйте посмотреть на сообщения об ошибках, которые предоставляет Visual Studio, чтобы получить больше информации о том, что именно не так.</div></div>]]></description>
        <author>Majestio</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914419</guid>
        <pubDate>Fri, 06 Dec 2024 09:14:06 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914419</link>
        <description><![CDATA[Evgi1980: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3914346'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-05T10:28:43+00:00">05.12.24, 10:28</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3914345'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Evgi1980 &#064; <time class="tag-quote__quoted-time" datetime="2024-12-05T10:12:51+00:00">05.12.24, 10:12</time></span><div class='quote '>С хранимой процедурой все в порядке.</div></div><br>
Мне просто интересно - это ты проверил, или это ты уверен?</div></div><br>
Я ее лично запускал в SQL Managment Studio. <br>
Да и по телу хранимки видно что все там нормально.]]></description>
        <author>Evgi1980</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914346</guid>
        <pubDate>Thu, 05 Dec 2024 10:28:43 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914346</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3914345'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Evgi1980 &#064; <time class="tag-quote__quoted-time" datetime="2024-12-05T10:12:51+00:00">05.12.24, 10:12</time></span><div class='quote '>С хранимой процедурой все в порядке.</div></div><br>
Мне просто интересно - это ты проверил, или это ты уверен?]]></description>
        <author>Majestio</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914345</guid>
        <pubDate>Thu, 05 Dec 2024 10:12:51 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914345</link>
        <description><![CDATA[Evgi1980: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3914340'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-05T09:49:52+00:00">05.12.24, 09:49</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3914339'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Evgi1980 &#064; <time class="tag-quote__quoted-time" datetime="2024-12-05T09:46:06+00:00">05.12.24, 09:46</time></span><div class='quote '>Дело в том что это огромный проект написанный с использованием Visual Studio 2010, который внедрен во множество организаций.<br>
Огромное количество хранимых процедур так же давно уже написаны и работают в данном проекте.<br>
Была попытка перевести проект на Visual Studio 2022 с использованием последнего набора инструментов платформы, которая привела к данным проблемам.<br>
Все примеры которые были приведены в данной теме сильно упрощены для демонстрации проблемы.</div></div><br>
Я соболезную :whistle: Но разве тебе не интересно самому - почему у тебя в новой студии &quot;<strong class='tag-b'>Неправильный синтаксис около ключевого слова &quot;<span class="tag-color tag-color-named" data-value="blue" style="color: blue">declare</span>&quot;</strong>&quot;?</div></div><br>
С хранимой процедурой все в порядке.<br>
Библиотеки из последней версии platform toolset перестали нормально работать с sql.]]></description>
        <author>Evgi1980</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914340</guid>
        <pubDate>Thu, 05 Dec 2024 09:49:52 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914340</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3914339'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Evgi1980 &#064; <time class="tag-quote__quoted-time" datetime="2024-12-05T09:46:06+00:00">05.12.24, 09:46</time></span><div class='quote '>Дело в том что это огромный проект написанный с использованием Visual Studio 2010, который внедрен во множество организаций.<br>
Огромное количество хранимых процедур так же давно уже написаны и работают в данном проекте.<br>
Была попытка перевести проект на Visual Studio 2022 с использованием последнего набора инструментов платформы, которая привела к данным проблемам.<br>
Все примеры которые были приведены в данной теме сильно упрощены для демонстрации проблемы.</div></div><br>
Я соболезную :whistle: Но разве тебе не интересно самому - почему у тебя в новой студии &quot;<strong class='tag-b'>Неправильный синтаксис около ключевого слова &quot;<span class="tag-color tag-color-named" data-value="blue" style="color: blue">declare</span>&quot;</strong>&quot;?]]></description>
        <author>Majestio</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914339</guid>
        <pubDate>Thu, 05 Dec 2024 09:46:06 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914339</link>
        <description><![CDATA[Evgi1980: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3914330'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-05T08:37:03+00:00">05.12.24, 08:37</time></span><div class='quote '>Тогда, я думаю, имеет смысл - сперва не кодить, а погонять сперва в каком-нибудь SQL-клиенте (<a class='tag-url' href='https://rutracker.org/forum/viewtopic.php?t=5911577' target='_blank'>рекомендую этот</a>). Записать там хранимые процедуры, выполнить там ручные SQL-запросы, с задействованием написанной хранимой процедуры. И убедиться, что этот &quot;первый шаг&quot; отрабатывает нормально.</div></div><br>
Дело в том что это огромный проект написанный с использованием Visual Studio 2010, который внедрен во множество организаций.<br>
Огромное количество хранимых процедур так же давно уже написаны и работают в данном проекте.<br>
Была попытка перевести проект на Visual Studio 2022 с использованием последнего набора инструментов платформы, которая привела к данным проблемам.<br>
Все примеры которые были приведены в данной теме сильно упрощены для демонстрации проблемы.]]></description>
        <author>Evgi1980</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914330</guid>
        <pubDate>Thu, 05 Dec 2024 08:37:03 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914330</link>
        <description><![CDATA[Majestio: Тогда, я думаю, имеет смысл - сперва не кодить, а погонять сперва в каком-нибудь SQL-клиенте (<a class='tag-url' href='https://rutracker.org/forum/viewtopic.php?t=5911577' target='_blank'>рекомендую этот</a>). Записать там хранимые процедуры, выполнить там ручные SQL-запросы, с задействованием написанной хранимой процедуры. И убедиться, что этот &quot;первый шаг&quot; отрабатывает нормально.]]></description>
        <author>Majestio</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914329</guid>
        <pubDate>Thu, 05 Dec 2024 07:59:34 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914329</link>
        <description><![CDATA[Evgi1980: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454168&view=findpost&p=3914294'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-04T14:54:29+00:00">04.12.24, 14:54</time></span><div class='quote '>В этой теме я в районе нуля, но у меня есть друг ChatGPT ;) Он посоветовал слегка изменить код хранимой процедуры:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">CREATE PROCEDURE dbo.test2</div><div class="code_line">AS</div><div class="code_line">BEGIN</div><div class="code_line">&nbsp;&nbsp; &nbsp;SELECT 1 AS Value</div><div class="code_line">&nbsp;&nbsp; &nbsp;UNION ALL</div><div class="code_line">&nbsp;&nbsp; &nbsp;SELECT 2 AS Value</div><div class="code_line">END</div><div class="code_line">GO</div></ol></div></div></div></div><br>
Но это, сам понимаешь, метод научного тыка. На авось.</div></div><br>
В том то и дело что обычно в хранимке перед финальным select&#39;ом почти всегда есть сложные расчеты с объявлением переменных и т.д.<br>
Поэтому я намеренно для примера сделал такую хранимку.]]></description>
        <author>Evgi1980</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914294</guid>
        <pubDate>Wed, 04 Dec 2024 14:54:29 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914294</link>
        <description><![CDATA[Majestio: В этой теме я в районе нуля, но у меня есть друг ChatGPT ;) Он посоветовал слегка изменить код хранимой процедуры:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">CREATE PROCEDURE dbo.test2</div><div class="code_line">AS</div><div class="code_line">BEGIN</div><div class="code_line">&nbsp;&nbsp; &nbsp;SELECT 1 AS Value</div><div class="code_line">&nbsp;&nbsp; &nbsp;UNION ALL</div><div class="code_line">&nbsp;&nbsp; &nbsp;SELECT 2 AS Value</div><div class="code_line">END</div><div class="code_line">GO</div></ol></div></div></div></div><br>
Но это, сам понимаешь, метод научного тыка. На авось.]]></description>
        <author>Majestio</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914286</guid>
        <pubDate>Wed, 04 Dec 2024 12:35:45 +0000</pubDate>
        <title>Вызов хранимой процедуры и хождение по выборке вперед и назад</title>
        <link>https://forum.sources.ru/index.php?showtopic=454168&amp;view=findpost&amp;p=3914286</link>
        <description><![CDATA[Evgi1980: Есть код который прекрасно работает в Visual Studio 2010, но который не работает с набором инструментов платформы выше чем Visual Studio 2010.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &quot;afxdb.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">class CTestRecordset : public CRecordset</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;CTestRecordset(CDatabase* pDatabase = NULL) :</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CRecordset(pDatabase)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m_nFields = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int m_rc;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual void DoFieldExchange(CFieldExchange* pFX);</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">void CTestRecordset::DoFieldExchange(CFieldExchange* pFX)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;pFX-&#62;SetFieldType(CFieldExchange::outputColumn);</div><div class="code_line">&nbsp;&nbsp; &nbsp;RFX_Int(pFX, (LPCTSTR)&quot;rc&quot;, m_rc);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void CTestDlg::OnBnClickedButton1()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;CString t;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CDatabase db;</div><div class="code_line">&nbsp;&nbsp; &nbsp;db.OpenEx((LPCTSTR)&quot;DSN=[I]ODBCName[/I];UID=[I]LoginName[/I];PWD=[I]Password[/I]&quot;, CDatabase::useCursorLib | CDatabase::noOdbcDialog);</div><div class="code_line">&nbsp;&nbsp; &nbsp;CTestRecordset rs(&amp;db);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;rs.Open(CRecordset::snapshot, (LPCTSTR)&quot;{CALL test2}&quot;, CRecordset::readOnly | CRecordset::executeDirect | CRecordset::noDirtyFieldCheck);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;t.Format(&quot;Open: %d&quot;, rs.m_rc);</div><div class="code_line">&nbsp;&nbsp; &nbsp;::AfxMessageBox(t);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;rs.MoveNext();</div><div class="code_line">&nbsp;&nbsp; &nbsp;t.Format(&quot;MoveNext: %d&quot;, rs.m_rc);</div><div class="code_line">&nbsp;&nbsp; &nbsp;::AfxMessageBox(t);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;rs.MovePrev();</div><div class="code_line">&nbsp;&nbsp; &nbsp;t.Format(&quot;MovePrev: %d&quot;, rs.m_rc);</div><div class="code_line">&nbsp;&nbsp; &nbsp;::AfxMessageBox(t);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;rs.Close();</div><div class="code_line">&nbsp;&nbsp; &nbsp;db.Close();</div><div class="code_line">}</div></ol></div></div></div></div><br>
<strong class='tag-b'>Хранимая процедура:</strong><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">create proc dbo.test2</div><div class="code_line">as</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;declare @rc1 int = 1</div><div class="code_line">&nbsp;&nbsp; &nbsp;declare @rc2 int = 2</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;select @rc1 </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;union all</div><div class="code_line">&nbsp;&nbsp; &nbsp;select @rc2</div><div class="code_line">end</div><div class="code_line">go</div></ol></div></div></div></div><br>
Например, если в Visual Studio 2022 в настройках проекта указан <strong class='tag-b'>набор инструментов платформы</strong> = &quot;Visual Studio 2022 (v143)&quot;,<br>
то происходит падение на <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>rs.MovePrev()</div></div> <br>
с ошибкой <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>&quot;Fetch type out of range&quot;</div></div><br>
Я запустил профайлер и стал смотреть что в нем происходит проходя по шагам функцию <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>CTestDlg::OnBnClickedButton1</div></div> <br>
и увидел что после выполнения <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>rs.Open(CRecordset::snapshot, (LPCTSTR)&quot;{CALL test2}&quot;, CRecordset::readOnly | CRecordset::executeDirect | CRecordset::noDirtyFieldCheck);</div></div> <br>
в профайлере появляются следующие ошибки<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Неправильный синтаксис около ключевого слова &quot;declare&quot;.</div></div><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Оператор SQL выполняется напрямую; без курсора.</div></div><br>
после чего идет вызов хранимой процедуры.<br>
Последняя ошибка объясняет почему происходит падение на <strong class='tag-b'>rs.MovePrev()</strong>, т.к. использование курсора было принудительно отменено.<br>
<br>
Если этот же код проходить по шагам в Visual Stusio 2010, то данных ошибок в профайлере нет и <strong class='tag-b'>rs.MovePrev()</strong> выполняется корректно.<br>
<br>
Подскажите кто знает, что можно сделать что бы данный код работал на более старших версиях чем Visual Stusio 2010?]]></description>
        <author>Evgi1980</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      </channel>
      </rss>
	