ODBC, количество полей

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
KPEATOP
Бывалый
Бывалый
 
Сообщения: 291
Зарегистрирован: 02.12.2002 (Пн) 16:33
Откуда: Russia

ODBC, количество полей

Сообщение KPEATOP » 10.11.2009 (Вт) 14:49

У меня все работает нормально. Считываю данные из базы данных в необходимых полях таблицы.

Set gwsMainWS = CreateWorkspace("", "admin", "", dbUseODBC)
gwsMainWS.DefaultCursorDriver = dbUseODBCCursor
Set conPubs = gwsMainWS.OpenConnection("", , , sConnect)
Set qdfTemp = conPubs.CreateQueryDef("", "up_gaz_smes " & IDWell)
Set rstTemp = qdfTemp.OpenRecordset()
a=rstTemp.Fields("d_muf")

как мне узнать сколько полей в таблице, чтобы просмотреть или распечатать все имена полей при помощи rstTemp.Fields(i).Name ?
как определить число i ?
Заранее сенкс!
Вечность пахнет нефтью

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

Re: ODBC, количество полей

Сообщение Andrey Fedorov » 10.11.2009 (Вт) 16:10

KPEATOP писал(а):как мне узнать сколько полей в таблице, чтобы просмотреть или распечатать все имена полей при помощи rstTemp.Fields(i).Name ?
как определить число i ?
Заранее сенкс!


Нафиг так делать?

Посмотри Help по For Each

Кстати, ODBC такая гадость - работаю сейчас со старинной программой на Access (использует прилинкованные таблицы SQL-сервера), ладно бы ее криво написали, но кроме того: просто открытая и использованная в отчете вьюшка может заблокировать таблицу. Даже ComboBox может так же заблокировать таблицу на которой основан...

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

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: ODBC, количество полей

Сообщение Antonariy » 10.11.2009 (Вт) 18:03

просто открытая и использованная в отчете вьюшка может заблокировать таблицу
Часто работал с ODBC, но никогда с этим не сталкивался. Отсоединенные рекордсеты (и вобще манипуляции с курсором и блокировкой) должны спасти отца русской демократии.
Лучший способ понять что-то самому — объяснить это другому.

KPEATOP
Бывалый
Бывалый
 
Сообщения: 291
Зарегистрирован: 02.12.2002 (Пн) 16:33
Откуда: Russia

Re: ODBC, количество полей

Сообщение KPEATOP » 11.11.2009 (Ср) 10:26

И как например можно использовать For Each для подсчета полей таблицы ?

Set rstTemp = qdfTemp.OpenRecordset()
With rstTemp
i = 0
For Each .Fields In rstTemp
i = i + 1
Next
End With

так не получается, жалуется на .Fields
Как подсчитать количество полей ?
Вечность пахнет нефтью

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: ODBC, количество полей

Сообщение Antonariy » 11.11.2009 (Ср) 11:21

"For Each .Fields In rstTemp" — "Для каждой коллекции .Fields в рекордсете rstTemp". Тут не только нарушение синтаксиса, но и элементаного смысла. После Each должна идти переменная, а после in ссылка на коллекцию (или массив).
Код: Выделить всё
Dim f As Field
For Each f In .Fields
Лучший способ понять что-то самому — объяснить это другому.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: ODBC, количество полей

Сообщение alibek » 11.11.2009 (Ср) 11:33

А .Fields.Count что, никаких мыслей не вызывает?
Lasciate ogni speranza, voi ch'entrate.

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

Re: ODBC, количество полей

Сообщение Andrey Fedorov » 26.11.2009 (Чт) 9:55

Antonariy писал(а):
просто открытая и использованная в отчете вьюшка может заблокировать таблицу
Часто работал с ODBC, но никогда с этим не сталкивался.


А я как раз сталкиваюсь и приходится эти блокировки отлавливать и с ними разбираться...
Или еще фича - если в RowSource комбобокса стоит SЕLЕСТ по большой таблице, то это тоже может привести к блокировке. И подобной мерзости очень много...

Antonariy писал(а):Отсоединенные рекордсеты (и вобще манипуляции с курсором и блокировкой) должны спасти отца русской демократии.


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


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

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

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

    TopList