Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL-запрос на добавление новой записи 
:(
    Опции темы
tawenka
Дата 8.1.2015, 03:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток, уважаемые форумчане.
Подскажите, пожалуйста, что не так в SQL-запросе?
Добавляю в БД (Paradox+BDE) новую запись с использованием DBEdit и DBLookupCombobox, создаю код 
fDM.DataModule1.Query1.Close;
fDM.DataModule1.Query1.SQL.Clear;
fDM.DataModule1.Query1.insert into FIO2 values ('DBEdit1.text','DBEdit2.text','DBEdit3.text');
программа выдает ошибку: Missing operator or semicolon.
Как сделать правильно?
Спасибо за внимание.
PM MAIL   Вверх
ТоляМБА
Дата 8.1.2015, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Цитата(tawenka @  8.1.2015,  05:45 Найти цитируемый пост)
fDM.DataModule1.Query1.insert into FIO2 values ('DBEdit1.text','DBEdit2.text','DBEdit3.text');

Код
fDM.DataModule1.Query1.SQL.Text:='insert into FIO2 values ('+DBEdit1.Text+','+DBEdit2.Text+','+DBEdit3.Text+')';

это если будешь передовать числовые значения, для передачи символьных значений оборачивай соответствующий DBEditx.Text в QuotedStr, например в первом эдите ты передаешь string, в остальных двух integer, тогда пишем:
Код
fDM.DataModule1.Query1.SQL.Text:='insert into FIO2 values ('+QuotedStr(DBEdit1.Text)+','+DBEdit2.Text+','+DBEdit3.Text+')';

PM   Вверх
tawenka
Дата 9.1.2015, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо огромное за помощь. 
Теперь я поняла, как правильно писать запрос на вставку, но выходят другие ошибки. Помогите, пожалуйста.
Вкратце то, что мне надо сделать: на главной форме – DBGrid, в котором с помощью SQL-запроса отображены данные из нескольких таблиц, поэтому, чтобы добавить новые данные в БД, я создала новую форму. На главной форме находится Button «Добавить сотрудника», там я написала код fDM.DataModule1.Query1.Append;
fDM.DataModule1.Query5.Append;
Form5.ShowModal;
если на обработчик кнопки «добавить» главной формы вставляю еще строку fDM.DataModule1.Query6.Append;, а она нужна, т.к. данные добавляются через Query1, 5, 6, то выходит ошибка - cannot modify a read-only dataset . 
Для проверки работоспособности остальной части программы убираю запись fDM.DataModule1.Query6.Append;, программа запускается, ввожу данные (правда, не вводятся записи там, где не открыт Query6), а когда нажимаю на кнопку «Сохранить и закрыть» - выскакивает ошибка - Invalid use of keyword. Token: Pib Line Number: 1'
Код на вставку новой записи таков:
fDM.DataModule1.Query1.Close;
fDM.DataModule1.Query1.SQL.Clear;
fDM.DataModule1.Query1.SQL.Text:='insert into FIO2 (Fam, TabN, Tel) values ('+QuotedStr(DBEdit1.Text)+','+DBEdit2.Text+','+DBEdit3.Text+')';
fDM.DataModule1.Query1.ExecSQL;
Close;
И так же на Query5 и 6.
Что я делаю не так?


Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Без_имени_2.doc 17,50 Kb
PM MAIL   Вверх
ТоляМБА
Дата 9.1.2015, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Цитата(tawenka @  9.1.2015,  05:33 Найти цитируемый пост)
cannot modify a read-only dataset
Ты это переводить на русский пробовала?
Цитата(tawenka @  9.1.2015,  05:33 Найти цитируемый пост)
 вставляю еще строку fDM.DataModule1.Query6.Append;

fDM.DataModule1.Query6.SQL.Text - в студию!

Цитата(tawenka @  9.1.2015,  05:33 Найти цитируемый пост)
fDM.DataModule1.Query1.SQL.Text:='insert into FIO2 (Fam, TabN, Tel) values ('+QuotedStr(DBEdit1.Text)+','+DBEdit2.Text+','+DBEdit3.Text+')';
Открываю присоединённый тобой файл и вижу что значение табельного номера "001И". "0" - это цифра ноль, "1" - это цифра один, а "И" - это какая цифра? Ой, это не цифра, а буква! Правильно, тогда значение табельного номера у нас будет не integer а string. А в приведенном мной примере что написано?

Цитата(ТоляМБА @  8.1.2015,  10:56 Найти цитируемый пост)
это если будешь передовать числовые значения, для передачи символьных значений оборачивай соответствующий DBEditx.Text в QuotedStr, например в первом эдите ты передаешь string, в остальных двух integer, тогда пишем:
fDM.DataModule1.Query1.SQL.Text:='insert into FIO2 values ('+QuotedStr(DBEdit1.Text)+','+DBEdit2.Text+','+DBEdit3.Text+')';

Чтобы больше не наступать на такие грабли всегда смотри типы полей в табле в которую делаешь вставку - в строчные вставляй строчные типы делфи, в числовые вставляй числовые (только не вставляй дробные типы делфи в целые типы БД).

Это сообщение отредактировал(а) ТоляМБА - 9.1.2015, 09:18
PM   Вверх
tawenka
Дата 10.1.2015, 04:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сегодня ни одной ошибки я не исправила.
cannot modify a read-only dataset - это, я так понимаю, означает, что Query6 находится в режиме чтения, но ReguestLive у него стоит True, что это может быть еще?
А по поводу типов полей в таблице - если в DataBase Desktop поля - Alpha, значит, значение - строковое? Я в код SQL поставила для всех Edit '+QuotedStr(DBEdit1.Text)+', но ошибка - Invalid use of keyword. Token: Pib Line Number: 1' - осталась, или еще выходит key violation при нажатии на кнопку "Сохранить".
fDM.DataModule1.Query1.Close;
fDM.DataModule1.Query1.SQL.Clear;
fDM.DataModule1.Query1.SQL.Text:='insert into FIO2 (Fam, TabN, Tel) values ('+QuotedStr(DBEdit1.Text)+','+QuotedStr(DBEdit2.Text)+','+QuotedStr(DBEdit3.Text)+')';
fDM.DataModule1.Query1.ExecSQL;
Что я делаю не так?
Можно еще спросить - а как правильно написать запрос, чтобы после выполнения команды на добавление записи квери возвращался к тому запросу, что прописан у него в инспекторе объектов?
Спасибо за помощь.
PM MAIL   Вверх
ТоляМБА
Дата 10.1.2015, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Цитата(tawenka @  10.1.2015,  06:31 Найти цитируемый пост)
что это может быть еще?

Цитата(ТоляМБА @  9.1.2015,  11:16 Найти цитируемый пост)
fDM.DataModule1.Query6.SQL.Text - в студию!


PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


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

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


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.