Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/17: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Soft17
1 / 1 / 1
Регистрация: 15.01.2017
Сообщений: 386
1

Как SQL запросом получить список полей таблицы текущей базы данных?

11.02.2019, 13:43. Просмотров 3384. Ответов 17

Пробую получить поля таблицы текущей базы данных.

Нашёл пример:
SQL
1
2
3
4
5
SELECT COLUMN_NAME
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
  AND TABLE_NAME = 'tbl_Field'
ORDER BY ORDINAL_POSITION;
Выдаёт ошибку:
"Не удается найти файл ,C:\Users\admin\Documents\information_schema.mdb."

Как SQL запросом получить список полей таблицы текущей базы данных?
"Список" - я имею ввиду таблицу полей.
0
Вложения
Тип файла: zip SQLСписокПолей.zip (12.8 Кб, 3 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2019, 13:43
Ответы с готовыми решениями:

Как выдать запросом все таблицы текущей базы?
Привет , Релиб! Скажите, пожалуйста, каким запросом можно вывести список всех таблиц текущей базы...

Получить список таблиц, полей и описание полей базы данных
Добрый день! подскажите как можно получить список таблиц, полей и описание полей базы данных?

Как SQL-запросом получить список таблиц в базе?
Сабж собственно... Поиском не нашел :(

Запросом получить перечень полей таблицы или другого запроса?
Проблема - нужно динамически парсить запросы. Подскажите пожалуйста - как в Acctss одним запросом...

Как по имени таблицы получить список имен и типов полей таблицы в entity framework?
У меня есть библиотека сделанная с использованием ADO.NET. В ней для получения списка наименований...

17
MrShin
254 / 222 / 57
Регистрация: 18.06.2015
Сообщений: 477
11.02.2019, 14:12 2
Вы с MySQL Акцесс не спутали?
0
Soft17
1 / 1 / 1
Регистрация: 15.01.2017
Сообщений: 386
11.02.2019, 14:17  [ТС] 3
Цитата Сообщение от MrShin Посмотреть сообщение
Вы с MySQL Акцесс не спутали?
SQL запросом не получиться это сделать?
Надо через VBA?
0
MrShin
254 / 222 / 57
Регистрация: 18.06.2015
Сообщений: 477
11.02.2019, 14:21 4
Нет, в Акцессе нет словаря с названиями колонок, только названия объектов можно запросом вытащить
1
11.02.2019, 14:21
VinniPuh
6525 / 3828 / 415
Регистрация: 27.03.2013
Сообщений: 14,082
11.02.2019, 14:33 5
Цитата Сообщение от MrShin Посмотреть сообщение
...Нет, в Акцессе нет словаря с названиями колонок...
А в свойстве - Тип источника строк у поля со списком, есть штучка - Список полей
Или я как обычно усё попутал?
1
VinniPuh
6525 / 3828 / 415
Регистрация: 27.03.2013
Сообщений: 14,082
11.02.2019, 14:36 6
Лучший ответ Сообщение было отмечено Soft17 как решение

Решение

Даже на картинке, невооруженным взглядом видно.
1
Миниатюры
Как SQL запросом получить список полей таблицы текущей базы данных?  
Eugene-LS
3914 / 2263 / 429
Регистрация: 05.10.2016
Сообщений: 6,307
11.02.2019, 14:38 7
Лучший ответ Сообщение было отмечено Soft17 как решение

Решение

Цитата Сообщение от Soft17 Посмотреть сообщение
Как SQL запросом получить список полей таблицы текущей базы данных?
Может это сгодиться?

Вывод в Immediate Window списка полей таблицы
Использование:
Просто напечатайте в Immediate Window (Ctrl + G) esTableFieldsPrint "ИМЯ_ТАБЛИЦЫ"
или:
esTableFieldsPrint "ИМЯ_ТАБЛИЦЫ", True

Код взят с моего сайта.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Public Sub esTableFieldsPrint(sTableName As String, Optional bForRST As Boolean = False)
'es - 15.11.2012 LE: 06.09.2018
' Выводит в Immediate Window (Ctrl + G) список полей указанной в аргументе таблицы (с номерами)
' Если второй аргумент поставить = True (-1) напечатает заготовку для работы DAO.RecordSet
'--------------------------------------------------------------------
'Примеры эксплуотации -  ... Показать Immediate Window (Ctrl + G)
'   esTableFieldsPrint "Обучающиеся", True
'   esTableFieldsPrint "atp0ALIENS"
'   esTableFieldsPrint "atp0SERVICE"
'--------------------------------------------------------------------
Dim dbs As DAO.Database
Dim objField As DAO.Field
Dim sTab As String
Dim s As String
Dim iNo%
'--------------------------------------------------------------------
On Error GoTo esTableFieldsPrint_Err
    Set dbs = CurrentDb
    If bForRST = False Then 'Просто вывод полей
        s = "Таблица: " & sTableName & " - содержит поля:" & vbCrLf
        s = s & String(70, "-") & vbCrLf
        For Each objField In dbs.TableDefs(sTableName).Fields
            iNo = iNo + 1
            s = s & Format(iNo, "000") & " : " & objField.Name & vbCrLf
        Next
    Else  'Вывод полей в заготовку под RecordSet
        s = String(70, "-") & vbCrLf
        s = s & "Dim rst as DAO.RecordSet" & vbCrLf
        s = s & "Dim sSQL as String" & vbCrLf
        s = s & vbTab & "sSQL = ""SELECT * FROM " & sTableName & " WHERE " & dbs.TableDefs(sTableName).Fields(0).Name & " = 0""" & vbCrLf
        s = s & vbTab & "Set rst = CurrentDb.OpenRecordset(sSQL, dbOpenDynaset)" & vbCrLf
        s = s & vbTab & "'Set rst = CurrentDb.OpenRecordset(sSQL, dbOpenSnapshot)  'Только просмотр" & vbCrLf
        s = s & vbTab & "With rst" & vbCrLf
        s = s & vbTab & vbTab & "'.AddNew '.Edit" & vbCrLf
        
        sTab = vbTab & vbTab & vbTab
        For Each objField In dbs.TableDefs(sTableName).Fields
            s = s & sTab & "'!" & objField.Name & " = ""n/d!""" & vbCrLf
        Next
        s = s & vbTab & vbTab & "'.Update" & vbCrLf
        s = s & vbTab & "End With" & vbCrLf
        s = s & vbTab & vbCrLf
        s = s & vbTab & "On Error Resume Next" & vbCrLf
        s = s & vbTab & "rst.Close" & vbCrLf
        s = s & vbTab & "Set rst = Nothing" & vbCrLf
    End If
    Debug.Print s
 
esTableFieldsPrint_Bye:
    On Error Resume Next
    dbs.Close
    Exit Sub
 
esTableFieldsPrint_Err:
    MsgBox "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in procedure esTableFieldsPrint", vbCritical, "Error!"
    Resume esTableFieldsPrint_Bye
End Sub
1
MrShin
254 / 222 / 57
Регистрация: 18.06.2015
Сообщений: 477
11.02.2019, 14:43 8
Цитата Сообщение от VinniPuh Посмотреть сообщение
есть штучка - Список полей
Список-то есть, а вот таблицы-словаря типа MSysObjects - нет
0
VinniPuh
6525 / 3828 / 415
Регистрация: 27.03.2013
Сообщений: 14,082
11.02.2019, 14:52 9
Цитата Сообщение от MrShin Посмотреть сообщение
...а вот таблицы-словаря типа MSysObjects - нет...
Надо по сусекам порыться.
Точно уж и не помню в где и про что я, в творческом экстазе чего то задумывал, но кажется - mobile мне чего то делал подобное.
Даст Бог памяти - найду.
0
Eugene-LS
3914 / 2263 / 429
Регистрация: 05.10.2016
Сообщений: 6,307
11.02.2019, 14:59 10
Цитата Сообщение от VinniPuh Посмотреть сообщение
Надо по сусекам порыться.
Вы про что то подобное? - не понимаю ...
Привет Викторыч!

про табличку: "MSysObjects"
Visual Basic
1
2
3
4
'delete old temp table if it exists
        If Nz(DCount("[Name]", "MSysObjects", "[Name]='tblTEMP_Cross'"), 0) <> 0 Then
            DoCmd.DeleteObject acTable, "tblTEMP_Cross"
        End If
2
VinniPuh
6525 / 3828 / 415
Регистрация: 27.03.2013
Сообщений: 14,082
11.02.2019, 15:04 11
Спасибо, но пока не помню,что была за задумка и для чего я куралесил.
Да и ТСу бы не помешало бы рассказать в общих чертах, для чего ему это.
Может всё совсем по другому можно легче и быстрее, и не так наворочено.
1
Eugene-LS
3914 / 2263 / 429
Регистрация: 05.10.2016
Сообщений: 6,307
11.02.2019, 15:11 12
Цитата Сообщение от VinniPuh Посмотреть сообщение
Может всё совсем по другому можно легче и быстрее, и не так наворочено.
В примере выше идёт удаление таблички tblTEMP_Cross
Еслт существует
И....
Думаю, лучше в MSysObjects не лезть без особой на то надобности.
Табличка описания объектыв БД
2
Soft17
1 / 1 / 1
Регистрация: 15.01.2017
Сообщений: 386
11.02.2019, 17:06  [ТС] 13
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Может это сгодиться?
Это вариант я нашёл... держу в уме...
Я пока не вникал в код...

Если код выводит поля таблицы, то как это вывести в отдельную таблицу и каждой строке присвоить "id"?
В строке должно быть "имя поля" таблицы указанной ранее.

Цитата Сообщение от VinniPuh Посмотреть сообщение
Да и ТСу бы не помешало бы рассказать в общих чертах, для чего ему это.
Может всё совсем по другому можно легче и быстрее, и не так наворочено.
В результате мне нужна таблица(запрос) строки в которой будут содержать имена полей другой таблицы.
0
Eugene-LS
3914 / 2263 / 429
Регистрация: 05.10.2016
Сообщений: 6,307
11.02.2019, 17:27 14
Лучший ответ Сообщение было отмечено alvk как решение

Решение

Цитата Сообщение от Soft17 Посмотреть сообщение
В результате мне нужна таблица(запрос) строки в которой будут содержать имена полей другой таблицы.
Так аналогичный код, но пишем не в Immediate Window, а в заданный RecordSet - что и с этим помощь нужна?
То есть, приготовить, положить на тарелку, порезать ножиком, воткнуть вилку, засунуть в рот, и проглотить - и всё за вас???
А может всё таки сами попробуете?

Добавлено через 11 минут
Цитата Сообщение от Soft17 Посмотреть сообщение
Если код выводит поля таблицы, то как это вывести в отдельную таблицу и каждой строке присвоить "id"?
Так это (по уму) должна быть подчинённая табличка с именами полей (один ко многим от основной), ну и опять не сильно сложно - просто поля перенаправляем в подчинённый RecordSet, а ID - если ручной, то по счётчику в коде ...
Что не понятно?
1
Eugene-LS
3914 / 2263 / 429
Регистрация: 05.10.2016
Сообщений: 6,307
11.02.2019, 17:33 15
Soft17, и ыссшо - где тут написано "Шпаргалка для ленивых студентов"?
0
Миниатюры
Как SQL запросом получить список полей таблицы текущей базы данных?  
Панург
Мы один, давай на "ты"
1738 / 776 / 168
Регистрация: 16.06.2016
Сообщений: 1,599
11.02.2019, 18:44 16
Soft17, OpenSchema
1
MrShin
254 / 222 / 57
Регистрация: 18.06.2015
Сообщений: 477
12.02.2019, 09:33 17
Цитата Сообщение от Soft17 Посмотреть сообщение
В результате мне нужна таблица(запрос) строки в которой будут содержать имена полей другой таблицы.
В принципе можно и виде запроса сделать. Создаем таблицу с последовательными номерами от 0 до 255 или запрос Digits, который также возвращает эти числа и делаем на базе этого запроса/талицы новый запрос, где в вычисляемом поле через функцию читаем имя поля по числовому индексу поля. Все просто, только не совсем понятно, зачем такой запрос нужен. Может мы более оптимальное решение предложим если расскажете подробнее про конечную цель?
0
VinniPuh
6525 / 3828 / 415
Регистрация: 27.03.2013
Сообщений: 14,082
12.02.2019, 09:40 18
Цитата Сообщение от MrShin Посмотреть сообщение
...Может мы более оптимальное решение предложим если расскажете подробнее про конечную цель?...
Это похоже большой секрет.
Я уже так спрашивал.
0
12.02.2019, 09:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2019, 09:40

Блокировка базы SQL запросом (Дравер базы данных не может заблокировать таблицу ХХХХХ)
Подскажите, пожалуйста возможные решения: Есть базы в *.DBF файлах, создан System DSN (Драйвер...

Как вывести с помощью sql запроса список полей таблицы?
как вывести с помощью sql запроса список полей таблицы в MSSQL ?? типа desc оракле и в...

Получить список полей определённой базы
Доброго времени суток. Встала задачка такая: Зная ИМЯ бд, получить список всех полей, которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru