powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как скопировать стоблцы (поля) из одного RecordSet в другой
8 сообщений из 8, страница 1 из 1
Как скопировать стоблцы (поля) из одного RecordSet в другой
    #34895547
Есть открытая форма ResultForm на ней источник данных DataMain Естественно есть его рекордсет, DataMain.RecordSet, на базе которого строю таблицу - 14 полей и немеряно строк.
Вопрос: как в свободный (неприсоединенный ни к какому источнику) рекордсет скопировать только два столбца из DataMain.RecordSet
То есть. Нужно создать свободный рекордсет rsst из двух полей "Дата" и "Количество" и перенести в эти поля соответствующий записи из DataMain.RecordSet - и на базе нового рекордсета я построю диаграмму.
Clone не подходит
на rsst.Fields.Append "Дата", adVarChar, 20 - ругается
...
Рейтинг: 0 / 0
Как скопировать стоблцы (поля) из одного RecordSet в другой
    #34895954
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь уже много говорилось о синтетическом рекордсете. Можно и поискать было.
Создается он примерно так:
Код: plaintext
1.
2.
3.
4.
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Fields.Append "Äàòà", adDBDate
rs.Fields.Append "Êîëè÷åñòâî", adInteger
rs.Open , , adOpenStatic, adLockBatchOptimistic
Далее можно работать с ним как обычно.

как я могу догадаться по тексту, вам можно было бы взять запрос с нужными дополнительными полями и не ломать голову.
...
Рейтинг: 0 / 0
Как скопировать стоблцы (поля) из одного RecordSet в другой
    #34896291
Да в том то и ситуация что нельзя взять запрос. Естественно, что с запросом было бы проще. Но у меня результирующая форма одна, а строится она может по 17 вариантам. Это нужно тогда не один запрос писать а 17 доп. запросов в формах выбора, которые будут передавать на результирующую форму не 14 полей а всего 2.
...
Рейтинг: 0 / 0
Как скопировать стоблцы (поля) из одного RecordSet в другой
    #34896327
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не факт, но
у рекордсета есть метод Save , который сохраняет рекордсет в файле
вот только не помню, есть ли Load , чтобы закачать обратно
т.е принцип в следующем, сохраняем рекордсет в файл, из него закачиваем данные в новый рекордсет и удаляем ненужные столбцы


ЗЫЖ а при построении диаграмы, разве не указывается, какие столбцы использовать?
может вы слишком мудрите?


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Как скопировать стоблцы (поля) из одного RecordSet в другой
    #34897091
Спасибо тов. Worobjoff
Помогло. Кому интересно - вот мой код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Private Sub DisplayGraph()
    Dim rsst As ADODB.Recordset
    Set rsst = New ADODB.Recordset
    rsst.Fields.Append "DataPod", adDBDate
    rsst.Fields.Append "Kolvo", adDouble
    rsst.Open , , adOpenStatic, adLockBatchOptimistic
    
    Dim lngCount As Long
    Dim arrData() 'holds the data for the chart
    Dim a As Long
    Dim b As Long, i As Long, endkol As Variant
    
   
    ResultForm.DataMain.Recordset.MoveFirst
    ResultForm.DataMain.Recordset.MoveLast
    endkol = ResultForm.DataMain.Recordset.RecordCount
    ResultForm.DataMain.Recordset.MoveFirst
    
    Do Until ResultForm.DataMain.Recordset.EOF
    rsst.AddNew
    rsst.Fields( 0 ).Value = ResultForm.DataMain.Recordset.Fields( 2 ).Value
    rsst.Fields( 1 ).Value = ResultForm.DataMain.Recordset.Fields(DiagramTip).Value
    rsst.Update
    ResultForm.DataMain.Recordset.MoveNext
    Loop
        
    If Not rsst.EOF Then
        'Store the recordcount
        lngCount = rsst.RecordCount
        
        ReDim arrData(lngCount -  1 ,  1 )
        MSChart1.FootnoteText = "Результирующая диаграмма"
        
        'Set the default Chart Type to 2D Bar Type
        MSChart1.chartType = VtChChartType2dLine

       'Set the Legend property of the chart to True
        MSChart1.ShowLegend = False

        For a =  0  To  1 
            rsst.MoveFirst
           
            'b corresponds to rows
            For b =  0  To lngCount -  1 
                arrData(b, a) = rsst(a)
                                       
                rsst.MoveNext
            Next b
        Next a

        MSChart1.ChartData = arrData

        With MSChart1.Plot
            .Axis(MSChart20Lib.VtChAxisId.VtChAxisIdX).AxisTitle.Text = "Дата"
            .Axis(MSChart20Lib.VtChAxisId.VtChAxisIdY).AxisTitle.Text = "Выбранный параметр"
        End With
      

End If
    
    rsst.Close
    Set rsst = Nothing
End Sub

...
Рейтинг: 0 / 0
Как скопировать стоблцы (поля) из одного RecordSet в другой
    #34897294
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы проще сделал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim v As Variant
With ResultForm.DataMain.Recordset.Clone  'Желательно работать с клоном - что бы курсор не сбивать и не генерить лишних событий
   v = .GetRows(, , Array(.Fields( 2 ).Name, .Fields(DiagramTip).Name)) 'Не знаю какие там имена полей можно было Array("Поле1","Поле2")
End With
'И если Chart не возьмет v, тогда эти строчки:
ReDim arrData(UBound(v,  2 ),  1 )
For i =  0  To UBound(v,  2 )
   arrData( 0 , i) = v( 0 , i)
   arrData( 1 , i) = v( 1 , i)
Next
...
Рейтинг: 0 / 0
Как скопировать стоблцы (поля) из одного RecordSet в другой
    #34897326
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь ошибся:
Код: plaintext
1.
2.
3.
For i =  0  To UBound(v,  2 )
   arrData(i,  0 ) = v( 0 , i)
   arrData(i,  1 ) = v( 1 , i)
Next
(Кажется вам нужен транспонированный массив.)
...
Рейтинг: 0 / 0
Как скопировать стоблцы (поля) из одного RecordSet в другой
    #34897474
Черт... а ведь про функцию GetRow я забыл.... действительно можно проще
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как скопировать стоблцы (поля) из одного RecordSet в другой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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