-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Добавление в таблицу данных из массива без повторов

Среда, 31 Мая 2017 г. 09:56 + в цитатник
Добавляю в таблицу Output_data данные следующим способом:

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

http://www.sql.ru/forum/1261679/dobavlenie-v-tablicu-dannyh-iz-massiva-bez-povtorov


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку