Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Скопировать структуру RecordSet / 5 сообщений из 5, страница 1 из 1
18.05.2013, 00:27
    #38262931
Shizuku
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать структуру RecordSet
Я пишу:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Form_Load()
  Dim rsBuild As ADODB.Recordset
  Set rsBuild = New ADODB.Recordset
  With rsBuild
    .CursorLocation = adUseClient
    .Fields.Append "Question", adLongVarWChar, 1
    "Answer", adLongVarWChar, 1
    .Open
    .AddNew 0, String(5000, "*")
    .Update
    Debug.Print .Fields(0)
    .Close
  End With
  Set rsBuild = Nothing
End Sub



А можно как-нибудь скопировать структуру таблицы из другого открытого RecordSet?
Чтобы не писать безумно длинный .Fields.Append ?
...
Рейтинг: 0 / 0
18.05.2013, 00:31
    #38262932
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать структуру RecordSet
Чтобы не писать безумно длинный .Fields.Append, существуют циклы. Fields это коллекция.
...
Рейтинг: 0 / 0
29.05.2013, 18:14
    #38279092
Shizuku
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать структуру RecordSet
Antonariy,

Я имел ввиду именно структуру. В итоге у меня получилось примерно следующее:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
With rsBuild
 .CursorLocation = adUseClient
 .Fields.Append "num_ls", adDouble, 8
 .Fields.Append "num_dog", adVarWChar, 7, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "datdog", adDate, 8, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "fam", adVarWChar, 30, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "im", adVarWChar, 20, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "ot", adVarWChar, 20, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "nname", adVarWChar, 30
 .Fields.Append "n_dom", adVarWChar, 20, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "n_kv", adVarWChar, 4, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "crsumma", adDouble, 8
 .Fields.Append "prsumma", adDouble, 8
 .Fields.Append "kolmes", adDouble, 8
 .Open
' Здесь действия над таблицей
 .Close
End With



Как видите, без педантичного перечисления "ап'эндов" не обошлось! :)
...
Рейтинг: 0 / 0
29.05.2013, 18:26
    #38279107
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать структуру RecordSet
А я типа что-то другое имел ввиду?

Код: vbnet
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.
Public Function CreateRSCopy(rsSource As ADODB.Recordset) As ADODB.Recordset
Dim rsCopy As ADODB.Recordset
Dim f As ADODB.Field
Dim i As Long
    Set rsCopy = New ADODB.Recordset
    'копирование структуры
    For Each f In rsSource.Fields
        rsCopy.Fields.Append f.Name, f.Type, f.DefinedSize, f.Attributes And adFldIsNullable
        If f.Type = adNumeric Then
            rsCopy.Fields(f.Name).Precision = f.Precision
            rsCopy.Fields(f.Name).NumericScale = f.NumericScale
        End If
    Next f

    'копирование данных
    rsCopy.Open
    If rsSource.RecordCount > 0 Then
        rsSource.MoveFirst
        While Not rsSource.EOF
            rsCopy.AddNew
            For i = 0 To rsSource.Fields.Count - 1
                rsCopy.Fields(i).Value = rsSource.Fields(i).Value
            Next i
            rsSource.MoveNext
        Wend
        rsSource.MoveFirst
        rsCopy.MoveFirst
    End If
    Set CreateRSCopy = rsCopy
    Set rsCopy = Nothing
End Function
...
Рейтинг: 0 / 0
29.05.2013, 18:35
    #38279118
Shizuku
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать структуру RecordSet
Antonariy,

Упс! Красиво... А я тут через debug тоже самое вытягиваю и додумать не могу!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Скопировать структуру RecordSet / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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