Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как создать рекордсет, не имеющий источника / 16 сообщений из 16, страница 1 из 1
15.04.2004, 06:38
    #32482009
ayv
ayv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
Здравствуйте
Можно ли в VBA создать рекордсет, не имеющий источника данных
описать его структуру (поля), а потом через объект Record заполнить
данными?
...
Рейтинг: 0 / 0
15.04.2004, 06:47
    #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
15.04.2004, 07:04
    #32482017
ayv
ayv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
спасибо получилось
А еще вопрос- а можно в поле рекордсета вставить еще рекордсет,
с даными, например запроса?
...
Рейтинг: 0 / 0
15.04.2004, 07:18
    #32482025
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
О как. IMHO, нет. А зачем?
...
Рейтинг: 0 / 0
15.04.2004, 07:46
    #32482035
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
Поля рекордсета - это те же самые поля таблицы.
Что можно вставить в поле таблицы (то есть, какой тип данных определить), то и с рекордсетом можно сделать.

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

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

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

Как из этого получить?
ФИО НомерДок
"ГРУППА" 100
Сидор 200
...
Рейтинг: 0 / 0
15.04.2004, 08:48
    #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
15.04.2004, 09:12
    #32482121
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
во как...

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

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

написать универсальную процедурку которая бы конвертила ADO -> DAO
структуру и данные...
...
Рейтинг: 0 / 0
15.04.2004, 09:15
    #32482123
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
У Гетца же описано. Он предлагает пользоваться ими вместо массивов.
...
Рейтинг: 0 / 0
15.04.2004, 09:17
    #32482130
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
надо будет почитать на досуге ))
...
Рейтинг: 0 / 0
15.04.2004, 09:19
    #32482136
ayv
ayv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
Да, действительно здорово работает
Нужно будет поразбираться с запросом
Спасибо
Только вот почему то выдает в результате запроса
вместо ФИО "Сидор" #Ошибка
...
Рейтинг: 0 / 0
15.04.2004, 09:22
    #32482142
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
Запрос рабочий, проверил, 'сидора' дает.
...
Рейтинг: 0 / 0
17.05.2004, 00:44
    #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
17.05.2004, 03:10
    #32519554
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
Спасибо, Владимир Саныч.
А я ломал голову, что такое adIDispatch в перечне типов, который он выбрасывает. Хотя, разъяснение что это такое, так нигде и не нашел. Где бы найти описание еще ADCHAPTER.
...
Рейтинг: 0 / 0
17.05.2004, 11:07
    #32519846
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать рекордсет, не имеющий источника
Насчет idispatch тут еще кое-что есть...

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


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