adodb.recordset.source=select на 1000 символов :)

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
uzer_@
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 16.08.2005 (Вт) 16:44
Откуда: Санкт-Петербург

adodb.recordset.source=select на 1000 символов :)

Сообщение uzer_@ » 17.07.2008 (Чт) 14:37

уточнить хотел, не выполню я селект на 1000 символов из vba кода?
надо таблицу в ворде заполнить :(, ворд и в слиянии этот селект не видит :(
ps - с слиянием разобрался - не видит из-за uniona, можно слить с unionом из-под accessa, но это не то что нужно, хотелось по recordsety циклом пройти и таблицу в ворде заполнить :(

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 17.07.2008 (Чт) 16:33

Если проблема разовая - вылить в аксессе в отдельную таблицу, и уже работать с ней. Если надо полностью автоматически, и постоянно.. Хм..
У меня adodb отказался выполнять запрос на 3.5к символов.
Так, чтобы ему 1к не нравился.. Да ещё и из-за унионов.. Как-то странно.
label:
cli
jmp label

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 17.07.2008 (Чт) 17:18

да не c accessom все впорядке, открываю mdb файл из vba и там sourcу recordsetа подсовываю селект на 1000 символов получаю в результате на recordset.open runtime error и в source урезанный селект висит до 19Х символов около 200 короче, похоже на ограничениe stringa вот я и спрашиваю возможно ли че как, а то 70 таблиц создавать нехочется :(
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.07.2008 (Чт) 21:48

$€rg писал(а):похоже на ограничениe stringa вот я и спрашиваю возможно ли че как, а то 70 таблиц создавать нехочется :(


Ограничение String-a:

There are two kinds of strings: variable-length and fixed-length strings.

A variable-length string can contain up to approximately 2 billion (2^31) characters.

A fixed-length string can contain 1 to approximately 64K (2^16) characters.


Ограничение на длину Source Recordset-a для MDB-шек уже не помню... Но возможно что ты напоролся на него, тогда надо оптимизировать запрос.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 17.07.2008 (Чт) 22:04

нечего там опримизировать 5 связных таблиц c inner joinами, сейчас как раз сижу ищу по sourcy ченить :roll:
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.07.2008 (Чт) 22:16

$€rg писал(а):нечего там опримизировать 5 связных таблиц c inner joinами, сейчас как раз сижу ищу по sourcy ченить :roll:


Собственно текст запроса покажи.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 17.07.2008 (Чт) 22:45

со строкой все ок, это я наложал - не там длину смотрел :) в debug.print все ok :)
Код: Выделить всё
rs2.Source = "SELECT  DISTINCTROW bug.bug_date, norma.norma_text," & _
    "who.who_fio & who.who_org & who.who_dolg, place.place_name, " & _
    "norma.norma_date+bug.bug_date FROM norma INNER JOIN (who INNER JOIN " & _
    "((place INNER JOIN bug ON place.place_id = bug.place_id) INNER JOIN " & _
    "[cross] ON place.place_id = cross.place_id) ON who.who_id = bug.who_id)" & _
    "ON norma.norma_id = bug.norma_id where bug.bug_date Between #5/15/2008# And " & _
    "#6/15/2008# and cross.place_id in (select place_id from cross  where street1_id=10)" & _
    "union SELECT  DISTINCTROW bug.bug_date, norma.norma_text, who.who_fio & who.who_org & who.who_dolg AS Âûðàæåíèå1," & _
    "place.place_name, norma.norma_date+bug.bug_date AS Âûðàæåíèå2 FROM norma INNER JOIN (who INNER JOIN" & _
    "((place INNER JOIN bug ON place.place_id = bug.place_id) INNER JOIN [adress] ON place.place_id = " & _
    "adress.place_id) ON who.who_id = bug.who_id) ON norma.norma_id = bug.norma_id where bug.bug_date Between " & _
    "#5/15/2008# And #6/15/2008# and adress.place_id in " & _
    "(select place_id from adress  where street_id=10);"



run-time error '-2147467259 (80004005)':
method 'Open' of '_Recordset' failed

пойду посмотрю что ето :roll:


http://support.microsoft.com/kb/238243 - сходил, посмотрел
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 17.07.2008 (Чт) 23:03

:D ура, cross надо было в [] взять :D всем спасибо вопрос решен ;)
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 106

    TopList