Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: kot_k_k
когда-то создал к связанным таблам их копии с названием имятаблы_TMP
нужно было все связанные поля перестроить на эти новые таблы
вот такое замутил



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


и так по всей коллекции таблиц.


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.