SQL -> Запрос типа SHOW FIELDS FROM

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

SQL -> Запрос типа SHOW FIELDS FROM

Сообщение MadChild » 26.02.2008 (Вт) 14:39

Доброе время суток.
Накапал в манюале по SQL вот такой запрос "SHOW FIELDS FROM имя таблицы". Задача запроса вывести все Поля указанной таблицы.

Попробовал его в таком коде:
Код: Выделить всё

.....
        On Error Resume Next
        PanelEventText Time & " [ > ] Пользовательский запрос к БД: SHOW FIELDS FROM " & FieldsTables
        DBConnect
        Set rs = db.OpenRecordset("SHOW FIELDS FROM " & FieldsTables)
.....

Соответственно в переменную FieldsTables ложиться название нужной таблицы.
В ответ выскакивает ошибка: Ядро базы данных Microsoft Jet не может найти входную таблицу или запрос 'SHOW FIELDS FROM Clients'. Проверьте существование таблицы или запроса и правильность имени.

Подскажите где собака порылась? Или текст запроса не таков?

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

Сообщение iGrok » 26.02.2008 (Вт) 15:04

Это консольная команда сервера бд, если гугль меня не обманул. )
И на Recordset'е она у тебя ну никак не сработает.

Чтобы узнать поля можешь сделать
SELECT TOP 1 * FROM tableName
И потом перебрать Recordset.Fields().Name
label:
cli
jmp label

MadChild
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 04.03.2002 (Пн) 14:52
Откуда: Russia

Сообщение MadChild » 26.02.2008 (Вт) 15:42

Сделал вот так:
Код: Выделить всё
        DBConnect
        Set rs = db.OpenRecordset("SELECT TOP 1 * FROM " & FieldsTables)
        For i = 0 To rs.RecordCount
            MsgBox rs.Fields(i).Name
        Next i
        DBDisconnct

Выводит только первые два поля.. хотя в таблице их 10.

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

Сообщение iGrok » 26.02.2008 (Вт) 15:44

Кхм.
...to rs.Fields.Count
label:
cli
jmp label

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

Сообщение alibek » 26.02.2008 (Вт) 16:14

Во-первых, скорее всего ты невнимательно прочел мануал. Либо это не мануал, а чье-то самодельное и безграмотное творчество, которое нужно выкинуть.

Во-вторых, таким образом получать список полей имеет смысл только если ты делаешь программу под конкретную базу, которая никогда не будет меняться. Или пишешь хранимую процедуру.
В общем же случае системные таблицы могут иметь различные имена, структуру и способ доступа.

Лучше используй соответствующие инструменты. Либо подключай ADOX, либо используй метод OpenSchema с нужными тебе атрибутами.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение iGrok » 26.02.2008 (Вт) 16:19

Эээ.. Это ты про мой, или про его способ? ,-)
label:
cli
jmp label

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

Сообщение alibek » 26.02.2008 (Вт) 16:41

Про пост автора топика.
Твой способ рабочий, но неудачный.
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.02.2008 (Вт) 17:06

писал на память, проверь сам :wink:

Код: Выделить всё
set adors=adoconnection.OpenSchema(adopenschematable,null,null,"MyTableName")


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

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

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

    TopList  
cron