powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Заполнение базы тестовіми данными. КОМУ?
2 сообщений из 2, страница 1 из 1
Заполнение базы тестовіми данными. КОМУ?
    #33071467
Ser Tri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот код, имитирующий нагрузку на прямые таблицы БД ACCESS.
Кто может доделать (посадить на форму/отладить/скомпилить)?
Выложите сюда же результат, плз!

Код: 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.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
Public d As New ADODB.Connection
Public r As New ADODB.Recordset
Public r1 As New ADODB.Recordset
Public t As New ADOX.Catalog
Public c As New ADODB.Command

Dim tbl As New ADOX.Table
Dim clmn As New ADOX.Column
Dim ind As New ADOX.Index
'
‘где-то должны быть настроены переменные d,r,r1,t,c на используемое соединение, что-то вроде
‘    varConnect = d.ConnectionString
‘    d.Open
‘    r.ActiveConnection = d.ConnectionString
‘    t.ActiveConnection = varConnect
‘

Private Sub cmdOKInsert_Click()
‘Ссылка на переключатели, позволяющие выбрать количество записей 
    If opt100 Then
        varN =  100 
    ElseIf opt1000 Then
        varN =  1000 
    ElseIf opt10000 Then
        varN =  10000 
    ElseIf opt100000 Then
        varN =  100000 
    End If
‘lstActiveTab    список таблиц,  вкоторые нужно внести записи
    For i =  0  To lstActiveTab.ListCount -  1 
'Удаление старых записей
        nametable = lstActiveTab.List(i)
        Set tbl = t.Tables(nametable)
        r.Open "select * from " & tbl.Name, varConnect, adOpenKeyset
        If r.RecordCount <>  0  Then
            If MsgBox("Удалять старые данные?", vbQuestion + vbYesNo) = vbYes Then
                c.CommandText = "delete * from " & nametable
                c.Execute
            Else
                n = r.RecordCount
                varN = IIf(n < varN, varN - n,  0 )
            End If
        End If
        r.Close
'Установка начальных значений
        s0 = ""
        s = ""
        
'Формирование начала оператора insert
        s0 = "insert into " & nametable & "("
        For j =  0  To tbl.Columns.Count -  1 
            s = s & tbl.Columns(j).Name & ","
        Next
        s = Mid(s,  1 , Len(s) -  1 )
'Формирование заданного количества строк для ввода в таблицы
        For k =  1  To varN
            s1 = ""
            For j =  0  To tbl.Columns.Count -  1 
                Set clmn = tbl.Columns(j)
'Проверка, не требуется ли уникальное значение для обрабатываемого поля
                flPrKey = False
                For l =  0  To tbl.Indexes.Count -  1 
                    Set ind = tbl.Indexes(l)
                    For ll =  0  To ind.Columns.Count -  1 
                        If ind.Columns(ll).Name = clmn.Name And (ind.PrimaryKey Or ind.Unique) Then
                            flPrKey = True
                        End If
                    Next
                Next
                
                If flPrKey Then
                    s1 = s1 & MyGenKey(clmn.Type, clmn.DefinedSize, clmn.Name, tbl.Name) & ","
                Else
                    s1 = s1 & MyGenData(clmn.Type, clmn.DefinedSize) & ","
                End If
            Next
'Выполнение оператора insert
            s1 = Mid(s1,  1 , Len(s1) -  1 )
            c.CommandText = s0 & s & ") values (" & s1 & ")"
'Debug.Print c.CommandText
            c.Execute
        Next
        r.Open "select * from " & tbl.Name, varConnect, adOpenKeyset
‘lstActiveQRec –список, отображающий количество записей в соответствующих таблицах
        lstActiveQRec.List(i) = r.RecordCount
        r.Close
    Next
    
End Sub

Public Function MyGenData(MyType As Long, MySize As Integer, n As Long) As String
    Randomize
    Select Case MyType
        Case adBigInt
            g = CStr(Int( 1000  * Rnd()))
        Case adInteger
            g = CStr(Int( 100  * Rnd()))
        Case adVarChar, adChar, adLongVarChar, adVarWChar, adWChar
            
            g = "'" & GenString(MySize) & "'"
        Case adDate
            g = "#" & Int( 11  * Rnd()) +  1  & "/" & Int( 28  * Rnd()) +  1  & "/" & Int(n * Rnd()) +  1  & "#"
            
        Case Else
            g = "null"
    End Select
    MyGenData = g

End Function

Public Function GenString(varSize As Integer) As String
    n = Int(varSize * Rnd())
    n = IIf(n =  0 ,  1 , n)
    For i =  1  To n
        Select Case Int( 3  * Rnd())
            Case  0 
                g = g & Chr(Asc("a") + Int( 26  * Rnd()))
            Case  1 
                g = g & Chr(Asc("A") + Int( 26  * Rnd()))
            Case  2 
                g = g & Chr(Asc("0") + Int( 10  * Rnd()))

        End Select
    Next
    GenString = g
End Function
Public Function MyGenKey(MyType As Long, MySize As Integer, p As String, tt As String, gg As Long) As String
    Select Case MyType
        Case adBigInt, adInteger
            g = gg +  1 
        Case adVarChar, adChar
            Do
                g = "'" & GenString(MySize) & "'"
                r1.Open "select count(*) from " & tt & " where " & p & "=" & g, , adOpenStatic, adLockReadOnly
                n = r1.RecordCount
                r1.Close
            Loop Until n =  0 
        Case adDate
            
            g = "#" & CStr(CDate(gg) +  1 ) & "#"
            
        Case Else
            g = "null"
    End Select
    MyGenKey = g

End Function
...
Рейтинг: 0 / 0
Заполнение базы тестовіми данными. КОМУ?
    #33073077
Один1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С этим лучше в форум "работа" обратится.
С выполнением требований к работодателям, к-е написаны в форуме "работа"
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Заполнение базы тестовіми данными. КОМУ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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