Как исправить конец оператора при попытке вставить несколько значений в SQL? - PullRequest
2 голосов
/ 29 мая 2020
• 1000 *
Create Table Pet_Owner (
OwnerID autoincrement Null,
OwnerLastName Char(30) Not Null,
OwnerFirstName Char(30) Not Null,
OwnerPhone Int Null,
OwnerEmail VarChar(100) Not Null Unique,
Constraint Pet_Owner_PK Primary Key(OwnerID)
);

и запрос на вставку, который у меня есть до сих пор, который я пытаюсь добавить, это

Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail) Values (
'Downs' , 'Marsha' , '555-537-8765' , 'Marsha.downs@somewhere.com') 
Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail) Values (
'James' , 'Richard' , '555-537-7654' , 'Richard.James@somewhere.com') 
Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail) Values (
'Frier' , 'Liz' , '555-537-6543' , 'Liz.Frier@somewhere.com') 
Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerEmail) Values (
'Trent', 'Miles', 'Miles.Trent@somewhere.com') ;

Когда я использую append, он говорит, что мне не хватает точки с запятой в конце первого набор значений, но если я добавлю это, он говорит, что у меня есть символы в конце моего утверждения. Если кто-нибудь может помочь мне или указать правильное направление для решения ошибки, я был бы очень признателен. Спасибо

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Ваш запрос на вставку включает 4 INSERT ... VALUES операторов. Поэтому, когда вы пытаетесь выполнить этот запрос, вы просите Access выполнить пакет операторов. Однако Access не будет выполнять пакетные операторы. Вы должны выполнять их отдельно.

И когда вы выполняете их по одному, вы обнаружите еще 2 проблемы:

  1. OwnerPhone Int Null не будет принимать текстовое значение, такое как '555-537 -8765 '; Сделайте это текстовое поле вместо поля типа numeri c.

  2. Вторая инструкция вставки не включает ключевое слово INTO.

Я использовал этот оператор для создания таблицы:

Create Table Pet_Owner (
OwnerID autoincrement Primary Key,
OwnerLastName Char(30) Not Null,
OwnerFirstName Char(30) Not Null,
OwnerPhone VarChar(12) Null,
OwnerEmail VarChar(100) Not Null Unique
);

(OwnerPhone было критическим изменением. Я изменил назначение первичного ключа, просто чтобы показать вам другой метод для этого.)

Затем обработал каждый оператор вставки отдельно, загрузив его в переменную strInsert и выполнив его следующим образом:

CurrentDb.Execute strInsert, dbFailOnError

Этот подход успешно добавил 4 строки в таблицу Pet_Owner.

0 голосов
/ 29 мая 2020

Вам нужно будет начинать каждый оператор с insert into и разделять их с ;.

Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail)
Values ('Downs' , 'Marsha' , '555-537-8765' , 'Marsha.downs@somewhere.com');

Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail) 
Values ('James' , 'Richard' , '555-537-7654' , 'Richard.James@somewhere.com');

Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail)
Values ('Frier' , 'Liz' , '555-537-6543' , 'Liz.Frier@somewhere.com');

Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerEmail) 
Values ('Trent', 'Miles', 'Miles.Trent@somewhere.com');
...