Ошибка синтаксиса в инструкции create table access

Your DDL statement, with the field type substitutions @Mureinik suggested, works in Access 2010, but only if you execute it from ADO:

Create table Customers (
    customerid              numeric(10) PRIMARY KEY,
    First_name              varchar(100),
    last_name               varchar(100), 
    house_number            numeric(10),
    street                  numeric(10),  
    postcode                numeric(5),
    home_phone_number       numeric(10),
    mobile_phone_number     numeric(10),  
    email_address           varchar(100),
    DOB                     datetime
    ); 

I loaded the statement into a string variable, strCreate, and executed it like this …

CurrentProject.Connection.Execute strCreate

CurrentProject.Connection is an ADO object.

That statement will throw a syntax error when executed via DAO …

CurrentDb.Execute strCreate  ' <-- "Syntax error"

If you’re executing the statement from the Access query designer, that also uses DAO and the statement will fail.

Although the statement executed successfully from ADO, I’m unsure the resulting data types for those Numeric() fields are what you actually want. I’m not accustomed to seeing Decimal field type used for a primary key. More often, people choose AutoNumber, which is based on Long Integer. (But I’m not saying Decimal is a bad choice if that’s what you really want.)

Customers table in Table Design view


Рейтинг 4.72/29:

0 / 0 / 0

Регистрация: 22.12.2020

Сообщений: 7

16.05.2021, 01:18. Показов 6115. Ответов 11


Здравствуйте! Помогите, пожалуйста. Нужна команда на SQL для создания четырех связанных таблиц в MS Access. Я пишу код, но при попытке сохранить его выскакивает сообщение «Ошибка синтаксиса в инструкции CREATE TABLE». Уже перерыла все методички, но решения проблемы так и не нашла. По методичке пишу правильно, но запрос упорно не хочет сохраняться. Должна получиться вот такая схема данных (см. вложение).
Если создавать запрос на каждую таблицу отдельно — всё работает, только связи не создаются. Мне нужно, чтобы таблицы создавались вместе со связями. Возможно ли это реализовать?

Кликните здесь для просмотра всего текста



0



IT_Exp

Эксперт

34794 / 4073 / 2104

Регистрация: 17.06.2006

Сообщений: 32,602

Блог

16.05.2021, 01:18

11

17536 / 7288 / 1663

Регистрация: 21.06.2012

Сообщений: 13,957

16.05.2021, 01:31

Сообщение от marusa122

Возможно ли это реализовать?

Возможно. Запросы нужно запускать по отдельности, так в Аксессе делается. А связи Вы и не создавали. Для их создания нужно делать CONSTRAINT … FOREIGN KEY.



1



0 / 0 / 0

Регистрация: 22.12.2020

Сообщений: 7

16.05.2021, 01:49

 [ТС]

Поняла, спасибо. Я пыталась писать запросы на создание таблиц со связями. Во вложении пример одного такого запроса. Таблица создается, а связь — нет. Что я делаю не так?..
Схема данных та же, что и в шапке

Миниатюры

 



0



17536 / 7288 / 1663

Регистрация: 21.06.2012

Сообщений: 13,957

16.05.2021, 02:00

Выкладывайте SQL не картинками, а текстом, в тегах SQL. Нажали SQL (третья строка, 6 слева), появились и внутрь вставили текст. Ломать глаза, а потом стучать по клавишам нет никакого желания.



1



marusa122

0 / 0 / 0

Регистрация: 22.12.2020

Сообщений: 7

16.05.2021, 02:06

 [ТС]

Извините, я просто не знала, как это делать. Добавила.

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE Студенты
(
[Код Студента] TEXT(6) NOT NULL CONSTRAINT PK_КодСтудента PRIMARY KEY UNIQUE,
[Фамилия и инициалы] TEXT(25),
[Телефон] TEXT(14),
[Пол] TEXT(1),
[Дата рождения] DATE,
[Университет] TEXT(4),
[Группа] TEXT(10),
[Средний балл аттестата] INT,
FOREIGN KEY ([Группа]) REFERENCES Группы([Код группы]),
FOREIGN KEY ([Университет]) REFERENCES Университеты([Код университета])
);



0



ltv_1953

17536 / 7288 / 1663

Регистрация: 21.06.2012

Сообщений: 13,957

16.05.2021, 02:18

Сообщение было отмечено marusa122 как решение

Решение

А CONSTRAINT где? И, естественно, таблицы Группы и Университеты должны быть созданы до выполнения этого запроса.

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE Студенты
(
[Код Студента] TEXT(6) NOT NULL CONSTRAINT PK_КодСтудента PRIMARY KEY UNIQUE,
[Фамилия и инициалы] TEXT(25),
[Телефон] TEXT(14),
[Пол] TEXT(1),
[Дата рождения] DATE,
[Университет] TEXT(4),
[Группа] TEXT(10),
[Средний балл аттестата] INT,
CONSTRAINT FK_Группа FOREIGN KEY ([Группа]) REFERENCES Группы([Код группы]),
CONSTRAINT FK_Университет FOREIGN KEY ([Университет]) REFERENCES Университеты([Код университета])
);



1



marusa122

0 / 0 / 0

Регистрация: 22.12.2020

Сообщений: 7

16.05.2021, 02:44

 [ТС]

Спасибо вам большое.
И еще такой вопрос: можно ли в таких запросах задавать сразу маску ввода и правило проверки? Или это делается только вручную уже после создания таблицы?
Например, вот это поле:

SQL
1
Пол] TEXT(1),

В режиме Конструктора (в уже созданной таблице) приходится вручную задавать маску ввода >L и правило проверки — «М» Or «Ж» . Возможно ли как-то дополнить запрос, чтобы при создании таблицы эти параметры устанавливались автоматически?



0



17536 / 7288 / 1663

Регистрация: 21.06.2012

Сообщений: 13,957

16.05.2021, 03:41

Сообщение от marusa122

маску ввода >

Это не маска ввода, а ограничение. Читайте документацию CONSTRAINT
… CHECK. Или примеры на форуме посмотрите (поиск в разделе по CONSTRAINT).



1



0 / 0 / 0

Регистрация: 22.12.2020

Сообщений: 7

16.05.2021, 03:51

 [ТС]

Нет-нет, там именно маска ввода (она так и называется в Конструкторе)
https://support.microsoft.com/… u-ru&ad=ru
> означает, что все последующие знаки будут переведены в верхний регистр.
L — пользователь должен ввести букву.
Про CHECK посмотрела, вопрос о Правиле проверки снят. Но куда вставлять и как оформлять в запросе маску ввода?..



0



17536 / 7288 / 1663

Регистрация: 21.06.2012

Сообщений: 13,957

16.05.2021, 04:09

Сообщение от marusa122

Но куда вставлять и как оформлять в запросе маску ввода?

Никуда. Нет такой возможности, если не конструкторе вручную, то только в VB, в DAO есть свойства полей таблицы. И все маски и т.п. (прочитал Вашу, как ограничение >1) лучше не делайте в таблицах, а только в формах. Вручную в таблицы вводить — дурной тон.



1



0 / 0 / 0

Регистрация: 22.12.2020

Сообщений: 7

16.05.2021, 04:18

 [ТС]

Большое вам спасибо))



0



17536 / 7288 / 1663

Регистрация: 21.06.2012

Сообщений: 13,957

16.05.2021, 04:42

Сообщение от marusa122

Большое вам спасибо

Да не за что. Все бы ТС так точно формулировали вопросы, воспринимали ответы, … .



1



BasicMan

Эксперт

29316 / 5623 / 2384

Регистрация: 17.02.2009

Сообщений: 30,364

Блог

16.05.2021, 04:42

Помогаю со студенческими работами здесь

access SQL, инструкция Create Table, ограничение на вводимые значения
Пусть создается запросом таблица.

create table таблица
(оценка integer );

как на поле оценка наложить логическое ограничение,…

MS Access — как же изничтожить в запросах ошибку синтаксиса CONSTRAINT и ошибку инструкции CREATE TABLE?
Доброго времени суток, люди добрые!
Возникла проблема на ровном месте — при попытке выполнить запросы для создания таблиц 2 и 3 в…

CREATE ANY TABLE
Вообщем, есть такая привилегия CREATE ANY TABLE. Если sys предоставит ее некоторому пользователю u1, то u1 может создавать таблицы в любой…

Ошибка CREATE TABLE
Нужна помощь!
Выдаёт ошибку в предпоследней строке…(tinyint), не пойму в чем дело
CREATE TABLE laptop (
code int NOT NULL,
model…

SHOW CREATE TABLE
При выполнении запроса SHOW CREATE TABLE `какая-то таблица`, результат мне возвращает 2 поля — Table и Create Table.
Как сделать так,…

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

Или воспользуйтесь поиском по форуму:

12

Новые блоги и статьи

Все статьи  

Все блоги / 

JWT аутентификация в Java

Javaican 21.04.2025

JWT (JSON Web Token) представляет собой открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Эта информация. . .

Спринты Agile: Планирование, выполнение, ревью и ретроспектива

EggHead 21.04.2025

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

Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров

Programma_Boinc 21.04.2025

Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров.

3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .

Система статов в Unity

GameUnited 20.04.2025

Статы — фундаментальный элемент игрового дизайна, который определяет характеристики персонажей, предметов и других объектов в игровом мире. Будь то показатель силы в RPG, скорость передвижения в. . .

Статические свойства и методы в TypeScript

run.dev 20.04.2025

TypeScript прочно занял своё место в системе современной веб-разработки. Этот строго типизированный язык программирования не просто расширяет возможности JavaScript — он делает разработку более. . .

Batch Transform и Batch Gizmo Drawing API в Unity

GameUnited 20.04.2025

В мире разработки игр и приложений на Unity производительность всегда была критическим фактором успеха. Создатели игр постоянно балансируют между визуальной привлекательностью и плавностью работы. . .

Звук в Unity: Рандомизация с Audio Random Container

GameUnited 20.04.2025

В современных играх звуковое оформление часто становится элементом, который либо полностью погружает игрока в виртуальный мир, либо разрушает атмосферу за считанные минуты. Представьте: вы исследуете. . .

Максимальная производительность C#: Советы, тестирование и заключение

stackOverflow 20.04.2025

Погружение в мир микрооптимизаций C# открывает перед разработчиком целый арсенал мощных техник. Но как определить, где и когда их применять? Ответ начинается с точных измерений и профилирования.

. . .

Максимальная производительность C#: Предсказание ветвлений

stackOverflow 20.04.2025

Третий ключевой аспект низкоуровневой оптимизации — предсказание ветвлений. Эта тема менее известна среди разработчиков, но её влияние на производительность может быть колоссальным. Чтобы понять. . .

Максимальная производительность C#: Векторизация (SIMD)

stackOverflow 20.04.2025

Помимо работы с кэшем, другим ключевым аспектом низкоуровневой оптимизации является векторизация вычислений. SIMD (Single Instruction, Multiple Data) позволяет обрабатывать несколько элементов данных. . .

Наверх


Проблема с типами данных в Access

От:

Garbager

 
Дата:  07.09.06 10:11
Оценка:

У меня следующая проблема. Подключаюсь к базе данных Acces через ODBC. Средствами ODBC пытаюсь в БД через запрос создать таблицу. Почему-то возникает ошибка при создании таблицы, содержащей поле типа TINYINT. Например:
CREATE TABLE A (ID INTEGER PRIMARY KEY, N TINYINT)
С целыми типами SMALLINT и INTEGER прокатывает, а с TINYINT — нет. Почему?


Re: Проблема с типами данных в Access

От:

Garbager

 
Дата:  07.09.06 12:00
Оценка:

Еще вопрос: где можно скачать описание стандартов SQL92 и SQL99. Нигде не могу найти…


Re: Проблема с типами данных в Access

От:

wildwind

Россия

 
Дата:  07.09.06 12:31
Оценка:

Здравствуйте, Garbager, Вы писали:

G>CREATE TABLE A (ID INTEGER PRIMARY KEY, N TINYINT)

G> С целыми типами SMALLINT и INTEGER прокатывает, а с TINYINT — нет. Почему?

Попробуй синонимы — INTEGER1, BYTE. Попробуй также через ADO — может быть драйвер не пропускает неизвестный ему тип.


Re[2]: Проблема с типами данных в Access

От: Аноним

 
Дата:  11.09.06 06:09
Оценка:

Здравствуйте, wildwind, Вы писали:
W>Попробуй синонимы — INTEGER1, BYTE. Попробуй также через ADO — может быть драйвер не пропускает неизвестный ему тип.

Синонимы мне использовать нельзя, необходимо придерживаться SQL92.


Re: Проблема с типами данных в Access

От:

Garbager

 
Дата:  11.09.06 06:24
Оценка:

Еще один косяк: не прокатывают запросы на создание таблиц с определением полей типа DECIMAL и NUMERIC, например:
CREATE TABLE A (
ID INTEGER NOT NULL,
N1 NUMERIC(5,1) NOT NULL,

PRIMARY KEY (ID)
)

или

CREATE TABLE A (
ID INTEGER NOT NULL,
N1 DECIMAL(5,1) NOT NULL,

PRIMARY KEY (ID)
)

В первом случае сообщение драйвера: «Ошибка синтаксиса в инструкции CREATE TABLE».
Во втором случае сообщение драйвера: «Ошибка синтаксиса при определении поля».


Re[2]: Проблема с типами данных в Access

От:

Бенедикт

 
Дата:  11.09.06 07:30
Оценка:

Здравствуйте, Garbager, Вы писали:

G>Еще один косяк: не прокатывают запросы на создание таблиц с определением полей типа DECIMAL и NUMERIC, например:

G>CREATE TABLE A (
G> ID INTEGER NOT NULL,
G> N1 NUMERIC(5,1) NOT NULL,

G> PRIMARY KEY (ID)

G>)

G>или


G>CREATE TABLE A (

G> ID INTEGER NOT NULL,
G> N1 DECIMAL(5,1) NOT NULL,

G> PRIMARY KEY (ID)

G>)

G>В первом случае сообщение драйвера: «Ошибка синтаксиса в инструкции CREATE TABLE».

G>Во втором случае сообщение драйвера: «Ошибка синтаксиса при определении поля».

Это не косяк. Вот

обсуждение

Автор: Callisto
Дата: 01.06.06

.


Re: Проблема с типами данных в Access

От:

ZAMUNDA

Земля

для жалоб и предложений
Дата:  11.09.06 08:29
Оценка:

Здравствуйте, Garbager, Вы писали:

G> С целыми типами SMALLINT и INTEGER прокатывает, а с TINYINT — нет. Почему?

Посмотри Microsoft Access Data Types и там Limitations ещё есть.

Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков


Re[3]: Проблема с типами данных в Access

От: Аноним

 
Дата:  12.09.06 08:16
Оценка:


Re[2]: Проблема с типами данных в Access

От:

Garbager

 
Дата:  12.09.06 08:24
Оценка:

ZAM>Посмотри Microsoft Access Data Types и там Limitations ещё есть.

Спасибо!

  • Переместить
  • Удалить
  • Выделить ветку

Пока на собственное сообщение не было ответов, его можно удалить.

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up


Форум программистов Vingrad

Модераторы: Akina

Поиск:

 ошибка синтаксиса CREATE TABLE 

   

Опции темы

CLIPSA
Дата 7.11.2006, 21:29 (ссылка)
| (нет голосов)
 Загрузка …

Шустрый

Профиль
Группа: Участник
Сообщений: 126
Регистрация: 6.10.2006

Репутация: нет
Всего: 2

Использую  Access  + ADO.
Вот код:

Код

    ADOQuery1->SQL->Clear();                 
    ADOQuery1->SQL->Add("CREATE TABLE table1(");
    ADOQuery1->SQL->Add("amount      Long DEFAULT 0,");
    ADOQuery1->SQL->Add("cod         Text(50) WITH COMP,");
    ADOQuery1->SQL->Add("name        Text(50) WITH COMP,");
    ADOQuery1->SQL->Add("nds         Long DEFAULT 0,");
    ADOQuery1->SQL->Add("total_nds   Long DEFAULT 0,");
    ADOQuery1->SQL->Add("[Код]       AutoIncrement,");
    ADOQuery1->SQL->Add("CONSTRAINT PrimaryKey PRIMARY KEY ([Код])");
    ADOQuery1->SQL->Add(");");
    ADOQuery1->ExecSQL();

Пишит ошибка синтаксиса CREATE TABLE. Немогу понять где эта ошибка?

 
sergejzr
Дата 7.11.2006, 21:34 (ссылка)
| (нет голосов)
 Загрузка …

Un salsero

Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360

Наверное здесь 

Код

ADOQuery1->SQL->Add("[Код]       AutoIncrement,");

А вообще, конечно интересно, что за база данных, к которй обращаешься.

———————

Me.
FB.
LinkedIn.
ORCID.
YT.

 
CLIPSA
Дата 7.11.2006, 21:38 (ссылка)
| (нет голосов)
 Загрузка …

Шустрый

Профиль
Группа: Участник
Сообщений: 126
Регистрация: 6.10.2006

Репутация: нет
Всего: 2

Access  

 
sergejzr
Дата 7.11.2006, 21:40 (ссылка)
| (нет голосов)
 Загрузка …

Un salsero

Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360

Тогда туда и надо!

Цитата
Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.

переношу.

———————

Me.
FB.
LinkedIn.
ORCID.
YT.

 
Akina
Дата 7.11.2006, 22:21 (ссылка)
| (нет голосов)
 Загрузка …

Советчик

Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454

В MS Access вызовите справку, ее оглавление, раскройте справочник по MS Jet SQL и посмотрите синтаксис оператора CREATE TABLE. Кроме того, как указано выше, все имена таблиц и полей в кириллице обрамляйте квадратными скобками. Для проверки правильности построенного запроса попробуйте его занести в построитель запросов MS Access (вид — режим SQL) и выполнить — это даст возможность его отладить.

———————

 О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.

 
CLIPSA
Дата 7.11.2006, 22:44 (ссылка)
| (нет голосов)
 Загрузка …

Шустрый

Профиль
Группа: Участник
Сообщений: 126
Регистрация: 6.10.2006

Репутация: нет
Всего: 2

Ничего не получается   

 
Golden Hands
Дата 8.11.2006, 00:34 (ссылка)
| (нет голосов)
 Загрузка …

Золотой

Профиль
Группа: Участник Клуба
Сообщений: 2023
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: нет
Всего: 83

Проверил в Delphi — запрос выполняется, таблица создается.

———————

Мы обречены… но только на победу!
Настанет день, и мы построим новый дом.
Внесем в него тепло, что сохранить сумели,
И воскресим все то, что в нас когда-то умерло… © Тень Света

 
Akina
Дата 8.11.2006, 00:36 (ссылка)
| (нет голосов)
 Загрузка …

Советчик

Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454

Еще бы… а ведь уже один раз предлагал я почитать таки справку… 

Не знает MS Jet SQL про какой-то там DEFAULT. Ну вот не знает, и все тут! а ты его, беднягу… и CONSTRAINT он бы хотел видеть написанным совсем по-другому… и еще пара ляпчиков (кажется — я-то за тебя справку читать не буду, а точно не помню)…

Добавлено @ 00:40 
Golden Hands, вот именно в такой форме — и отрабатывает-создается? и структура получается такая как описано? знать, какая-то валидующая прослойка срабатывает… 

———————

 О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.

 
Golden Hands
Дата 8.11.2006, 01:57 (ссылка)
| (нет голосов)
 Загрузка …

Золотой

Профиль
Группа: Участник Клуба
Сообщений: 2023
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: нет
Всего: 83

В самом Access этот запрос не прошел, пока не убрал DEFAULT и WITH COMP.

———————

Мы обречены… но только на победу!
Настанет день, и мы построим новый дом.
Внесем в него тепло, что сохранить сумели,
И воскресим все то, что в нас когда-то умерло… © Тень Света

 
CLIPSA
Дата 8.11.2006, 17:33 (ссылка)
| (нет голосов)
 Загрузка …

Шустрый

Профиль
Группа: Участник
Сообщений: 126
Регистрация: 6.10.2006

Репутация: нет
Всего: 2

Гадость какая этот MS Jet SQL. 
Убрала DEFAULT и WITH COMP. Теперь работает.
Только я так и не смогла понять как же создаёт таблицы приложение офис акцесс? Я полагаю оно тоже использует SQL в котром  DEFAULT и WITH COMP прокатывает чтоли.  Ничего непойму……………….

Это сообщение отредактировал(а) CLIPSA — 8.11.2006, 17:35

 
Akina
Дата 8.11.2006, 18:35 (ссылка)
| (нет голосов)
 Загрузка …

Советчик

Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454

Сам Аксесс работает через коллекцию TableDefs. Вот уж где раздолье для творчества.

———————

 О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.

 
bopoha
Дата 10.11.2006, 02:33 (ссылка)
| (нет голосов)
 Загрузка …

Эксперт

Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21

На самом деле в Access 2003, если записать так DEFAULT «0», то работает. Именно как строковый тип.

———————

Как создавать приложения на MS Access

 
Правила форума «MS Access»
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс «транслит» (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Лего техник порше 911 gt3 rs инструкция
  • Собака робот с косточкой pupbo инструкция
  • Kinesiology tape инструкция по применению на лицо
  • Как оформить налоговый вычет за медицинские услуги через работодателя пошаговая инструкция
  • Метрид 100 внутривенно инструкция для чего