powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / можно ли без recordset-а
25 сообщений из 26, страница 1 из 2
можно ли без recordset-а
    #35038198
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день еще раз. Вот код
авторDim objConnection
Dim strConnectionString
Dim strSQL
Dim objCommand

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")

strConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=data_saver;Data Source=mypc\myserver"
objConnection.ConnectionString = strConnectionString
objConnection.Open
strSQL = "select counter_value from energo"
With objCommand
.ActiveConnection = objConnection
.CommandText = strSQL
End With

objCommand.execute
...у меня в табличке energo одно поле counter_value и там число...вот я выполняю запрос и не пойму как мне увидеть запрошенное число просто в текстбоксе...можно ли это сделать без исподьзования recordset-а
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35038214
iSestrin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в адо - нет, насколько я помню, там нет других объектов доступа к данным, кроме рекордсета ... ест ь out параметры, но это еще больший гимор
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35038225
Фотография Le Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.Добавить в комманд параметр типа output.
2.Запрос изменить на
Код: plaintext
select top  1  @par = counter_value from energo
3. После execute посмотреть значение параметра.
4. Вообщето тут форум по MS SQL... :)
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35038233
Фотография Le Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё Executescalar есть.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35038244
Фотография Le Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Le Peace4. Вообщето тут форум по MS SQL... :)
Дико извиняюсь каким-то ветром занесло сюда... :(
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35038262
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор3. После execute посмотреть значение параметра.
...а как?
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35038340
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
objConnection.Parameters("@par").Value
Но что-то я не уверен, что это сработает.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35039260
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Le PeaceЕщё Executescalar есть.
Это уже vb.net

авторobjConnection.Parameters("@par").Value
У Connection нет такой коллекции.

Можно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    Dim objParam As New Parameter
    Dim objcmd As New Command
    
    Set objParam = objcmd.CreateParameter("@count", adInteger, adParamOutput)
    
    Set objcmd.ActiveConnection = myApp.Service.ActiveConnection
    With objcmd
        .CommandText = "SELECT ?= count(*) from SSP_Tables_facts"
        .Parameters.Append objParam
        .Execute
        Debug.Print .Parameters("@count").Value
    End With
Правда меня при этом напрягает лог профиллера
Код: plaintext
1.
2.
3.
4.
declare @P1 int
set @P1= 5439 
exec sp_executesql N'SELECT @P1= count(*) from SSP_Tables_facts', N'@P1 int OUTPUT', @P1 output
select @P1
Получается что уже до запроса, профиллер знает результат. Бред какой то.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35039396
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Connection нет такой коллекции.Конечно, я имел в виду Command. Скопипастил не то.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35040429
Фотография adv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
objConnection.execute("select top 1 counter_value from energo").fields( 0 )
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35040599
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adv , браво, условие фактически выполнено.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35040618
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adv
Код: plaintext
objConnection.execute("select top 1 counter_value from energo").fields( 0 )

Учите матчасть .
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35040673
Фотография adv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeУчите матчасть .стараюсь не прекращать это делать.

А что вас смутило?
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35040840
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я к тому, что у вас неявно используется рекордсет, без которого ТС и хотел обойтись.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35040855
Фотография adv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeнеявно используется рекордсетя и не говорил, что использоваться не будет.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35040868
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeЯ к тому, что у вас неявно используется рекордсет, без которого ТС и хотел обойтись.Ну вообще без рекордсета нельзя ничего вытащить из базы в принципе. Ну исключая базы с прямым доступом конечно :)
Решение adv вполне имеет право на жизнь. Оно конечно тоже делает рекордсет, но неявно.... Хотя время жизни этого рекордсета и соответственно сколько оно будет держать ресурсы сервера это уже вопрос долгий и болезненный. В общем, для микропрограмм так делать можно, а вот для серьезных я бы не советовал....
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35041070
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в общем мир, дружба и жвачка :)
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35041922
Фотография adv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl... Хотя время жизни этого рекордсета и соответственно сколько оно будет держать ресурсы сервера это уже вопрос долгий и болезненный. В общем, для микропрограмм так делать можно, а вот для серьезных я бы не советовал....Можно про это поподробнее. Или ссылку.

Просто, не брезгую в адп получать так одиночные значения. Может что не то делаю?
Сразу, оговорюсь: системы у меня пока микро - до сотни пользователей. На будущее неплохо бы знать.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35042213
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя время жизни этого рекордсета и соответственно сколько оно будет держать ресурсы сервера это уже вопрос долгий и болезненный.Нисколько. cn.Execute открывает рекордсет в режиме readonly forwardonly.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35042497
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adv White Owl... Хотя время жизни этого рекордсета и соответственно сколько оно будет держать ресурсы сервера это уже вопрос долгий и болезненный. В общем, для микропрограмм так делать можно, а вот для серьезных я бы не советовал....Можно про это поподробнее. Или ссылку.

Просто, не брезгую в адп получать так одиночные значения. Может что не то делаю?
Сразу, оговорюсь: системы у меня пока микро - до сотни пользователей. На будущее неплохо бы знать.В данном случае это уже не микро, а макро... Микро это когда один пользователь. Два пользователя это уже много :)

Когда ты делаешь запрос к серверу, сервер не просто формирует резалтсет и отдает его весь разом клиенту, а держит этот резалтсет в своей памяти и отдает его клиенту по одной строке за раз (по командам fetch или movenext). Когда клиент ГОВОРИТ серверу что мол "я закончил работать с резалтсетом" тогда сервер забывает этот резалтсет и отдает эту память под резалтсеты другого клиента...
Чтобы клиент сказал серверу "я закончил" надо сделать что-то типа rs.Close(). В принципе рекордсеты автоматически закрываются если переменной-рекордсет присваивается nothing или она выходит за пределы видимости. Но в случае с неявным определением рекордсета ты не знаешь точно какие у этого неявного рекордсета пределы видимости - в принципе они должны быть в пределах одной команды (которая его создала), но к сожалению это не совсем так. По окончанию команды рекордсет становится недоступным программе, но реально убьется только по выходу из текущего блока видимости. Или когда до него доберется сборщик мусора (в vb.net), а до тех пор он может держать один лишний резалтсет-буфер на сервере.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35042588
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда ты делаешь запрос к серверу, сервер не просто формирует резалтсет и отдает его весь разом клиенту, а держит этот резалтсет в своей памяти и отдает его клиенту по одной строке за раз.Это завитит от местоположения, типа курсора и типа блокировки. adUseClient + adOpenStatic получает все все данные сразу, сервер в памяти ничего не держит.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35042706
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy Когда ты делаешь запрос к серверу, сервер не просто формирует резалтсет и отдает его весь разом клиенту, а держит этот резалтсет в своей памяти и отдает его клиенту по одной строке за раз.Это завитит от местоположения, типа курсора и типа блокировки. adUseClient + adOpenStatic получает все все данные сразу, сервер в памяти ничего не держит.yep... but do you know what kind of cursor would be opened by the command
objConnection.execute("select top 1 counter_value from energo").fields(0)
Can you show me any documentation to prove your knowledge?
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35042901
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Посмотри в MSDN параметры по умолчанию у rs.Open. Это оно и есть.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35043025
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy White Owl
Посмотри в MSDN параметры по умолчанию у rs.Open. Это оно и есть.А ну да.... Открываем, смотрим... В секции Remarks первая же строка:
The default cursor for an ADO Recordset is a forward-only, read-only cursor located on the server.
Что подтверждает тезис об опасности использования неявных рекордсетов.
...
Рейтинг: 0 / 0
можно ли без recordset-а
    #35043122
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако если у соединения курсор клиентский, то и у рекордсета будет такой же.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / можно ли без recordset-а
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]