Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
1 / 1 / 0
Регистрация: 28.02.2014
Сообщений: 43
.NET 4.x

Возможно ли программно создать новую таблицу в файле БД Access?

01.04.2014, 03:00. Показов 4690. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно и вся суть вопроса в заголовке.
Можно ли из vb.net создать в файле .accdb новую таблицу с такими то полями?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2014, 03:00
Ответы с готовыми решениями:

Как из VBA создать новую таблицу в Access?
ка из VBA создать новую таблицу в Access? Спасибо!!!

Как создать таблицу в бд access программно?
Здравствуйте! Подскажите пожалуйста, как создать таблицу в бд access программно?

Создать новую таблицу в Access'e средствами Delphi и SQL
Всем здравствуйте! Итак, сначало описание. Есть форма с полями (Edit'ами) в которые я заношу названия моих столбцов для новой таблицы. ...

14
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
01.04.2014, 06:08
Как-то так
SQL
1
CREATE TABLE Сотрудники (Фамилия STRING, Отдел INTEGER)
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
01.04.2014, 08:02
Только форматы полей пишутся не VB.Net а SQL
Например
SQL
1
CREATE TABLE Сотрудники (Фамилия VCHAR 255, Отдел INT,  Цена FLOAT)
1
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
01.04.2014, 08:24
Миниатюры
Возможно ли программно создать новую таблицу в файле БД Access?  
0
1 / 1 / 0
Регистрация: 28.02.2014
Сообщений: 43
01.04.2014, 12:18  [ТС]
Спасибо! А как проверить есть ли такая-то таблица в БД ?
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
01.04.2014, 12:37
rempaul, ну вот прямо грубо: попытаться сделать выборку, если не существует - будет исключение.

А помягче, но больше возни - получить список всех таблиц из базы. Я где-то код выкладывал
0
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
01.04.2014, 13:46
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

VB.NET
1
2
3
4
5
6
7
8
9
Dim alTBL As New DataTable
            Dim i As Integer = 0
            cn.Open()
            alTBL = cn.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
            cn.Close()
            Me.tscbxTables.Items.Clear()
            For i = 0 To alTBL.Rows.Count - 1
                Me.tscbxTables.Items.Add(alTBL.Rows(i).Item("TABLE_NAME").ToString)
            Next
cn - это объект oledbconnection.
Итого мы имеем таблицу (alTBL) с информацией о таблицах в БД. Ну а в цикле просто идет заполнение списка именами существующих в БД таблиц.
0
Заблокирован
01.04.2014, 13:55
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

получить список всех таблиц из базы
VB.NET
1
2
3
4
5
6
7
8
9
10
conn = New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=db1.mdb")
 
conn.Open()
 
ComboBox1.Items.Clear
For Each dataRow As DataRow In conn.GetSchema("Tables").Rows
    If dataRow.Item("TABLE_TYPE").ToString = "TABLE" Then
        ComboBox1.Items.Add(dataRow.Item("TABLE_NAME").ToString)
    End If
Next
1
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
01.04.2014, 20:12
Тип данных Jet

TEXT Синонимы: TEXT, TEXT(n), CHAR, CHAR(n), ALPHANUMERIC, ALPHANUMERIC(n), STRING, STRING(n), VARCHAR, VARCHAR(n), NTEXT(n), NCHAR, NCHAR(n), CHAR VARYING, CHAR VARYING(n), CHARACTER VARYING, CHARACTER VARYING(n), NATIONAL CHAR, NATIONAL CHAR(n), NATIONAL CHARACTER, NATIONAL CHARACTER(n), NATIONAL CHAR VARYING, NATIONAL CHAR VARYING(n), NATIONAL CHARACTER VARYING, NATIONAL CHARACTER VARYING(n)

MEMO Синонимы: LONGTEXT, LONGCHAR, NOTE, NTEXT

TINYINT Синонимы:INTEGER1, BYTE /1 byte

SMALLINT Синонимы:SHORT, INTEGER2 /2 bytes

INTEGER Синонимы: LONG, INT, INTEGER4/4 bytes

REAL Синонимы: SINGLE, FLOAT4, IEEESINGLE/4 bytes

FLOAT Синонимы: DOUBLE, FLOAT8, IEEEDOUBLE, NUMBER/8 bytes

DECIMAL Синонимы:NUMERIC, DEC/17 bytes

Но всё таки лучше писать в формате SQL, потому как проще будет в будущем, когда придется мигрировать с Access
0
1 / 1 / 0
Регистрация: 28.02.2014
Сообщений: 43
02.04.2014, 13:43  [ТС]
в вашем примере получается, что список таблиц выводится в ComboBox, а как его вывести например в DataTable, что б потом сравнить есть ли такая таблица в БД или нет?
0
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
02.04.2014, 13:53
Цитата Сообщение от rempaul Посмотреть сообщение
как его вывести например в DataTable
Вот это: conn.GetSchema("Tables") возвращает объект DataTable (http://msdn.microsoft.com/ru-r... .110).aspx)
0
1 / 1 / 0
Регистрация: 28.02.2014
Сообщений: 43
02.04.2014, 14:18  [ТС]
VB.NET
1
If dataRow.Item("TABLE_TYPE").ToString = "TABLE" Then
т.е здесь идет проверка на "являются ли данные в строке типом "TABLE"?
тогда как проверить само имя таблицы, если оно "Таблица1" то....
0
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
02.04.2014, 15:50
а может самому посмотреть, что там возвращает conn.GetSchema("Tables") ? Какие данные мы получаем, их структура...
0
Заблокирован
02.04.2014, 16:35
rempaul,
GetSchema() возвращает таблицу DataTable.
В ней несколько столбцов, в числе которых TABLE_NAME и TABLE_TYPE.
В таблице несколько строк.
В ячейках столбца TABLE_NAME находятся имена таблиц.
Но помимо тех таблиц, которые содержат собственно данные, есть ещё несколько зарезервированных таблиц, в которых хранятся параметры базы данных.
И у них в ячейке TABLE_TYPE написано не TABLE, а что-то другое.

Увидеть это своими глазами можно с помощью DataGridView
VB.NET
1
dataGridView1.DataSource = conn.GetSchema("Tables")
3
1 / 1 / 0
Регистрация: 28.02.2014
Сообщений: 43
02.04.2014, 21:17  [ТС]
написал так:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
For i = 1 To counter Step 1
            add_num = add_num + 1
            add_num = CStr(add_num)
            Dim full_name As String = nm & add_num
            Conn.Open()
 
            For Each dataRow As DataRow In Conn.GetSchema("Tables").Rows
                If dataRow.Item("TABLE_NAME").ToString = full_name Then
                    update_table()
                    Exit For
                Else
                    Continue For
                End If
            Next
            '========  Если нет то создаем нову таблицу =============
            For Each dataRow As DataRow In Conn.GetSchema("Tables").Rows
                If dataRow.Item("TABLE_NAME").ToString <> full_name Then
                    create_table()
                End If
                Exit For
            Next
            Conn.Close()
            add_num = CDbl(add_num)
        Next
если имя не найдено n-ое количество раз создаются новые таблицы, если найдено то выполняется обновление, вот только там где должно быть обновление программа почему то переходит к созданию таблицы и как следствие ругается на то, что такая таблица уже существует

что не так с условием?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.04.2014, 21:17
Помогаю со студенческими работами здесь

Возможно ли сделать программно новую Web-форму VB.NET?
Возможно ли сделать программно новую Web-форму VB.NET(интерестно куда пропала моя тема и почему? С уважением lippi)

Как в RichTextBox программно создать новую строку
Простите за столь примитивный вопрос, но как в RichTextBox программно создать новую строку?:mda:

Как программно создать новую базу данных?
На компе установлен MySQL. Создаю базу (из консольного окна MySQL), подключаюсь к ней из JAVA, все прекрасно работает, красота. Но вот...

Как добавить новую таблицу в access через delphi
Как можно добавить/создать новую таблицу в Access через delpi. В зависимости от выбранного пункта одной таблицы, в DbGrid открывается...

Программно создать новую строку с ключевым полем в таблице MS SQL
Всем здравствуйте! Вопрос: Как программно создать новую строку с Key (номером) в таблице ms sql в Visual Basic .NET Нуждаюсь в помощи...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru