Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Истоник формы = временная таблица ?  [new]
toly_m
Member

Откуда:
Сообщений: 89
Привет всем!

sql2000+access2000

Можно ли временную таблицу (или табличную переменную) использовать в качестве источника формы? (форма-ленточная).

Пробовал так: на открытие формы проекта .adp (подключение к серверу уже есть) поставил
strSql = "if object_id('tempdb..#t') is not null drop table #t"
DoCmd.RunSQL (strSql)
strSql = "create table #t(num int)"
DoCmd.RunSQL (strSql)
т.е. вроде как врем. таблица создается в той же сессии, в каком работает проект, далее там же на открытии 2 варианта:
1
Me.RecordSource = "select num from #t"
2
Me.RecordSource = "exec GetTempData"
в теле процедуры GetTempData - select num from #t

И в обеих вариантах форма не отображает строки для ввода.

p.s. использовать временную таблицу хотелось из-за того, что порядок ввода данных таков, что сначала идет ввод в одну из подчиненных таблиц (нет пока кода из главной таблицы), а потом только в главную, и предполагалось, что данные пока хранить во врем. таблице, а на событие "После вставки" главной формы поставить код их копирования из врем.таблицы в эту самую подчиненную.
25 июл 06, 08:35    [2920531]     Ответить | Цитировать Сообщить модератору
 Re: Истоник формы = временная таблица ?  [new]
nibbles
Member

Откуда: Moscow
Сообщений: 2378
Примерно так:

В "Загрузка формы"
' cnn - на уровне модуля формы
set cnn = new adodb.connection
set cnn = CurrentProject.Connection
cnn.Execute "begin tran"
cnn.execute [создание временной таблицы желательно с ключевым полем]
rst.Source = "select * from #temptable"
rst.Open...

set me.recordset = rst

25 июл 06, 09:18    [2920656]     Ответить | Цитировать Сообщить модератору
 Re: Истоник формы = временная таблица ?  [new]
toly_m
Member

Откуда:
Сообщений: 89
Так и знал, что можно - заработало! Спасиб!

Как и сказали в "загрузке формы":
set cnn = new adodb.connection
set cnn = CurrentProject.Connection
cnn.execute [создание временной таблицы желательно с ключевым полем]
потом там же:
Me.RecordSource = "select * from #temptable"

Работает даже без cnn.Execute "begin tran" и rst.Open

p.s. как говорится, в компьютере можно сделать все, если чего-то сделать нельзя, то этого нет в миру :)
25 июл 06, 10:16    [2920908]     Ответить | Цитировать Сообщить модератору
 Re: Истоник формы = временная таблица ?  [new]
nibbles
Member

Откуда: Moscow
Сообщений: 2378
toly_m
Работает даже без cnn.Execute "begin tran" и rst.Open

Это уже отдельный вопрос и отдельная тема для очень большой дискуссии - зависит от назначения формы и организации работы всей системы.
25 июл 06, 10:57    [2921170]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить