powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление в таблицу данных из массива без повторов
2 сообщений из 2, страница 1 из 1
Добавление в таблицу данных из массива без повторов
    #39462870
dvstfu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавляю в таблицу Output_data данные следующим способом:

Код: 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.
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.
Dim db As Database
Dim varArray() As Variant
Dim per1 As Variant
Dim strSQL As String
Dim tdf As DAO.Recordset
Dim rstData As DAO.Recordset
Dim eData As Integer
Dim fData As Integer
Dim efields As Integer

Set db = CurrentDb()
efields = 10
strSQL = "SELECT Data.id_incoming_indicator, Data.id_region, Data.id_item_str, Data.twelvemonth, Data.id_unit, Data.ind_value, unit.name_unit, IncInd.name_incoming_indicator, StrItem.name_item_str, Data.id_data FROM unit INNER JOIN (StrItem INNER JOIN (IncInd INNER JOIN Data ON IncInd.id_incoming_indicator = Data.id_incoming_indicator) ON StrItem.id_item_str = Data.id_item_str) ON unit.id_unit = Data.id_unit WHERE (((Data.id_incoming_indicator)=" & [Forms]![main]![Data].[Form]![p1] & ") AND ((Data.id_region)=" & [Forms]![main]![Data].[Form]![p2] & ") AND ((StrItem.name_item_str)='-'));"

Set rstData = db.OpenRecordset(strSQL, dbOpenDynaset)

If rstData.RecordCount = 0 Then
    rstData.Close
    MsgBox "Недостаточно данных", 64
    Exit Sub
End If

rstData.MoveLast
rstData.MoveFirst
eData = rstData.RecordCount

If rstData.RecordCount = 1 Then
    rstData.Close
    MsgBox "Недостаточно данных", 64
    Exit Sub
End If

ReDim varArray(efields, eData)
varArray = rstData.GetRows(eData)
per1 = varArray(4, i)

Set tds = db.OpenRecordset("Output_data", dbOpenDynaset)


If (p31 = 1) And (p7 = 1) Then
For i = 1 To eData - 1
tds.AddNew
tds!out_value = varArray(5, i) - varArray(5, i - 1)
tds!id_output_indicator = 1
tds!id_outindtype = 1
tds!id_data = varArray(9, i)
tds!twelvemonth2 = varArray(3, i - 1)
tds!id_unit = per1
tds.Update
'End If
Next i
End If

If (p31 = 3) And (p7 = 1) Then
tds.AddNew
tds!out_value = ((varArray(5, eData - 1) - varArray(5, 0)) / (eData - 1))
tds!id_output_indicator = 1
tds!id_outindtype = 3
tds!id_data = varArray(9, eData - 1)
tds!twelvemonth2 = varArray(3, 0)
tds!id_unit = per1
tds.Update
End If

If (p31 = 2) And (p7 = 1) Then
For i = 1 To eData - 1
tds.AddNew
tds!out_value = varArray(5, i) - varArray(5, 0)
tds!id_output_indicator = 1
tds!id_outindtype = 2
tds!id_data = varArray(9, i)
tds!twelvemonth2 = varArray(3, 0)
tds!id_unit = per1
tds.Update
Next i
End If

Set tdsData = Nothing

rstData.Close
Set rstData = Nothing


Можно ли добавить какие то условия, чтобы повторяющиеся значения не добавлялись?
Базу прилагаю на гугл диске https://drive.google.com/open?id=0B_bBwCfw-ZAQUnRRRVZUXzZYOVk
...
Рейтинг: 0 / 0
Добавление в таблицу данных из массива без повторов
    #39462882
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Удалите первую проверку "Недостаточно данных", а во второй замените знак равенства на меньше или равно.
2) Проверки значений p31 и p7 разумнее делать до того, как начать дёргать данные - может, оно и вообще не потребуется?
3) Блоки добавления номера 1 и 3 разумнее объединить в одну процедуру, передавая ей соотв. параметры. Блок 2 тоже оформить как процедуру, и обращаться к ней как из основного кода, так и из процедуры для блоков 1 и 3.

dvstfuМожно ли добавить какие то условия, чтобы повторяющиеся значения не добавлялись?
О каких повторяющихся значениях речь? для отдельного поля? группы полей? записи целиком?
Но вообще такая задача решается созданием уникального индекса по требуемой совокупности полей - тогда дубликат не может быть добавлен в таблицу.

И плохо, что отсутствует обработчик ошибок.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление в таблицу данных из массива без повторов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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