powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как создать рекордсет, не имеющий источника
16 сообщений из 16, страница 1 из 1
Как создать рекордсет, не имеющий источника
    #32482009
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Здравствуйте
Можно ли в VBA создать рекордсет, не имеющий источника данных
описать его структуру (поля), а потом через объект Record заполнить
данными?
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482012
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim rstList As ADODB.Recordset
Set rstList = New ADODB.Recordset

'Добавляем поля 
With rstList
.Fields.Append  "Npp" , adSmallInt, , adFldMayBeNull
.Fields.Append  "Kat" , adVarChar,  50 
.Fields.Append  "NamePoz" , adVarChar,  15 
.Fields.Append  "NameIzm" , adVarChar,  7 
.Fields.Append  "Vs" , adSmallInt, , adFldMayBeNull
End With

rstList.Open

а далее как всегда
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482017
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
спасибо получилось
А еще вопрос- а можно в поле рекордсета вставить еще рекордсет,
с даными, например запроса?
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482025
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О как. IMHO, нет. А зачем?
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482035
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поля рекордсета - это те же самые поля таблицы.
Что можно вставить в поле таблицы (то есть, какой тип данных определить), то и с рекордсетом можно сделать.

Поскольку такого типа данных для таблицы нет, то вставить рекордсет врекордсет не получиться.

Может поможет просто связывание типа JOIN ?
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482064
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Сейчас сформулирую
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482069
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Не хватает мозгов, чтобы решить простую задачку
Таблица 1 (ID_FL PK, ФИО)
Таблица 2 (ID_DOK PK, ID_FL внешний ключ, НомерДок)
Делаю запрос с объединением и получаю к примеру

ФИО НомерДок
Иванов 100
Петров 100
Сидор 200

Как из этого получить?
ФИО НомерДок
"ГРУППА" 100
Сидор 200
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482098
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извращение какое-то.
Код: plaintext
1.
2.
SELECT IIf(Count([НомерДок])> 1 ,'группа',DLookUp( "ФИО" , "Таблица1" , "[ID_FL]="  & DLookUp( "ID_FL" , "Таблица2" , " [НомерДок]="  & [НомерДок]))) AS ФИО, Таблица2.НомерДок
FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.ID_FL = Таблица2.ID_FL
GROUP BY Таблица2.НомерДок;
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482121
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во как...

а я и не знал что в отсоединенном рекордсете можно создавать поля...

может воспользоваться этим способом для конвертации ADO рекордсета
в дао - для разрешения проблем с суммовыми полями в ADP - формах?

написать универсальную процедурку которая бы конвертила ADO -> DAO
структуру и данные...
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482123
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Гетца же описано. Он предлагает пользоваться ими вместо массивов.
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482130
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо будет почитать на досуге ))
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482136
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Да, действительно здорово работает
Нужно будет поразбираться с запросом
Спасибо
Только вот почему то выдает в результате запроса
вместо ФИО "Сидор" #Ошибка
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32482142
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос рабочий, проверил, 'сидора' дает.
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32519539
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ayvа можно в поле рекордсета вставить еще рекордсет
Таки можно. Вот пример:

http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q202/9/12.asp&NoWebContent=1

Копирую сюда код и выделяю самое интересное:

' Start VB COM DLL code
Function getRS1() As ADODB.Recordset
Dim rsParent As New ADODB.Recordset
Dim rsChild As New ADODB.Recordset

rsParent.CursorLocation = adUseClient
rsChild.CursorLocation = adUseClient

' Add fields to recordsets.
rsParent.Fields.Append "ParentName", adVarChar, 20
rsParent.Fields.Append "ChildRS", adIDispatch
rsChild.Fields.Append "ChildName", adVarChar, 20

' Open recordsets
rsParent.Open
rsChild.Open

' Add records to child recordset.
rsChild.AddNew
rsChild(0) = "Child1"
rsChild.Update
rsChild.AddNew
rsChild(0) = "Child2"
rsChild.Update
rsChild.MoveFirst

' Add record to parent recordset.
rsParent.AddNew
rsParent(0) = "Parent1"
rsParent(1) = rsChild
rsParent.Update
rsParent.MoveFirst

Set getRS1 = rsParent

End Function
' End VB COM DLL code

' Start VB client code
Private Sub Command1_Click()
Dim ds As New RDS.DataSpace
Dim rs As New ADODB.Recordset
Dim objTestHR As Object

' UN-COMMENT ONE OF THE FOLLOWING 3 CREATEOBJECT LINES.
' USE THE PROGID FOR THE VB COM DLL CREATED IN STEP 1.

' HTTP METHOD:
'Set objTestHR = ds.CreateObject( "MyProject.MyClass", _
'"http://servername" )

' DCOM METHOD:
'Set objTestHR = ds.CreateObject( "MyProject.MyClass", _
'"\\servername" )

' IN-PROC METHOD:
'Set objTestHR = CreateObject("MyProject.MyClass")

Set rs = objTestHR.getRS1
Debug.Print "getRS1 results:"
Debug.Print ">>" & rs.Fields(0).Value
Debug.Print ">>>>" & rs.Fields(1).Value.Fields(0).Value
rs.Fields(1).Value.MoveNext
Debug.Print ">>>>" & rs.Fields(1).Value.Fields(0).Value
rs.Close
Set rs = Nothing

End Sub
' End VB client code
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32519554
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Владимир Саныч.
А я ломал голову, что такое adIDispatch в перечне типов, который он выбрасывает. Хотя, разъяснение что это такое, так нигде и не нашел. Где бы найти описание еще ADCHAPTER.
...
Рейтинг: 0 / 0
Как создать рекордсет, не имеющий источника
    #32519846
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Насчет idispatch тут еще кое-что есть...

http://sql.ru/forum/actualtopics.aspx?search=idispatch&bid=4
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как создать рекордсет, не имеющий источника
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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