Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Тимошенко Дмитрий
Статус: Студент
Рейтинг: 340
∙ повысить рейтинг >>
Megaloman
Статус: Практикант
Рейтинг: 334
∙ повысить рейтинг >>
Чичерин Вадим Викторович
Статус: 10-й класс
Рейтинг: 334
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск №918
Дата выхода:05.08.2009, 22:35
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:362 / 92
Вопросов / ответов:1 / 3

Вопрос № 170965: Здравствуйте! Проблема такая. На vbs подключаюсь к MS SQL. Делаю запрос, для простоты решим что получаю только одно значение в результате выполнения запроса . Не важно какого. Важно другое. Если результат запроса возвращает хоть что-то, или NUL...



Вопрос № 170965:

Здравствуйте!
Проблема такая. На vbs подключаюсь к MS SQL. Делаю запрос, для простоты решим что получаю только одно значение в результате выполнения запроса . Не важно какого. Важно другое.
Если результат запроса возвращает хоть что-то, или NULL то это можно анализировать - работает if IsNull(recordset) = True или просто из recordset можно взять значение.
Но! Если запрос вообще не возвращает значений - как отследить это? Is Null уже не работает. Есть мысль просто проверить число возвращаемых строк в recordset и если меньше 1 то значит запрос значений не возвратил. Но как это сделать, подскажите?

Отправлен: 31.07.2009, 22:28
Вопрос задал: ALEX_SE, Профессионал
Всего ответов: 3
Страница вопроса >>


Отвечает Megaloman, Практикант :
Здравствуйте, ALEX_SE. Ответ:

N_Eta_Rec = Recset.RecordCount

К сожалению, дома у меня нет базы MS SQL. Для проверки ответа воспользовался тем, что было под руками.
Но это и не принципиально. Вот пример, который организует запрос к DBF-таблице и подсчитывает число записей в курсоре выбранных данных. У Вас будет, естественно, свой способ подсоединиться к базе данных MsSql.
Тип курсора -статический.
Код:
' Скрипт делает запрос к таблице DBF 
' В выбранных данных подсчитывается число строк

Eta = "Banks" ' Имя таблицы .dbf
Eta_Dir = "P:\Scripts" ' Путь к таблице .dbf

' Драйверы на соединение с таблицами
Eta_Connect = "Driver={Microsoft dBase Dri ver (*.dbf)};DefaultDir=" + Eta_Dir

' Получим кодичество записей таблицы

Set Recset = CreateObject("ADODB.Recordset")
Recset.CursorType = 3

' Recset.Open "Select * From " + Eta, Eta_Connect
Recset.Open "Select * From " + Eta + " Where MFO='NNNNNNNNN'", Eta_Connect

N_Eta_Rec = Recset.RecordCount

Set WS = CreateObject("WScript.Shell")

Mess = MsgBox(N_Eta_Rec)
При ответе использовал книгу
А.Попов
Windows Script Host для Windows 2000/XP
"БХВ-Питербург" 2003г.

-----
Нет времени на медленные танцы

Ответ отправил: Megaloman, Практикант
Ответ отправлен: 01.08.2009, 12:36

Оценка ответа: 5

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252819 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает lupus campestris, Модератор :
    Здравствуйте, ALEX_SE.
    Я не специалист по Visual Basic, но эта ситуация встречается для разных языков программирования и баз данных, поэтому могу предложить другой вариант решения этой проблемы. Скорее всего в Visual Basic тоже есть какой-то аналог "ИЛИ" - или or, или ||, или какой-то свой вариант. То есть, например, после выполнения запроса присвоить переменной полученное значение ИЛИ какое-то заданное значение:
    test=query || 'nothing'
    Тогда если результат запроса будет определен, то это значение будет присвоено, если нет - то Ваше альтернативное, и Вы сможете всегда определить, что именно произошло.
    Удачи!
    -----
    «С кем тяжело молчать, с тем не о чем говорить» (Метерлинк)

    Ответ отправил: lupus campestris, Модератор
    Ответ отправлен: 02.08.2009, 21:04
    Россия, Москва
    Адрес сайта: http://lupus-campestris.blogspot.com/

    Оценка ответа: 4

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252845 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Тесленко Евгений Алексеевич, Практикант :
    Здравствуйте, ALEX_SE.
    в дополнение ответа Megaloman
    в отсутствии записей можно убедиться проверив EOF

    Код:
    Set Recset = CreateObject("ADODB.Recordset")
    sConnect = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=sDB;Data
    Source=sqlServer"
    sSQL = "SELECT * FROM tbl"
    Recset.Open sSQL, sConnect
    If Recset.EOF Then MsgBox "Not record", vbOKOnly, ""
    Евгений

    Ответ отправил: Тесленко Евгений Алексеевич, Практикант
    Ответ отправлен: 02.08.2009, 22:21

    Оценка ответа: 5

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252848 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск >>
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки >>

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.6 от 21.07.2009

    В избранное