powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
9 сообщений из 9, страница 1 из 1
Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
    #32453536
Таб1-исходная таблица
Таб2-таблица,в которую добавляются данные из Таб1

Пож-ста,подскажите,как написать следующий цикл:
for i=(первая запись из Таб1) to (последняя запись из Таб1)
for j=3 to (последнее поле в текущей записи ТАБ1)
If Таб1.поле(j) непустое then (добавить в новую записьТаб2 в поле Таб2.Имя значение поля Таб1.поле(j) и добавить в новую записьТаб2 в поле Таб2.Номер ИМЯ поля Таб1.поле(j) )
Next j
Next i

Т.е. идет цикл по всем записям исходной таблицы.Потом вложенный цикл по всем полям начиная с 3 текущей записи исходной таблицы.Если значение поля непустое,то в одно поле новой записи добавляемой таблицы записывается значение этого непустого поля,а в другое поле добавляемой таблицы записывается значение имени этого непустого поля.
Запутался с адресацией имен и значений полей,пожалуйста,если можно,попонятнее напишите алгоритм.
Заранее спасибо.
...
Рейтинг: 0 / 0
Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
    #32453570
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запутался с адресацией имен и значений полей,пожалуйста,если можно,попонятнее напишите алгоритм.
ты бы лучше код показал, который не работает, а то все надо руками писать - не скопировать ничего...
----
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim r1 as dao.recordset
Dim r2 as dao.recordset

set r1 = currentdb.openrecordset ( "..." )
set r2 = currentdb.openrecordset ( "..." )

for i= 0  to r1.recordcount -  1 
for j= 3  to r1.fields.count -  1 
if r1.fld1 <> null '(или not isnull(r1.fld1))' then
sqlstr =  "insert into ... Таб2.Имя = '" & Таб1.поле(j)  & "'      
'(или Таб2.Имя = " & Таб1.поле(j)  & " - это в случае, если Таб1.поле(j) - числовое)', Таб2.Номер = '" & Таб1.поле(j).name & "'" 
currentdb.execute sqlstr
end if
Next j 
Next i 
...
Рейтинг: 0 / 0
Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
    #32453596
sns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sns
Гость
For j = 0 To RSdb.Fields.Count - 1
CFM = RSdb.Fields(j).Name
RSdb.Fields(CFM) = rsK.Fields(CFM)
Next
...
Рейтинг: 0 / 0
Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
    #32453606
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sns
Это что?
...
Рейтинг: 0 / 0
Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
    #32453614
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты бы лучше не код показывал, а на словах бы сказал, зачем тебе такая чушь нужна??? ИМХО, полезность этой билеберды нулевая!!! Если в строке, только одно поле не пустое, то в таблице будет наименование поля и значение, а если все непустые, то наименование последнего не пустого поля (исходя из примера) и перечисление всех начений, которые в строке не пустые!!! Чушь редкостная. ИМХО. ;-(
...
Рейтинг: 0 / 0
Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
    #32453679
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Option Compare Database
Option Explicit

Public Function ccc()
Dim cnn As New ADODB.Connection
Dim rst1 As New ADODB.Recordset
Dim rst2 As New ADODB.Recordset
Dim i As Integer

Set cnn = CurrentProject.Connection
rst1.Open "tab1", cnn, adOpenKeyset, adLockPessimistic
rst2.Open "tab2", cnn, adOpenKeyset, adLockPessimistic
rst1.Move 2
Do Until rst1.EOF
For i = 0 To rst1.Fields.Count - 1
If Len(Nz(rst1.Fields(i).value, "")) > 0 Then
With rst2
.AddNew
!FieldValue = Nz(rst1.Fields(i).value, "")
!FieldName = rst1.Fields(i).Name
.Update
End With
End If
Next
rst1.MoveNext
Loop

rst1.Close
rst2.Close
cnn.Close
End Function

Для примера...
...
Рейтинг: 0 / 0
Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
    #32453683
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deminik
Запустил выполняться эту программу, пошел покурил, вернуля, подождал минутку и раз - готово...
...
Рейтинг: 0 / 0
Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
    #32453708
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторяю: Для примера...
...
Рейтинг: 0 / 0
Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
    #32453738
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А скорость и правда не ахти - 512 записей в секунду...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Цикл для добавления данных в таблицу на основании полей и названий полей другой таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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