Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 08.02.2019
Сообщений: 117

Внесение одной записи в таблицу

11.10.2019, 22:48. Показов 1470. Ответов 10

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!

Не могу понять почему в данном коде при загрузке файла и сверке его с БД пишет что найдены все записи из файла но в итоге в таблицу maindata_tmp почему то попадает только одна запись...

Кликните здесь для просмотра всего текста
Visual Basic
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
Public Sub searchPakN()
Dim rst As Recordset, rst1 As Recordset
Dim StrSQL As String
Dim Archy As Boolean
Dim f_b As Boolean, v_b As Boolean
Dim mnCount As Integer
Dim FullName As String
Dim D As Integer
Dim Dnaid As Integer
Dim Dall As Integer
 
lb_Progress_stat.Caption = "Èäåò ñâåðêà äàííûõ ..."
 Set fDialog = Application.FileDialog(1)
 
Dnaid = 0
Dall = 0
D = 0
 Me.Refresh
DoCmd.SetWarnings False
With fDialog
    .Title = "Çàãðóçêà äàííûõ"
    '.InitialFileName = "C:\Ëîêàëüíûå äîêóìåíòû\AandV\Files" 'default path Ïóòü ïî óìîë÷àíèþ
    .AllowMultiSelect = False
    .Filters.Clear
    .Filters.Add "Êíèãà Excel (*.xls?)", "*.xls?", 1
    result = .Show
    If result = 0 Then
       lb_Progress_stat.Visible = False
       Exit Sub
    End If
    FullName = Trim(.SelectedItems.Item(1))
End With
If FullName = "C:\Ëîêàëüíûå äîêóìåíòû\AandV\Files\reestr_L.xlsx" Then
    MsgBox "Ýòîò ôàéë âûáèðàòü íåëüçÿ"
    Exit Sub
End If
FullName1 = Replace(FullName, ".", "")
FullName1 = Replace(FullName1, "xls", ".xls")
If FullName <> FullName1 Then
    FileCopy FullName, FullName1
End If
 
 MyFileName = Dir(FullName1)
DirName = Replace(FullName1, Dir(FullName1), "")
 
 FileCopy FullName1, "C:\Ëîêàëüíûå äîêóìåíòû\AandV\Files\reestr_L.xlsx"
lb_Progress_stat.Visible = True
Me.Refresh
 CurrentDb.Execute "DELETE * FROM Ðååñòð_Status_L"
CurrentDb.Execute "DELETE * FROM MainData_tmp"
DoCmd.OpenQuery "Load_Reestr_Status_NN"
' Ïîëó÷àåì èñïîíèòåëÿ
  StrSQL = "SELECT Sotrudnik.FIOs as Nam, Sotrudnik.id_Sotr as idS FROM CurSet INNER JOIN Sotrudnik ON CurSet.id_Sotr = Sotrudnik.id_Sotr"
     Set rst = CurrentDb.OpenRecordset(StrSQL)
     fiosN = rst![Nam]
     id = rst![idS]
     rst.Close
 lb_Progress_stat.Caption = "Ïîäãîòîâêà äàííûõ ...   0 %"
'lb_Progress.Visible = True
Me.Refresh
Archy = False
i = 0
StrSQL = "SELECT Ðååñòð_Status_L.[Strih] as shk, Ðååñòð_Status_L.[Íîìåð äåëà] as nd, Ðååñòð_Status_L.[Ñåðèÿ è íîìåð ÈË] as ndL, Ðååñòð_Status_L.[ÔÈÎ äîëæíèêà] as fio, Ðååñòð_Status_L.id_md as im, Ðååñòð_Status_L.[Arch] as vl, Ðååñòð_Status_L.[Ïðè÷èíà âîçâðàòà] as prich, Ðååñòð_Status_L.[Ñòàòóñ] as status, Ðååñòð_Status_L.[flagC] as flagC, Ðååñòð_Status_L.[Âèä ÈÄ] as vidD, Ðååñòð_Status_L.SD as SD, Ðååñòð_Status_L.[Êîììåíòàðèè] as coment FROM Ðååñòð_Status_L"
Set rst = CurrentDb.OpenRecordset(StrSQL)
If Not rst.EOF Then
    rst.MoveFirst
    While Not rst.EOF
        i = i + 1
        mnCount = 1
        Num_c = Trim(Nz(rst![nd]))
        Num_L1 = "" & rst![ndL] & ""
'        fio = "" & rst![fio] & ""
        fio = SearchFIO(Nz(rst![fio]))
        shk = Trim(Nz(rst![shk]))
        NumSD = Trim(Nz(rst![SD]))
        coment = Trim(Nz(rst![coment]))
           ff = ""
          
           id_ = Null
          
        If Len(Num_c) = 0 Then
          Num_c = "NotFoundNumber"
        End If
        If Len(NumSD) = 0 Then
          NumSD = "NotFoundSD"
        End If
        If Len(shk) = 0 Then
          shk = "NotFoundshk"
        End If
        If Len(fio) = 0 Then
          fio = "NotFoundfio"
        End If
          
    'StrSQL = "SELECT id_stat FROM Spr_Status WHERE id_stat = 14"
    'Set rst = CurrentDb.OpenRecordset(StrSQL)
    'If Len(shk) = 0 Then
       StrSQL = "SELECT m.id_doc as idd, s.FIOs as ya, m.Registrator as onn FROM MainData m, CurSet cs INNER JOIN Sotrudnik s ON cs.id_Sotr = s.id_Sotr " _
           & "WHERE m.BC_doc = '" & shk & "' or ( m.SD = '" & NumSD & "' And m.Dolzhnik Like '" & fio & "*' ) Or ( m.NumDoc_1 Like '*" & Num_c & "*' And m.Dolzhnik Like '" & fio & "*' )"
       Set rst1 = CurrentDb.OpenRecordset(StrSQL)
    'Else
    '  StrSQL = "SELECT m.id_doc as idd, s.FIOs as ya, m.Registrator as onn FROM MainData m, CurSet cs INNER JOIN Sotrudnik s ON cs.id_Sotr = s.id_Sotr " _
    '       & "WHERE m.BC_doc = '" & shk & "'"
       '& "WHERE m.SD = '" & NumSD & "' "
    'Set rst1 = CurrentDb.OpenRecordset(StrSQL)
    'End If
 
  If rst1.EOF Then
     t2 = 0
  Else
     rst1.MoveLast
     t2 = rst.RecordCount
  End If
  'DoCmd.SetWarnings False
  'lb_Progress.Caption = "Ïîäãîòîâêà ôàéëà ..."
  'lb_Progress.Visible = True
 
  rst1.Close
 
  If t2 > 0 Then
    'If Len(shk) = 0 Then
    'CurrentDb.Execute "INSERT INTO MainData_tmp ( BC_doc, id_doc, VidDoc, Date_Contr, NumDoc_1, NumDoc_2, Date_Doc, Dolzhnik, Otpravitel, Status, BC_folder, BC_shelf, Date_Reg, Registrator, VRUK, Notes,Changer,Date_Change,Status2, Date_Load, SD, TB, Date_vozvrat ) "
    'StrSQL = "INSERT INTO MainData_tmp ( BC_doc, id_doc, VidDoc, Date_Contr, NumDoc_1, NumDoc_2, Date_Doc, Dolzhnik, Otpravitel, Status, BC_folder, BC_shelf, Date_Reg, Registrator, VRUK, Notes,Changer,Date_Change,Status2, Date_Load, SD, TB, Date_vozvrat ) "
    CurrentDb.Execute "INSERT INTO MainData_tmp ( BC_doc, id_doc, VidDoc, Date_Contr, NumDoc_1, NumDoc_2, Date_Doc, Dolzhnik, Otpravitel, Status, BC_folder, BC_shelf, Date_Reg, Registrator, VRUK, Notes,Changer,Date_Change,Status2, Date_Load, SD, TB, Date_vozvrat ) " _
                  & "SELECT MD.BC_doc, MD.id_doc, MD.VidDoc, MD.Date_Contr, MD.NumDoc_1, MD.NumDoc_2, " _
                  & "MD.Date_Doc, MD.Dolzhnik, MD.Otpravitel, MD.Status, MD.BC_folder, MD.BC_shelf, MD.Date_Reg, MD.Registrator, MD.VRUK, MD.Notes, MD.Changer, MD.Date_Change, MD.Status2, MD.Date_Load, MD.SD, MD.TB, MD.Date_vozvrat " _
                  & "FROM MainData MD WHERE MD.BC_doc = '" & shk & "' or ( MD.SD = '" & NumSD & "' And MD.Dolzhnik Like '" & fio & "*' ) Or ( MD.NumDoc_1 Like '*" & Num_c & "*' And MD.Dolzhnik Like '" & fio & "*' )"
                 '& "FROM MainData MD WHERE MD.SD = '" & NumSD & "' "
    'Set rst = CurrentDb.OpenRecordset(StrSQL)
                  Dnaid = Dnaid + 1
                
    'Else
    'CurrentDb.Execute "INSERT INTO MainData_tmp ( BC_doc, id_doc, VidDoc, Date_Contr, NumDoc_1, NumDoc_2, Date_Doc, Dolzhnik, Otpravitel, Status, BC_folder, BC_shelf, Date_Reg, Registrator, VRUK, Notes,Changer,Date_Change,Status2, Date_Load, SD, TB, Date_vozvrat ) " _
    '              & "SELECT MD.BC_doc, MD.id_doc, MD.VidDoc, MD.Date_Contr, MD.NumDoc_1, MD.NumDoc_2, " _
    '              & "MD.Date_Doc, MD.Dolzhnik, MD.Otpravitel, MD.Status, MD.BC_folder, MD.BC_shelf, MD.Date_Reg, MD.Registrator, MD.VRUK, MD.Notes, MD.Changer, MD.Date_Change, MD.Status2, MD.Date_Load, MD.SD, MD.TB, MD.Date_vozvrat " _
    '              & "FROM MainData MD WHERE MD.BC_doc = '" & shk & "'"
    '            '& "FROM MainData MD WHERE MD.SD = '" & NumSD & "' "
    '             Dnaid = Dnaid + 1
                               
    'End If
    ' Îáíîâëåíèå ïîëÿ Êîììåíòàðèè
    CurrentDb.Execute "UPDATE MainData_tmp SET Notes = '" & coment & "'" _
                    & "WHERE MainData_tmp.BC_doc = '" & shk & "' Or ( MainData_tmp.SD = '" & NumSD & "' And MainData_tmp.Dolzhnik Like '" & fio & "' ) Or ( MainData_tmp.NumDoc_1 Like '*" & Num_c & "*' And MainData_tmp.Dolzhnik Like '" & fio & "*' )"
                ' & "WHERE MainData_tmp.SD = '" & NumSD & "' "
  Else
    rst.Edit
    rst![flagC] = 1
    rst.Update
  End If
           
        rst.Edit
        kol_v = rst.RecordCount
        rst![im] = id_
        If Archy Then rst![vl] = 1
        Archy = False
        'rst![flagC] = mnCount
        'rst.Update
        rst.MoveNext
        DoEvents
        ii = Round(i / kol_v * 100, 0)
        lb_Progress_stat.Caption = "Ïîäãîòîâêà äàííûõ ...   " & ii & " %"
   Wend
End If
rst.Close
CurrentDb.Execute "Update MainData_tmp Set NumDoc_2 = ' ðàáî÷åé áàçå'"
Me.Requery
 Call OutNotFound("Íèæíèé Íîâãîðîä", FullName)
DoCmd.OpenQuery "Çàïèñè ðååñòðà íå íàéäåííûå â áàçå", acViewNormal, acReadOnly
D = DCount("*", "Çàïèñè ðååñòðà íå íàéäåííûå â áàçå")
Dall = D + Dnaid
Me.Refresh
MsgBox "           Ãîòîâî!" & Chr(13) & Chr(10) & "- íå íàéäåíî â ÁÄ " & D & " çàïèñè (-åé)" & Chr(13) & Chr(10) & "- íàéäåíî â ÁÄ " & Dnaid & " çàïèñè (-åé)" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Èòîãî îáðàáîòàíî: " & Dall & " äîêóìåíòà (-îâ)"
 
 'lb_Progress.Visible = False
'Me.Refresh
'MsgBox "Ãîòîâî!"
 
End Sub

Добавлено через 1 минуту
А так же интересует можно ли как то поиск по инструкции в разделе where оптимизировать и ускорить?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2019, 22:48
Ответы с готовыми решениями:

Внесение записи в таблицу через форму. Вычисляемое поле. Макросы, без VBA
Здравствуйте! Пожалуйста, помогите сделать следующее: при внесении записи в таблицу Бронирование номеров через форму Бронирование...

Как перенести данные из поля одной формы в другую для последующей записи в таблицу?
Добрый день Уважаемые форумчане, вновь мне необходим ваш совет (такое чувство что я слишком часто прошу помощи), покорнейше прошу тапками...

внесение данных в таблицу
необходимо ввести данные в таблицу...немогу внести выдаёт ошибку Parametr in_number not found вот код ...

10
0 / 0 / 0
Регистрация: 08.02.2019
Сообщений: 117
13.10.2019, 22:04  [ТС]
Друзья, помогите разобраться...
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
13.10.2019, 22:20
naa700,

Вы бы выложили код без искажений.
Нужно копировать и вставлять при русской раскладке клавиатуры.
0
Эксперт MS Access
 Аватар для Eugene-LS
12065 / 5848 / 1494
Регистрация: 05.10.2016
Сообщений: 16,436
13.10.2019, 22:35
Цитата Сообщение от Capi Посмотреть сообщение
Вы бы выложили код без искажений.
Тут я полностью согласен, и пример не помешал бы ...

Насколько я могу судить -Проблемная строка : 123
Visual Basic
1
2
3
4
5
CurrentDb.Execute "INSERT INTO MainData_tmp ( BC_doc, id_doc, VidDoc, Date_Contr, NumDoc_1, NumDoc_2, Date_Doc, Dolzhnik, Otpravitel, Status, BC_folder, BC_shelf, Date_Reg, Registrator, VRUK, Notes,Changer,Date_Change,Status2, Date_Load, SD, TB, Date_vozvrat ) " _
                  & "SELECT MD.BC_doc, MD.id_doc, MD.VidDoc, MD.Date_Contr, MD.NumDoc_1, MD.NumDoc_2, " _
                  & "MD.Date_Doc, MD.Dolzhnik, MD.Otpravitel, MD.Status, MD.BC_folder, MD.BC_shelf, MD.Date_Reg, MD.Registrator, MD.VRUK, MD.Notes, MD.Changer, MD.Date_Change, MD.Status2, MD.Date_Load, MD.SD, MD.TB, MD.Date_vozvrat " _
                  & "FROM MainData MD WHERE MD.BC_doc = '" & shk & "' or ( MD.SD = '" & NumSD & "' And MD.Dolzhnik Like '" & fio & "*' ) Or ( MD.NumDoc_1 Like '*" & Num_c & "*' And MD.Dolzhnik Like '" & fio & "*' )"
                 '& "FROM MainData MD WHERE MD.SD = '" & NumSD & "' "

И тут нужно проверять и внимательно смотреть на условия отбора ...

Добавлено через 5 минут
naa700, напишите так:
Visual Basic
1
2
3
4
5
6
7
8
9
StrSQL ="INSERT INTO MainData_tmp ( BC_doc, id_doc, VidDoc, Date_Contr, NumDoc_1, NumDoc_2, Date_Doc, Dolzhnik, Otpravitel, Status, BC_folder, BC_shelf, Date_Reg, Registrator, VRUK, Notes,Changer,Date_Change,Status2, Date_Load, SD, TB, Date_vozvrat ) " _
                  & "SELECT MD.BC_doc, MD.id_doc, MD.VidDoc, MD.Date_Contr, MD.NumDoc_1, MD.NumDoc_2, " _
                  & "MD.Date_Doc, MD.Dolzhnik, MD.Otpravitel, MD.Status, MD.BC_folder, MD.BC_shelf, MD.Date_Reg, MD.Registrator, MD.VRUK, MD.Notes, MD.Changer, MD.Date_Change, MD.Status2, MD.Date_Load, MD.SD, MD.TB, MD.Date_vozvrat " _
                  & "FROM MainData MD WHERE MD.BC_doc = '" & shk & "' or ( MD.SD = '" & NumSD & "' And MD.Dolzhnik Like '" & fio & "*' ) Or ( MD.NumDoc_1 Like '*" & Num_c & "*' And MD.Dolzhnik Like '" & fio & "*' )"
                 '& "FROM MainData MD WHERE MD.SD = '" & NumSD & "' "
 
Debug.Print StrSQL
'Выполнение
CurrentDb.Execute StrSQL
То что код напишет в ImmediateWindow проверьте на данных создав запрос по StrSQL строке.
Сразу всё будет всё видно.
0
0 / 0 / 0
Регистрация: 08.02.2019
Сообщений: 117
14.10.2019, 12:04  [ТС]
Capi, прошу прощения...

вот код без искажений:

Кликните здесь для просмотра всего текста
Visual Basic
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
Public Sub searchPakN()
 
Dim rst As Recordset, rst1 As Recordset
 
Dim StrSQL As String
 
Dim Archy As Boolean
 
Dim f_b As Boolean, v_b As Boolean
 
Dim mnCount As Integer
 
Dim FullName As String
 
Dim D As Integer
 
Dim Dnaid As Integer
 
Dim Dall As Integer
 
 
 
lb_Progress_stat.Caption = "Идет сверка данных ..."
 
 
 
 Set fDialog = Application.FileDialog(1)
 
 
 
Dnaid = 0
 
Dall = 0
 
D = 0
 
 
 
 Me.Refresh
 
DoCmd.SetWarnings False
 
With fDialog
 
    .Title = "Загрузка данных"
 
    '.InitialFileName = "C:\Локальные документы\AandV\Files" 'default path Путь по умолчанию
 
    .AllowMultiSelect = False
 
    .Filters.Clear
 
    .Filters.Add "Книга Excel (*.xls?)", "*.xls?", 1
 
    result = .Show
 
 
 
    If result = 0 Then
 
       lb_Progress_stat.Visible = False
 
       Exit Sub
 
    End If
 
    FullName = Trim(.SelectedItems.Item(1))
 
End With
 
If FullName = "C:\Локальные документы\AandV\Files\reestr_L.xlsx" Then
 
    MsgBox "Этот файл выбирать нельзя"
 
    Exit Sub
 
End If
 
FullName1 = Replace(FullName, ".", "")
 
FullName1 = Replace(FullName1, "xls", ".xls")
 
If FullName <> FullName1 Then
 
    FileCopy FullName, FullName1
 
End If
 
  
 
 MyFileName = Dir(FullName1)
 
DirName = Replace(FullName1, Dir(FullName1), "")
 
  
 
 FileCopy FullName1, "C:\Локальные документы\AandV\Files\reestr_L.xlsx"
 
lb_Progress_stat.Visible = True
 
Me.Refresh
 
 
 
 CurrentDb.Execute "DELETE * FROM Реестр_Status_L"
 
CurrentDb.Execute "DELETE * FROM MainData_tmp"
 
DoCmd.OpenQuery "Load_Reestr_Status_NN"
 
' Получаем испонителя
 
  StrSQL = "SELECT Sotrudnik.FIOs as Nam, Sotrudnik.id_Sotr as idS FROM CurSet INNER JOIN Sotrudnik ON CurSet.id_Sotr = Sotrudnik.id_Sotr"
 
     Set rst = CurrentDb.OpenRecordset(StrSQL)
 
     fiosN = rst![Nam]
 
     id = rst![idS]
 
     rst.Close
 
 
 
 lb_Progress_stat.Caption = "Подготовка данных ...   0 %"
 
'lb_Progress.Visible = True
 
Me.Refresh
 
Archy = False
 
i = 0
 
StrSQL = "SELECT Реестр_Status_L.[Strih] as shk, Реестр_Status_L.[Номер дела] as nd, Реестр_Status_L.[Серия и номер ИЛ] as ndL, Реестр_Status_L.[ФИО должника] as fio, Реестр_Status_L.id_md as im, Реестр_Status_L.[Arch] as vl, Реестр_Status_L.[Причина возврата] as prich, Реестр_Status_L.[Статус] as status, Реестр_Status_L.[flagC] as flagC, Реестр_Status_L.[Вид ИД] as vidD, Реестр_Status_L.SD as SD, Реестр_Status_L.[Комментарии] as coment FROM Реестр_Status_L"
 
Set rst = CurrentDb.OpenRecordset(StrSQL)
 
If Not rst.EOF Then
 
    rst.MoveFirst
 
    While Not rst.EOF
 
        i = i + 1
 
        mnCount = 1
 
        Num_c = Trim(Nz(rst![nd]))
 
        Num_L1 = "" & rst![ndL] & ""
 
'        fio = "" & rst![fio] & ""
 
        fio = SearchFIO(Nz(rst![fio]))
 
        shk = Trim(Nz(rst![shk]))
 
        NumSD = Trim(Nz(rst![SD]))
 
        coment = Trim(Nz(rst![coment]))
 
           ff = ""
 
           
 
           id_ = Null
 
           
 
        If Len(Num_c) = 0 Then
 
          Num_c = "NotFoundNumber"
 
        End If
 
        If Len(NumSD) = 0 Then
 
          NumSD = "NotFoundSD"
 
        End If
 
        If Len(shk) = 0 Then
 
          shk = "NotFoundshk"
 
        End If
 
        If Len(fio) = 0 Then
 
          fio = "NotFoundfio"
 
        End If
 
           
 
    'StrSQL = "SELECT id_stat FROM Spr_Status WHERE id_stat = 14"
 
    'Set rst = CurrentDb.OpenRecordset(StrSQL)
 
    'If Len(shk) = 0 Then
 
       StrSQL = "SELECT m.id_doc as idd, s.FIOs as ya, m.Registrator as onn FROM MainData m, CurSet cs INNER JOIN Sotrudnik s ON cs.id_Sotr = s.id_Sotr " _
 
           & "WHERE m.BC_doc = '" & shk & "' or ( m.SD = '" & NumSD & "' And m.Dolzhnik Like '" & fio & "*' ) Or ( m.NumDoc_1 Like '*" & Num_c & "*' And m.Dolzhnik Like '" & fio & "*' )"
 
       Set rst1 = CurrentDb.OpenRecordset(StrSQL)
 
    'Else
 
    '  StrSQL = "SELECT m.id_doc as idd, s.FIOs as ya, m.Registrator as onn FROM MainData m, CurSet cs INNER JOIN Sotrudnik s ON cs.id_Sotr = s.id_Sotr " _
 
    '       & "WHERE m.BC_doc = '" & shk & "'"
 
       '& "WHERE m.SD = '" & NumSD & "' "
 
    'Set rst1 = CurrentDb.OpenRecordset(StrSQL)
 
    'End If
 
  
 
  If rst1.EOF Then
 
     t2 = 0
 
  Else
 
     rst1.MoveLast
 
     t2 = rst.RecordCount
 
  End If
 
  'DoCmd.SetWarnings False
 
  'lb_Progress.Caption = "Подготовка файла ..."
 
  'lb_Progress.Visible = True
 
  
 
  rst1.Close
 
  
 
  If t2 > 0 Then
 
    'If Len(shk) = 0 Then
 
    CurrentDb.Execute "INSERT INTO MainData_tmp ( BC_doc, id_doc, VidDoc, Date_Contr, NumDoc_1, NumDoc_2, Date_Doc, Dolzhnik, Otpravitel, Status, BC_folder, BC_shelf, Date_Reg, Registrator, VRUK, Notes,Changer,Date_Change,Status2, Date_Load, SD, TB, Date_vozvrat ) " _
 
                  & "SELECT MD.BC_doc, MD.id_doc, MD.VidDoc, MD.Date_Contr, MD.NumDoc_1, MD.NumDoc_2, " _
 
                  & "MD.Date_Doc, MD.Dolzhnik, MD.Otpravitel, MD.Status, MD.BC_folder, MD.BC_shelf, MD.Date_Reg, MD.Registrator, MD.VRUK, MD.Notes, MD.Changer, MD.Date_Change, MD.Status2, MD.Date_Load, MD.SD, MD.TB, MD.Date_vozvrat " _
 
                  & "FROM MainData MD WHERE MD.BC_doc = '" & shk & "' or ( MD.SD = '" & NumSD & "' And MD.Dolzhnik Like '" & fio & "*' ) Or ( MD.NumDoc_1 Like '*" & Num_c & "*' And MD.Dolzhnik Like '" & fio & "*' )"
 
                 '& "FROM MainData MD WHERE MD.SD = '" & NumSD & "' "
 
                  Dnaid = Dnaid + 1
 
                 
 
    'Else
 
    'CurrentDb.Execute "INSERT INTO MainData_tmp ( BC_doc, id_doc, VidDoc, Date_Contr, NumDoc_1, NumDoc_2, Date_Doc, Dolzhnik, Otpravitel, Status, BC_folder, BC_shelf, Date_Reg, Registrator, VRUK, Notes,Changer,Date_Change,Status2, Date_Load, SD, TB, Date_vozvrat ) " _
 
    '              & "SELECT MD.BC_doc, MD.id_doc, MD.VidDoc, MD.Date_Contr, MD.NumDoc_1, MD.NumDoc_2, " _
 
    '              & "MD.Date_Doc, MD.Dolzhnik, MD.Otpravitel, MD.Status, MD.BC_folder, MD.BC_shelf, MD.Date_Reg, MD.Registrator, MD.VRUK, MD.Notes, MD.Changer, MD.Date_Change, MD.Status2, MD.Date_Load, MD.SD, MD.TB, MD.Date_vozvrat " _
 
    '              & "FROM MainData MD WHERE MD.BC_doc = '" & shk & "'"
 
    '            '& "FROM MainData MD WHERE MD.SD = '" & NumSD & "' "
 
    '             Dnaid = Dnaid + 1
 
                                
 
    'End If
 
    ' Обновление поля Комментарии
 
    CurrentDb.Execute "UPDATE MainData_tmp SET Notes = '" & coment & "'" _
 
                    & "WHERE MainData_tmp.BC_doc = '" & shk & "' Or ( MainData_tmp.SD = '" & NumSD & "' And MainData_tmp.Dolzhnik Like '" & fio & "*' ) Or ( MainData_tmp.NumDoc_1 Like '*" & Num_c & "*' And MainData_tmp.Dolzhnik Like '" & fio & "*' )"
 
                ' & "WHERE MainData_tmp.SD = '" & NumSD & "' "
 
  Else
 
    rst.Edit
 
    rst![flagC] = 1
 
    rst.Update
 
  End If
 
            
 
            rst.Edit
 
        kol_v = rst.RecordCount
 
        rst![im] = id_
 
        If Archy Then rst![vl] = 1
 
        Archy = False
 
        'rst![flagC] = mnCount
 
        'rst.Update
 
        rst.MoveNext
 
        DoEvents
 
        ii = Round(i / kol_v * 100, 0)
 
        lb_Progress_stat.Caption = "Подготовка данных ...   " & ii & " %"
 
   Wend
 
End If
 
rst.Close
 
CurrentDb.Execute "Update MainData_tmp Set NumDoc_2 = 'В рабочей базе'"
 
Me.Requery
 
 
 
 Call OutNotFound("Нижний Новгород", FullName)
 
DoCmd.OpenQuery "Записи реестра не найденные в базе", acViewNormal, acReadOnly
 
D = DCount("*", "Записи реестра не найденные в базе")
 
Dall = D + Dnaid
 
Me.Refresh
 
MsgBox "           Готово!" & Chr(13) & Chr(10) & "- не найдено в БД " & D & " записи (-ей)" & Chr(13) & Chr(10) & "- найдено в БД " & Dnaid & " записи (-ей)" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Итого обработано: " & Dall & " документа (-ов)"
 
  
 
 'lb_Progress.Visible = False
 
'Me.Refresh
 
'MsgBox "Готово!"
 
 
 
End Su


Добавлено через 10 минут
Eugene-LS, все верно проблемная 123 строка. Дело в том что в строке 129 он подсчет нормально ведет, а в таблице по условию отбора только одна запись...
0
Эксперт MS Access
 Аватар для Eugene-LS
12065 / 5848 / 1494
Регистрация: 05.10.2016
Сообщений: 16,436
14.10.2019, 12:20
Цитата Сообщение от naa700 Посмотреть сообщение
а в таблице по условию отбора только одна запись
Ну так и решайте это.
Помочь вам проблематично, т.к. данных нет - да и задачка толком мне не ясна.
0
0 / 0 / 0
Регистрация: 08.02.2019
Сообщений: 117
14.10.2019, 12:37  [ТС]
Eugene-LS, по условию совпадает 21 запись из таблицы... которая подгружается из файла. То есть с таблицей maindata по условию из загружаемого файла совпадает 21 запись. И все они должны быть помещены в таблицу MainData_tmp. Но почему-то попадает только одна...
0
Эксперт MS Access
 Аватар для Eugene-LS
12065 / 5848 / 1494
Регистрация: 05.10.2016
Сообщений: 16,436
14.10.2019, 12:43
Лучший ответ Сообщение было отмечено naa700 как решение

Решение

Цитата Сообщение от naa700 Посмотреть сообщение
Но почему-то попадает только одна...
Ну так наверно дело в условиях отбора ?!
Разберитесь с "FROM MainData MD WHERE MD.BC_doc = '" & shk & ....
В пост #4 (внизу) я написал как лучше сделать это.
1
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,933
Записей в блоге: 4
14.10.2019, 13:45
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Разберитесь с "FROM MainData MD WHERE MD.BC_doc = '" & shk & ....
предпочитаю вставлять пробел в НАЧАЛО строки -надежнее и нагляднее и делю длинную строку на логические части(без знака продолжения), делаю подстроки в размер ширины экрана(обычно до 80 символов)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
S ="INSERT INTO MainData_tmp ( BC_doc, id_doc, VidDoc, Date_Contr, NumDoc_1, NumDoc_2, Date_Doc, Dolzhnik,"
s=s & "  Otpravitel, Status, BC_folder, BC_shelf, Date_Reg, Registrator, VRUK, Notes,Changer,Date_Change,Status2,"
s=s & "   Date_Load, SD, TB, Date_vozvrat ) " 
 
s=s & "  SELECT MD.BC_doc, MD.id_doc, MD.VidDoc, MD.Date_Contr, MD.NumDoc_1, MD.NumDoc_2, " 
s=s & "  MD.Date_Doc, MD.Dolzhnik, MD.Otpravitel, MD.Status, MD.BC_folder, MD.BC_shelf, MD.Date_Reg,"
s=s & "  MD.Registrator, MD.VRUK, MD.Notes, MD.Changer, MD.Date_Change, MD.Status2, MD.Date_Load,"
s=s & "   MD.SD, MD.TB, MD.Date_vozvrat " 
 
s=s & "  FROM MainData MD
s=s & "  WHERE MD.BC_doc = '" & shk  & "'"
s=s & "    or ( MD.SD = '" & NumSD & "' And MD.Dolzhnik Like '" & fio & "*' ) "
s=s & "    Or ( MD.NumDoc_1 Like '*" & Num_c & "*' And MD.Dolzhnik Like '" & fio & "*' )"
                 
 
Debug.Print S
'Выполнение
CurrentDb.Execute S
0
Эксперт MS Access
 Аватар для Eugene-LS
12065 / 5848 / 1494
Регистрация: 05.10.2016
Сообщений: 16,436
14.10.2019, 13:58
Цитата Сообщение от shanemac51 Посмотреть сообщение
делаю подстроки в размер шинины экрана
Ну это лихо! - не у всех большие экраны пока
Думаю, лучше держатся длинны 80 - 120 символов (если пишу не для себя) - Для форума лучше < 90 ...
0
0 / 0 / 0
Регистрация: 08.02.2019
Сообщений: 117
15.10.2019, 11:31  [ТС]
Всем спасибо вопрос решен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2019, 11:31
Помогаю со студенческими работами здесь

Внесение изменений в таблицу MySql
Здравствуйте, прошу помочь в следующем вопросе. Есть таблица в MySql INSERT INTO `orders` (`id`, `phone`, `name`, `date`, `time`,...

Внесение локальных изменений в таблицу
Здравствуйте, уважаемые форумчане. Подскажите пожалуйста, как лучше вносить локальные изменения в таблицу. Например, надо изменить емаилы...

Внесение данных из файла в таблицу
Всем привет.Сегодня я столкнулся с проблемой и поскольку я новичок, решил задать вопрос на форуме. Существует таблица в 2 колонки и...

Внесение данных в таблицу DBGridEh
Здравствуйте! Не могу разобраться с многообразием этой библиотеки. Как заполнить таблицу, представленную на рисунке сверху? Данные...

Внесение данных в таблицу ADODB
Здравствуйте,уважаемые! Подскажите,пожалуйста,почему вносит только числовые значения?а текст напрочь отказывается...:-( Вот код на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru