Function Tabla_TMP_RowSource()
Dim dbs As DAO.Database
Dim tbl As DAO.TableDef
Dim op As DAO.Recordset
Dim po As DAO.Recordset
Set dbs = CurrentDb
For Each tbl In dbs.TableDefs
берем линкованную таблицу
If tbl.Connect <> "" Then
открываем ее _TMP двойник
Set op = dbs.OpenRecordset(tbl.Name & "_TMP")
ищем свойство RowSource - означающее что поле связанное
For i = 0 To op.Fields.Count - 1
For j = 0 To op.Fields(i).Properties.Count - 1
If op.Fields(i).Properties(j).Name = "RowSource" Then
Stroka = Split(op.Fields(i).Properties(j).Value, " ")
dbs.Execute ("delete * from Re_Name_TBL")
Set po = dbs.OpenRecordset("Re_Name_TBL")
раскладываем его sql строку, добавляем в названия таблиц _TMP
загоняем старую строку и новую (в разобраном виде) в таблу
For k = 0 To UBound(Stroka)
With po
.AddNew
!Name_Old = Stroka(k)
!Name_New = Replace(Stroka(k), ".", "_TMP.")
!Vibor = IIf(Stroka(k) = Replace(Stroka(k), ".", "_TMP."), False, True)
.Update
End With
Next
Kod_G = 0
вываливаем форму на основаини этой таблы в ней корректируем действа машины как нужно
DoCmd.OpenForm "Re_Name_TBL", , , , , acDialog
If Kod_G = 0 Then
собираем SQL строку по новой
po.MoveFirst
str_ = ""
Do While po.EOF = False
str_ = str_ & po!Name_New & " "
po.MoveNext
Loop
загоняем ее в свойства поля
op.Fields(i).Properties(j).Value = Trim(str_)
op.Fields(i).Properties.Refresh
End If
j = op.Fields(i).Properties.Count + 100
End If
Next
Next
End If
Next
End Function
|