Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
texnik-san
шапоклякистка 8-го дня
3641 / 2202 / 390
Регистрация: 26.06.2015
Сообщений: 4,648
Записей в блоге: 1
1

Проект .adp: получить ОДНО значение с свервера - какие способы есть, какой способ лучше?

06.09.2016, 13:50. Просмотров 404. Ответов 1
Метки нет (Все метки)

Дано: 1) проект .adp, подключенный к базе даных на сервере MS SQL Server.
2) текст запроса, выбирающий ровно одно значение (одно поле, одна запись).

Требуется: присвоить это значение переменной.

Какие способы я знаю:

1) вместо запроса использовать функцию по подмножеству (к примеру DLookup).

2) на основе запроса открыть рекордсет, взять значение нулевого поля

Visual Basic
1
2
3
4
5
6
7
8
Public Function GetValue(strSQL As String)
Dim cnx As ADODB.Connection, rst As ADODB.Recordset
    Set cnx = CurrentProject.Connection
    Set rst = cnx.Execute(strSQL)
    If Not rst.EOF Then GetValue = rst.Fields(0)
    rst.Close: Set rst = Nothing
    Set cnx = Nothing
End Function
3) на сервере создать хранимую процедуру, возвращающую нужное значение как выходной параметр (либо, если значение целое - можно возвращать его оператором Return). Тут уже вопросы:

3а: Я правильно понимаю, что при этом способе нужно создать по процедуре для каждого запроса, который только может мне понадобиться (с точностью до входных параметров, они же критерий отбора) ?

3б: К этому способу у меня нет образца кода, хотя я примерно и представляю себе, как его писать. Но если у кого-то есть готовый шаблон и со мной поделятся - буду очень благодарна.

4) на сервере создать скалярную функцию, возвращающую нужное значение. Тут вопросы аналогичны 3а и 3б, только я еще и не представляю себе, как писать код, получающий значение от функции.

Добавлено через 6 минут
В общем, не могу отделаться от ощущения, что я ломлюсь в какие-то дебри и что должен быть более простой способ присвоить результат запроса переменной. Но никак не соображу какой. Нид хелп!

Добавлено через 41 минуту
Так, ну первые два способа по скорости я сравнила. GetValue в 2,5 раз быстрее, чем DLookup.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2016, 13:50
Ответы с готовыми решениями:

Какие способы самые удобные/рациональные способы регистрации ошибок есть?
Задался вопросом, а как регистрировать ошибки? При этом чтобы и выглядело это красиво, и понятно...

Какой есть способ сохранить высчитанное значение в Visual Studio
Студия 17 Вообще впервые сталкиваюсь с такой потребностью, сложно сказать даже свои...

Какие методы есть в C++ для работы с файлами и в каких случаях какой лучше применять
Какие методы есть в С++ для работы с файлами и в каких случаях какой лучше применять? обычно...

Какой способ лучше
Производятся вычисления в цикле, где в зависимости от условий подключаются или не подключаются...

Какой способ рисования в 2D лучше?
Приветствую! Захотел сделать свой контрол, нашел в интеренете аж целых 2 решение моей задачи. З...

1
sysghost
39 / 39 / 6
Регистрация: 12.01.2016
Сообщений: 399
06.09.2016, 14:32 2
Google при первом же запросе выдал, вернуть запрос как рекордсет и присвоить переменной -
Visual Basic
1
2
set rst = currentdb.openrecordset("SELECT Num FROM ....")
a = rst!Num
Хотя возможно это не самый лучший вариант, я опыта не имею.
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2016, 14:32

Какие есть способы поднятия тиц/пр
Подскажите, какие есть способы поднятия тиц/пр? Только каталоги и морды?

Какие есть способы подключения к бд в РНР?
Всем привет. Был вчера на собеседовании, меня спросили - Какие есть способы работы с БД в РНР, ну...

Какие есть способы увеличения скорости
Добрый вечер. Найти 3^N. 1<=N<=300000.Максимальное время работы 5 секунд. Тупая ДА с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.