|
|
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
А проблема заключается вот в чем: из проекта я создаю на SQL-сервере временную таблицу #<Table1>. Через хранимые процедуры на SQL-е я ее заполняю и в качестве источника данных запросом - "SELECT * FROM #<Table1>" кидаю данные на подформу. При обновлении данных на форме по событию AfterUpdate делаю <Имя подформы>.Form.Refresh. И далее по запросу: "Select Count(Поле1) FROM #<Table1>" Вываливается ошибка Invalid Object Name #<Table1>. Нажимаю Debug и через F8 все проходит зашибися. Так же все работает четко, если в таблице всего две записи. А если 1500 то вываливается ошибка. Я так понимаю, что строчка <Имя подформы>.Form.Refresh блокирует на время эту временную таблицу, а так как MS ACCESS устанавливает три сессии, то вероятно одной сессией он обновляет данные с подформы, а другой пытается выполнить запрос, - ввиду это скорее всего и выходит такая вот коллизия. Если кто нибудь сталкивался с подобным помогите плз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 12:18:43 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Я думаю, что просто напросто к моменту Refresh'a твоей таблицы уже в базе данных нет. Изменяется сессия и естественно твоя временная таблица убивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 13:29:11 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Нет ты не прав таблица как раз таки остается, но он ее почему-то не видит. Причем не видит он ее как раз на время обновления. Я уже писал, что если в таблице всего 2-е записи, то все работает ОК. Если 1500 записей, то ни фига. И проблема встает вот в чем: если таблица с 2-мя записями то рефреш делается за доли секунды и как раз к запросу обновление уже завершается. Для больших таблиц, рефреш не успевает сделаться и таблицу приложение не видит. Если сделать задержку на 10 сек. то впринципе через раз прокатывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 14:47:08 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
А на счет сессии. Временная таблица может убиться только если завершилось подключение. То есть таблица есть все время, а вот видно ее не всегда!!! Вот прикол!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 14:49:29 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
А на счет сессии. Временная таблица может убиться только если завершилось подключение. То есть таблица есть все время, а вот видно ее не всегда!!! Вот прикол!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 14:51:57 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Access .ADP может выполнять асинхронный Requery. Если основное подключение занято ожиданием операции, то Access .ADP создает новое подключение и выполняет Requery через него. Сам понимаешь для этого подключения #Table не существует.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 15:53:42 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
А как средствами Accessa выполнить асинхронный Requery. Но вообще-то мне нужен не Requery, а refresh. Объясняю почему: на подформу выводится список полей, одно из которых битовое поле для выделения выбранных записей. Если рефреш не делать, то по событию afterupdate число выбранных записей считается неправильно. Если добавить рефреш, то все работает зашибись, кроме этого злосчастного момента с временной таблицей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2004, 16:46:13 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
А если попробовать глобальную временную таблицу ##Table ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 04:02:34 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Lexa_VА как средствами Accessa выполнить асинхронный Requery. А никак, он сам решает как это делать. Рулить этим невозможно. Lexa_VНо вообще-то мне нужен не Requery, а refresh. Те же яйца, только вид сбоку. Lexa_VЕсли добавить рефреш, то все работает зашибись, кроме этого злосчастного момента с временной таблицей. Самое простое - отказаться от временной таблицы и заменить на постоянную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 06:33:58 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
vma_mntА если попробовать глобальную временную таблицу ##Table Тогда вопрос, если идет много пользовательская работа - коннекшинов много и все работают с данной таблицей? Как я понимаю временная таблица отличается от глобальной как раз тем что она привязана к коннекшену. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 08:54:54 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Вопрос встает ГЛОБАЛЬНЫЙ вот в чем: Я НЕ ПОНИМАЮ ТАКОЙ ПАРАЛЛЕЛИЗМ ЭТО ГЛЮК MS ACCESS или это надо ковырять в SQL-сервере для того чтобы определить какие блокировки он ставит на временные таблицы??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 08:57:28 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
>>Я НЕ ПОНИМАЮ ТАКОЙ ПАРАЛЛЕЛИЗМ ЭТО ГЛЮК MS ACCESS Нет это BY Design. >>или это надо ковырять в SQL-сервере для того чтобы определить какие блокировки он ставит на временные таблицы??? Ты нихрена не понял. Access открывает НОВОЕ ПОДКЛЮЧЕНИЕ, для него просто НЕ СУЩЕСТВУЕТ #Table, созданная в другом подключении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 10:00:00 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Без проблем пользуюсь: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 10:13:54 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
>> cmd.ActiveConnection = CurrentProject.Connection А ты НОВУЮ коннекцию открой... ---------------------- Я ведь не от хорошей жизни говорю, сам на эти грабли наступал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 10:22:34 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
aleks2>> Access открывает НОВОЕ ПОДКЛЮЧЕНИЕ, для него просто НЕ СУЩЕСТВУЕТ #Table, созданная в другом подключении. Как access открывает новое подключение если через F8 работает замечательно. Так же все работает если в таблице всего несколько записей, а не несколько тысяч записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 10:22:37 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
To Aleksis Видиш ли проблема создания и удаления временных таблиц у меня не стоит. Все создается и удаляется когда надо и где надо. Проблема в том, что в промежуток времени между созданием и удалением, а именно во время рефреша, access не видит эту самую созданную временную таблицу. Если в таблице мало записей то все прокатывает четко, так как рефреш делается доли секунды, а если много записей то несколько секунд и именно в эти несколько секунд временная таблица недоступна (а именно INVALID OBJECT NAME #<TableName>) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 10:27:49 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
>>Как access открывает новое подключение если через F8 работает замечательно. Так же все работает если в таблице всего несколько записей, а не несколько тысяч записей. Пока ты жмешь F8 (а это дольше, чем просто исполнение кода), основное подключение успевает освободиться и Access (не дурак) пользует его. Аналогично и в случае с малым числом записей во временной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 10:35:43 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
aleks2>> cmd.ActiveConnection = CurrentProject.Connection Понимаешь, ошибка вываливается во время вы полнения хранимой процедуры, которая вызывается следующим кодом: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 10:40:42 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
не сюда ли смотреть? /topic/106337&hl= 2 Саныч Ау! вопросик в ФАК не пора? (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 10:40:52 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
пардон. поторопился (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 10:43:32 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
To aleks2 Слушай, а программно это дело обойти никак нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 10:53:36 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
А еще ребята вопрос вот какой: весь этот геморой идет из-за того, что на подформе пользователь делает выбор (раставляет галочки). По событию AfterUpdate запрос: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 11:01:35 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
ВСЕМ кто принимал учатие в беседе огромное спасибо. Сделал все тоже самое через глобальную таблицу, как кто-то из вас мне посоветовал, все работает превосходно. Но есть еще один вопрос в много пользовательском режиме как работать с этой таблицей? может кто подскажет или ссылку кинет!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 12:20:55 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
NewID() тебе поможет.... ну или SUSER_SID() есть еще варианты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 12:49:47 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2004, 14:22:28 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Повторюсь еще раз. Если использовать видимые объекты Access (формы, отчеты, поля со списком), то надо использовать только глобальные таблицы. Если использовать временные таблицы только в тексте программы для обработки промежуточных результатов, то хорошо работают и локальные временные таблицы. Для многих пользователей я делаю так. ================== Dim T as String T = "##Table" & UN() CN.Execute "CREATE TABLE " & T & " (.....)" Public Function UN() Dim SQL As String, S As String Dim S1 As ADODB.Recordset, Cn As ADODB.Connection Set Cn = CurrentProject.Connection Set S1 = New ADODB.Recordset SQL = "SELECT SUSER_SNAME() AS N" S1.Open SQL, Cn, , adLockOptimistic S = S1!N S = Mid(S, InStr(1, S, "\") + 1) UN = S End Function ============= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 03:38:14 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
vma_mntЕсли использовать видимые объекты Access (формы, отчеты, поля со списком), то надо использовать только глобальные таблицы. У меня формы на #table прекрасно работают, а про отчеты это ты вааще загнул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 09:57:54 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Pavel vma_mntЕсли использовать видимые объекты Access (формы, отчеты, поля со списком), то надо использовать только глобальные таблицы. У меня формы на #table прекрасно работают, а про отчеты это ты вааще загнул. Это ты еще не нарывался. Нужно не просто форму, а форму с субформой(ами). Вот тогда и отгребешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 10:08:25 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
PavelЭто ты еще не нарывался. Нужно не просто форму, а форму с субформой(ами). Вот тогда и отгребешь. Вот как раз в сабформе и используется. А насчет огрестись/неогрестись - 4 года с adp работаю, уже и не знаю, огребусь чего еще или уже на все грабли наступал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 10:31:09 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Автору топика: - временная таблица подсовывается как источник формы, а что дальше делает юзер с этими данными (другими словами для чего нужно такая таблица)? - временная таблица постоянной структуры или каждый раз меняется? P.S. Очень часто бывает, что проблему можно решить не "в лоб", а в обход и куда более оптимально. Только для решения нужно знать исходную постановку задачи, а не текущие проблемы на пути к решению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 10:40:44 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Автору топика: - временная таблица подсовывается как источник формы, а что дальше делает юзер с этими данными (другими словами для чего нужно такая таблица)? - временная таблица постоянной структуры или каждый раз меняется? Эта временная таблица нужна для промежуточной выборки какого-либо контингента. То есть, если сделать сложный запрос и его результат занести во временную таблицу, от с такой чтукой проще работать (это во первых). Во вторых, в данных временных таблицах, я использую поле выбора (<Поле выбора> bit DEFAULT 0) - на форме это Check Box, у которого Control Source как раз стоит <Поле выбора>. Такая организация очень удобна для выделения подмножества полей и записей из всего множества, а так же позволяет осуществлять селекцию записей вручную на форме из результирующего набора данных, т.е. из #Table1 или из ##Table1+<Уникальный идентификатор> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:05:53 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Да чтобы не уходить от темы самого топика, я так до сих пор и не понял почему на время рефреша или requery временная таблица недоступна??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:08:47 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Lexa_VЭта временная таблица нужна для промежуточной выборки какого-либо контингента. То есть, если сделать сложный запрос и его результат занести во временную таблицу, от с такой чтукой проще работать (это во первых). Во вторых, в данных временных таблицах, я использую поле выбора (<Поле выбора> bit DEFAULT 0) - на форме это Check Box, у которого Control Source как раз стоит <Поле выбора>. Такая организация очень удобна для выделения подмножества полей и записей из всего множества, а так же позволяет осуществлять селекцию записей вручную на форме из результирующего набора данных, т.е. из #Table1 или из ##Table1+<Уникальный идентификатор> А теперь то же самое, но на русском языке Чуть понятнее и на примере если можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:21:08 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
incold Ну короче, делаешь временную таблицу с полями какими тебе надо. SELECTом ее заполняешь. Но так как табличка непростая, а вней есть еще поле битовое выбора, то есть в нее из формы можно проставлять в это самое поле единички(запись выбрана для последующих действий) или сбрасывать на нолик. По умолчанию для всех записей стоит нолик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 15:49:12 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Ну прям все как у меня :) Пока работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2004, 06:19:00 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Так же работало где-то год. Потом вдруг иногда стала вылезать подобная ошибка Причем на одной БД все нормально, а на другой на том же сервере периодически выскакивает Поискал по форуму - нашел что изредка такие вопросы возникают и у других (не только в Access). Плюнул - и переделал на постоянную таблицу + поле SPID (если делать ##table+(что-то уникальное для пользователя),то придется в ХП использовать динамический SQL) Может,конечно, нужно было подольше покопаться... Вот,кстати, недавно подобное было http://www.sql.ru/forum/actualthread.aspx?tid=106005 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2004, 10:13:53 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за участие!!! Очень многое понял. Единственное чего жаль так это то, что я так до сих пор и не догнал почему с временной таблицей #Table не получается, а с ##Table все работает нормально и как блокируются локальные временные таблицы, если они вообще блокируются!!! Может этот вопрос надо было разместить в топик не для Access, а для MS SQL!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 13:42:35 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Нет, это только в ACCESS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 14:07:59 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Да я тоже так думаю. Мне кажется даже что я понял в чем фишка. Когда создается таблица #Table, то она создается относительно конкретного конекшена. Я все делаю как надо, т.е. создаю новый конекшн, затем присваиваю ему CurrentProject.Connection. Но вот выражение: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 14:38:41 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Да, может кто-нибуть знает как физически происходит Refresh? То есть как он производит обновление данных на MS SQL для временнной таблицы!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 14:44:24 |
|
||
|
Проблема связи проекта *.adp с временными таблицами на SQL!!!
|
|||
|---|---|---|---|
|
#18+
Lexa_VДа, может кто-нибуть знает как физически происходит Refresh? То есть как он производит обновление данных на MS SQL для временнной таблицы!!! Профайлер об этом подробно расскажет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2004, 06:10:20 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1672129]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 297ms |

| 0 / 0 |
