Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi и базы данных

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Мусаси
7 / 7 / 0
Регистрация: 07.05.2013
Сообщений: 193
#1

Создание SQL-запросов в Delphi XE4 - Delphi БД

27.04.2014, 19:11. Просмотров 1278. Ответов 10
Метки нет (Все метки)

Добрый день. Есть очень простой вопрос. Я работал в Delphi 7, а сейчас в Delphi XE4. Создал БД в Access, создал запрос на добавление в Delphi XE4. При попытки добавления сотрудника Выдаёт ошибку "Ошибка синтаксиса в инструкции Insert into". Чё за хрень ума не приложу. В семерке у меня бы давно получилось. Скрин БД я прикрепил

Создание SQL-запросов в Delphi XE4.

Код внизу. Исправьте пожалуйста. ))))

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//добавить сотрудника
DataModule2.ADOQ2_Insert_Sotrudnika.Close;
DataModule2.ADOQ2_Insert_Sotrudnika.SQL.Clear;
DataModule2.ADOQ2_Insert_Sotrudnika.SQL.Add('insert into Сотрудник(Фамилия, Имя, Отчество,Д/Р, Адрес, Телефон, Серия_паспорта, Должность) values (:Фамилия, :Имя, :Отчество,:Д/Р, :Адрес, :Телефон, :Серия_паспорта, :Должность)');
DataModule2.ADOQ2_Insert_Sotrudnika.Parameters.ParamByName('Фамилия').Value:=Edit1.Text;
DataModule2.ADOQ2_Insert_Sotrudnika.Parameters.ParamByName('Имя').Value:=Edit2.Text;
DataModule2.ADOQ2_Insert_Sotrudnika.Parameters.ParamByName('Отчество').Value:=Edit3.Text;
DataModule2.ADOQ2_Insert_Sotrudnika.Parameters.ParamByName('Д/Р').Value:=DateTimePicker1.Date;
DataModule2.ADOQ2_Insert_Sotrudnika.Parameters.ParamByName('Адрес').Value:=Edit4.Text;
DataModule2.ADOQ2_Insert_Sotrudnika.Parameters.ParamByName('Телефон').Value:=Edit4.Text;
DataModule2.ADOQ2_Insert_Sotrudnika.Parameters.ParamByName('Серия_паспорта').Value:=Edit4.Text;
DataModule2.ADOQ2_Insert_Sotrudnika.Parameters.ParamByName('Должность').Value:=Edit1.Text;
 
DataModule2.ADOQ2_Insert_Sotrudnika.ExecSQL;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2014, 19:11
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Создание SQL-запросов в Delphi XE4 (Delphi БД):

Delphi XE4 синтаксис sql запроса - Delphi БД
Добрый день, Есть у меня такой запрос, который работает в Pl/SQL Developer. select t.mal_no, b.barkod, t.mal_adi, t.mal_yerel_adi,...

Delphi XE4 SQL запрос на подсчет суммы - Delphi БД
Составил запрос на подсчет суммы по критерию (Код_заказа (не ключевое)). И не могу вывести эту сумму в Edit. Вот код procedure...

Delphi XE4 SQL запрос. Добавление записи в последнюю позицию DBGrid - Delphi БД
Еще раз всем привет! Возникла вот такая загогулина. Есть поле Edit, в котором есть данные. Эти данные надо перенести в таблицу. Но не...

Создание запросов к БД в приложении Delphi - Delphi БД
Задание: добавиую форму создать поля просмотра в зависимых таблицах; 1.Задание 1.1.Добавьте в Ваше приложение новую форму, на...

MS Access Вывод данных в БД Access 2003 при использование SQL запросов. Delphi - Delphi БД
Добрый день или вечер Камрады, столкнулся с проблемой при использование структуры "insert into", кто-нибудь может подсказать как правильно...

Delphi XE4 дебаггинг - Delphi
Если начинать компиляцию через Trace into, то показывает ход компиляции не только кода проекта, но и SysInit.pas, System.pas, GETMEM.INC.. ...

10
Скандербег
925 / 884 / 215
Регистрация: 07.08.2012
Сообщений: 2,456
27.04.2014, 23:33 #2
Вот так запросто: Д/Р
Ну, хотя бы, как принято в аксессе: [Д/Р]
1
Мусаси
7 / 7 / 0
Регистрация: 07.05.2013
Сообщений: 193
28.04.2014, 09:48  [ТС] #3
Спасибо. Ответ даже очень простой.

А теперь еще один вопрос. К таблице сотрудники есть таблица должности. Отношение 1 ко многим. Поле должности в таблице Сотрудник имеет числовой тип. Как с помощью DBLookupCombobox вставить значение в таблицу Сотрудник, если будут выбираться Наименование должности, которое имеет текстовый тип из таблицы Должности?

Если я выбираю значение в ListField Наименование_должности, пишет не соответствие типов, а если код должности, тогда подставляет, но при этом я вижу не наименование_должности, а его код в DBLookupCombobox.
0
Скандербег
925 / 884 / 215
Регистрация: 07.08.2012
Сообщений: 2,456
28.04.2014, 10:03 #4
Использовать свойства DBLookupCombobox:
при разработке:
ListSource - для подключения к компоненту таблицы Должности (черезе ADOTable и Datasource)
KeyField - указать поле-идентификатор в т. Должности (как он там называется)
ListField - здесь указать поле Наименование должности
при работе программы:
KeyValue - для получения значения поля-идентификатора (для поля Должности в т. Сотрудники) после выбора должности пользователем.
Другие свойства в данном случае не используются.
0
Мусаси
7 / 7 / 0
Регистрация: 07.05.2013
Сообщений: 193
28.04.2014, 22:15  [ТС] #5
Что-то не работает. У меня возникла идея, а если значение ValueKey занести в еще один Edit и из него перенести в таблицу. Все как бы не плохо, только почему-то не воспринимает перевод StrToLongint(Edit7.text). Кричит что тип не соответствует, хотя В таблице написано длинное целое. Как тогда его в длинное целое перевести?
0
Скандербег
925 / 884 / 215
Регистрация: 07.08.2012
Сообщений: 2,456
28.04.2014, 22:29 #6
KeyValue - это не длинное и не короткое и даже не целое - это тип Variant. А значение типа Variant преобразовывать не надо.
Да и зачем переносить в едит, если можно сохранить это значение в переменной, а потом оттуда взять.
Но идея, сама по себе, не очень - какие-то лишние телодвижения.
Опять же, непонятно почему "не работает", если значение KeyValue существует (не зря же куда-то его хочется занести). А ведь это значение результат нормальной работы компонента.
0
Мусаси
7 / 7 / 0
Регистрация: 07.05.2013
Сообщений: 193
29.04.2014, 00:09  [ТС] #7
Фигня какая-то. Все сделал, как ты говорил

Delphi
1
DataModule2.ADOQ2_Insert_Sotrudnika.Parameters.ParamByName('Должность').Value:=DBLookupComboBox1.KeyValue;
По идее все правильно, должно работать.

И снова выдаёт эту долбаную ошибку. Я прикреплю файл Программа.rar. Может найдешь ошибку?
0
Скандербег
925 / 884 / 215
Регистрация: 07.08.2012
Сообщений: 2,456
29.04.2014, 06:25 #8
Ошибка не здесь, а в присвоении даты:
Delphi
1
...ParamByName('Дата_рождения').Value:=DateOf(DateTimePicker1.Date);
Пикер этот содержит и время, которое надо отсекать, иначе ошибка такая и бывает.
Функция DateOf (тем и занимается, что дата остается с очищенным временем) находится в модуле DateUtils:
Delphi
1
uses Главная, Module, DateUtils;
0
Мусаси
7 / 7 / 0
Регистрация: 07.05.2013
Сообщений: 193
29.04.2014, 09:52  [ТС] #9
Спасибо, указал в каком направлении рыть. Только на счет DateOf(....) пишет вот что

[dcc32 Error] Сотрудники.pas(61): E2003 Undeclared identifier: 'DateOf'

Думаю, что-нибудь придумаю. Но все равно Гран Мерси.
0
Скандербег
925 / 884 / 215
Регистрация: 07.08.2012
Сообщений: 2,456
29.04.2014, 12:34 #10
Пож., внимательнее посмотрите мой прежний пост.
В нем рассказано что делать чтобы не было этой ошибки.
Но можно и по-буквам:
надо найти в тексте модуля слово uses, которое находится после слова implementation
рядом со словом uses находятся имена модулей: uses Главная, Module;
после слова Module нужно поставить запятую и вписать DateUtils, чтобы получилось так:
uses Главная, Module, DateUtils;
Упомянутой ошибки при компиляции не будет.
1
Мусаси
7 / 7 / 0
Регистрация: 07.05.2013
Сообщений: 193
01.05.2014, 20:56  [ТС] #11
Большое тебе спасибо. Есть ли у тебя какие-нибудь книги по делфи или какие можешь посоветовать? Если есть скинь на мою почту, если тебе не сложно terran.doatk@mail.ru. Буду очень благодарен.

Еще раз СПАСИБО!!!
0
01.05.2014, 20:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2014, 20:56
Привет! Вот еще темы с ответами:

Создание таблицы запросом (Delphi/ SQL/ Access) - Delphi БД
Добрый вечер! Возникла необходимость создать новую таблицу в MS Access, с помощью запроса в Delphi. Если писать запрос в самом эксесе —...

Delphi XE4 Variant перевести в Int - Delphi БД
добрый день. Нужна помощь. Как переменную типа variant перевести в int? Большое спасибо

Анимация иконки в TrayIcon (Delphi XE4) - Delphi
Всем привет! Помогите пожалуйста решить вопрос. Допустим у меня есть на форме стандартный компонент trayicon (delphi xe4), и подключенный...

О вызове хр.процедур Oracle из Delphi XE4 - Delphi БД
Добрый день, Форумчанины. Вот несколько дней ломаю голову над вызовом хр.процедур Oracle из Delphi ХЕ4. В PL/SQL dev запускаю: ...


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

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

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