Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 03.02.2013
Сообщений: 126
1

Ошибка: неправильный синтаксис около конструкции

29.04.2014, 12:46. Показов 1597. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, пишу бд в RAD XE4 столкнулся с проблемой при создание нового клиента. на SQL servere есть хранимая процедура:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
USE [Lombard]
GO
/****** Object:  StoredProcedure [dbo].[new_klient]    Script Date: 04/29/2014 16:10:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
ALTER PROCEDURE [dbo].[new_klient](@Famyli nvarchar(50), @Name nvarchar(50), @Otchestvo nvarchar(50), @god_rogd DATE, @adres nvarchar(50), @nomer nvarchar(50), @sem_pol nvarchar(50), @dannie_pasporta nvarchar(50))
AS
    BEGIN
     INSERT INTO klient VALUES ((SELECT ISNULL(MAX(id_klienta)+1,1) FROM klient), @Famyli, @Name, @Otchestvo, @god_rogd, @adres, @nomer, @sem_pol, @dannie_pasporta)
    END
Относящаяся к таблице клиенты (Рис.1.). В программе пытаюсь обратиться следующим образом:
C++
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
 String  K_Famyli, K_Name, K_Otchestvo, K_adres, K_nomer, K_sem_pol, K_dannie_pasporta;
 TDateTime K_god_rogd;
 if((Edit1->Text.Length()==0)||(Edit2->Text.Length()==0)||(Edit3->Text.Length()==0)||(Edit4->Text.Length()==0)||(Edit5->Text.Length()==0)||(Edit6->Text.Length()==0))
  {
   MessageDlg("Вы не ввели все данные!",mtWarning,TMsgDlgButtons()<<mbOK,0);
   return;
  }
 
 DateTimePicker1->DateFormat = dfShort;
 K_Famyli= QuotedStr(Edit1->Text); // QuotedStr() - берет в скобки
 K_Name=QuotedStr(Edit2->Text);
 K_Otchestvo=QuotedStr(Edit3->Text);
 K_god_rogd=FormatDateTime("dd.mm.yyyy",DateTimePicker1->DateTime);
 K_adres=QuotedStr(Edit4->Text);
 K_nomer=QuotedStr(Edit5->Text);
 K_sem_pol=QuotedStr(ComboBox1->Text);
 K_dannie_pasporta=QuotedStr(Edit6->Text);
 
 DataModule2->HelpQuery->Close();
 DataModule2->HelpQuery->SQL->Clear() ;
 DataModule2->HelpQuery->SQL->Add("exec new_klient "+K_Famyli+","+K_Name+","+K_Otchestvo+","+K_god_rogd+","+K_adres+","+K_nomer+","+K_sem_pol+","+K_dannie_pasporta);
 
 DataModule2->HelpQuery->ExecSQL();
 
 DataModule2->klientQuery->Active=False;
 DataModule2->klientQuery->Active=True;
Выдает следующую ошибку (Рис.2.). На рис.3. Значения переменных до возникновения ошибки.




Помогите пожалуйста что не так???
Миниатюры
Ошибка: неправильный синтаксис около конструкции   Ошибка: неправильный синтаксис около конструкции  
Изображения
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2014, 12:46
Ответы с готовыми решениями:

Неправильный синтаксис около конструкции
Помогите. Пишет ошибка около точки. Вот код: unit Unit2; interface uses Winapi.Windows,...

Неправильный синтаксис около конструкции GO
Добрый день, сложилась такая ситуация. Есть функция. которая берет данные из таблицы на SQL server ...

Неправильный синтаксис около конструкции
Additional information: Неправильный синтаксис около конструкции &quot;908-33-12-12&quot;. В чем может быть...

Неправильный синтаксис около конструкции Login
Добрый день, обе конструкции выдают ошибку, дня 3 не могу понять где ошибка. подскажите пожалуйста...

5
78 / 78 / 6
Регистрация: 18.06.2009
Сообщений: 533
29.04.2014, 16:13 2
C++
1
 DataModule2->HelpQuery->SQL->Add("exec new_klient "+K_Famyli+","+K_Name+","+K_Otchestvo+","+K_god_rogd+","+K_adres+","+K_nomer+","+K_sem_pol+","+K_dannie_pasporta);
Не правильно скорей всего,ковычек не хватает в конце.и на скрине видно,что справа стоит 2 кавычки.

Добавлено через 10 минут
Хотя нет, какая версия SQL?

Добавлено через 17 минут
C++
1
     INSERT INTO klient VALUES ((SELECT ISNULL(MAX(id_klienta),1)+1 FROM klient), @Famyli, @Name, @Otchestvo, @god_rogd, @adres, @nomer, @sem_pol, @dannie_pasporta)
Я думаю так должно отработать

Добавлено через 1 час 54 минуты
C++
1
Insert into Klient (Select IsNull(Max(Id_Klienta) +1,1), @family, @Name, @otchestvo, ...... from Klient)
выберется счетчик и остальные значения встанут как надо....погуглил.
Вообщем проверить не начем)) пробуй 3 варианта,отпишись)
1
2 / 2 / 0
Регистрация: 03.02.2013
Сообщений: 126
30.04.2014, 10:53  [ТС] 3
Делал базу по этому видео под свою бд http://www.youtube.com/watch?v... 0B&index=2

Сервер следующий : Microsoft SQL Server 2008 R2

Добавлено через 11 минут
та же ошибка =(
0
78 / 78 / 6
Регистрация: 18.06.2009
Сообщений: 533
30.04.2014, 11:52 4
Wolverine_, А процедуру откуда взял? была уже? или сам?

Добавлено через 16 минут
SQL
1
2
3
 INSERT INTO klient
 SELECT ISNULL(MAX(id_klienta)+1,1), @Famyli, @Name, @Otchestvo, @god_rogd, @adres, @nomer, @sem_pol,@dannie_pasporta
 FROM klient
Так попробуй
0
40 / 40 / 16
Регистрация: 07.08.2012
Сообщений: 187
30.04.2014, 12:11 5
C++
1
DataModule2->HelpQuery->SQL->Add("exec new_klient @Famyli = '"+K_Famyli+"', @Name = '"+K_Name+"', = @Otchestvo = '"+K_Otchestvo+"', @god_rogd = '"+K_god_rogd+"', @adres = '"+K_adres+"', @nomer = '"+K_nomer+"', @sem_pol = '"+K_sem_pol+"', @dannie_pasporta = '"+K_dannie_pasporta +"');
Так попробуй
0
2 / 2 / 0
Регистрация: 03.02.2013
Сообщений: 126
14.05.2014, 07:10  [ТС] 6
Она заработала )))

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
USE [Lombard]
GO
/****** Object:  StoredProcedure [dbo].[new_klient]    Script Date: 05/14/2014 12:08:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
ALTER PROCEDURE [dbo].[new_klient](@Famyli nvarchar(50), @Name nvarchar(50), @Otchestvo nvarchar(50), @god_rogd DATE, @adres nvarchar(50), @nomer nvarchar(50), @sem_pol nvarchar(50), @dannie_pasporta nvarchar(50))
AS
    BEGIN
     INSERT INTO klient VALUES ((SELECT ISNULL(MAX(id_klienta)+1,1) FROM klient), @Famyli, @Name, @Otchestvo, @god_rogd, @adres, @nomer, @sem_pol, @dannie_pasporta)
    END
теперь проблема в том что дата которую я беру в программе из DateTimePicker1 не подходит. Если ее убрать т.е. написать NULL за место переменной то ОК функция добавляет а с датой не хочет. Функция FormatDateTime не помогает
0
14.05.2014, 07:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2014, 07:10
Помогаю со студенческими работами здесь

Неправильный синтаксис около конструкции merge
Доброго времени суток! :senor: Процедура должна приводить одну таблицу в полное соответствие с...

Ошибка в коде SQL: Неправильный синтаксис около конструкции "<"
Помогите пожалуйста с ошибкой в коде. USE GO INSERT INTO . ( , ...

Вызов хранимой процедуры, ошибка "Неправильный синтаксис около конструкции Get"
sql server 2008 Имею таблицу Auto с двумя столбцами ID и FIO. Имею хранимую процедуру CREATE...

Процедура на удаление: выводится ошибка -неправильный синтаксис около конструкции "15"
CREATE PROCEDURE dbo.DeletFromTable @field varchar(50), @name varchar(20) AS BEGIN ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru