-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Заполнение подчиненной формы

Суббота, 08 Июня 2019 г. 22:28 + в цитатник
Доброго денечка!
Вопрос такой. Делаю уже третью форму Access + SQL по стандартному алгоритму: в заголовке формы фильтры, которые по кнопке Применить обновляют содержимое подчиненной табличной формы. Надо просто выводить записи, соответствующие условиям фильтра.
Предыдущие 2 формы работают. Но третья... просто чудеса в решете.

Делаю, может криво... но тогда прошу подсказок. Сейчас делаю так: на кнопке "Применить фильтры" (далее просто Применить) следующий код

Public cn As ADODB.Connection
Public cmd As ADODB.Command
Public NumSession As Integer
Public UsID As Integer
Dim rs As New ADODB.Recordset
Dim s As String

Set cn = New ADODB.Connection
cn.ConnectionString = "PROVIDER=SQLOLEDB; DATA SOURCE=" & srv & "; INITIAL CATALOG=" & DBName & "; INTEGRATED SECURITY=sspi;"
cn.Open
Set cmd = CreateObject("ADODB.Command") 'создаем объект команда
cmd.ActiveConnection = cn               'назначаем соединение
cmd.CommandType = adCmdText

s = "declare @NumSess smallint, @UsID int; exec dbo.sp_ProcData " _ ' далее идет список фильтров и возвращаемые значения: @@SPID и SUSER_ID()
& "@NumPrik = '" & txt_PrikNum.Value & "', @DatePrik = '" & txt_PrikDate.Value & "', @NumSession = @NumSess out, @UserID = @UsID out; select * from " & DBName & ".dbo.tmp_PrikazDek where NumSession = @NumSess and UsID = @UsID"

    rs.Open s, cn, adOpenStatic
    If rs.State <> 0 Then
        If rs.RecordCount <> 0 Then rs.MoveFirst
        NumSession = rs("NumSession")
        UsID = rs("UsID")
        DoCmd.SetWarnings False
        s = "delete from tmp_PrikazDek where UsID = " & rs("UsID")
        DoCmd.RunSQL s
        Do While Not rs.EOF
            s = "insert into tmp_PrikazDek values(" & rs("NumSession") & "," _
                & rs("UsID") & "," _
                & [перечень полей и значений] & ")"

            DoCmd.RunSQL s
            rs.MoveNext
        Loop
        DoCmd.SetWarnings True
    End If
    Me.Refresh


В подчиненной форме источник записей tmp_PrikazDek. Полям тоже присвоены источники из таблицы.

Теперь о чудесах. Начнем с того, что в подчиненную форму выводит всегда только 1 запись, первую в результате запроса. И все! Хотя по циклу бегает, запросы выполняет, ошибок не выдает никаких, но в таблице tmp_PrikazDek только одна запись и в форме соответственно. Что это за ерунда? Почему? В других аналогичных формах все заполняется...

Второе чудо, новое. На строчке NumSession = rs("NumSession") теперь выдает ошибку "Невозможно присвоить значение объекту". Ну, это уж вообще красота! В поле rs("NumSession") на дебаге значение 57. Чем не Integer? Откуда объекты, когда просто переменная типа Integer и значение присваивается соответствующее.

https://www.sql.ru/forum/1313481/zapolnenie-podchinennoy-formy


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку