Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Имя таблицы в запросе – переменная
 
 автор: миха   (15.04.2009 в 18:14)   личное сообщение
 
 

Помогите, пожалуйста как решить такую задачу:
Есть таблицы с одинаковой структурой
Нужно в форме открыть любую из этих таблиц
Пробовал сделать так
На открытие формы (форма табличная)
Dim dok as string
Dok = Форма1!TabName
Me.RecordSourse = "SELECT dok.Поле1, dok.Поле2 FROM dok;”
Access говорит – Не существует источника…"SELECT dok.Поле1, dok.Поле2”

Подскажите, что нужно сделать. Заранее спасибо.

  Ответить  
 
 автор: Lukas   (15.04.2009 в 18:35)   личное сообщение
 
 

Как вариант:

Me.RecordSource = Forms("FormName").Controls("ControlName").Value

Или:
Dim strSQL As String
strSQL="SELECT Поле1, Поле2 FROM " & Forms("FormName").Controls("ControlName").Value
Me.RecordSource = strSQL

  Ответить  
 
 автор: миха   (15.04.2009 в 18:50)   личное сообщение
 
 

Спасибо
Буду пробывать

  Ответить  
 
 автор: миха   (15.04.2009 в 19:42)   личное сообщение
 
 

Что то не проходит…

Попробую точнее сформулировать задачу
Есть таблицы с одинаковой структурой, имеющие разные TabName и одинаковые имена полей
Есть Форма1 из которой выбирается имя одной из этих таблиц (TabName)
Есть Форма2 не имеющая RecordSourse
На открытие Формы2 (форма табличная)
Dim Dok as string
Dok = Форма1!TabName
Далее нужно назначить RecordSource для Формы2, используя переменную Dok и с использованием WHERE
Спасибо

  Ответить  
 
 автор: Lukas   (15.04.2009 в 20:02)   личное сообщение
16 Кб.
 
 

Пример

  Ответить  
 
 автор: Lukas   (15.04.2009 в 20:18)   личное сообщение
17 Кб.
 
 

Вот пример с фильтром, через OpenArgs

  Ответить  
 
 автор: миха   (15.04.2009 в 20:24)   личное сообщение
 
 

Извините, в вашем примере из формы1 выбираю таблицу нажимаю "Открыть форму2" выскакивает сообщение ...Module not found ... Может у меня пример не полностью скачивается? По обработке событий открываю VB редактор, открываю модуль формы и "Прог-ма выполнила недопустимую операцию... и т.д." Как посмотреть код? Спасибо

  Ответить  
 
 автор: Lukas   (15.04.2009 в 20:31)   личное сообщение
16 Кб.
 
 

Какой версии ACCESS установлен? Новая версия:

Код формы "Форма1" для 2 примера:

Private Sub btnOpenForm2_Click()

    Dim strSQL As String
    
    If Len(Nz(Me.ListTables)) = 0 Then Exit Sub
    
    strSQL = "SELECT * FROM " & Me.ListTables & " WHERE ItemValue=" & Me.ListItemValue
    
    If CurrentProject.AllForms("Форма2").IsLoaded Then DoCmd.Close acForm, "Форма2"
    DoCmd.OpenForm "Форма2", acFormDS, , , , , strSQL
End Sub

Код формы "Форма2"

Private Sub Form_Open(Cancel As Integer)
    Me.RecordSource = Nz(Me.OpenArgs, "Таблица1")
End Sub

  Ответить  
 
 автор: миха   (15.04.2009 в 20:48)   личное сообщение
 
 

Большое спасибо! Последний пример работает

Буду разбираться

  Ответить  
 
 автор: миха   (16.04.2009 в 09:45)   личное сообщение
 
 

Еще раз БОЛЬШОЕ СПАСИБО!
Все получилось так как хотел

  Ответить  
 
 автор: Анатолий (Киев)   (16.04.2009 в 10:34)   личное сообщение
 
 


Есть таблицы с одинаковой структурой, имеющие разные TabName и одинаковые имена полей

А почему не одна таблица с дополнительным полем-признаком?

  Ответить  
 
 автор: миха   (17.04.2009 в 11:13)   личное сообщение
 
 

Потому, что таблицы - Оборотно-сальдовые ведомости, помесячно, за несколько лет
возникнут проблемы с индексированными полями да и таблица будет расти как на дрожжах
а так проще - по шаблону создаю новую тбл с именем Мес_Год переношу остатки и далее по Бух-операциям. Хотя смысл в вашем вопросе есть, надо подумать. Спасибо

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList