Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Параметры в SQL запросе, не пойму, где тут ошибка, подскажите... 
:(
    Опции темы
MacTep
Дата 1.10.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



База данных MS Access.

Мой код добавления новой записи в базу данных:
Код

      with frmPeoples.Peoples do
        begin
          Close;
          SQL.Clear;
          SQL.Add('INSERT INTO People VALUES ((:fam),(:name),(:otch),(:adres),(:phone))');
          SQL.Add('SELECT * FROM People');
          parameters.parseSQL(SQL.text, true);
          parameters.parambyname('fam').Value:=Edit1.Text;
          parameters.parambyname('name').Value:=Edit2.Text;
          parameters.parambyname('otch').Value:=Edit3.Text;
          parameters.parambyname('adres').Value:=Edit4.Text;
          parameters.parambyname('phone').Value:=Edit5.Text;
          ExecSQL;
        end;
Вылезает ошибка, изображенная на картинке ниже. Палево. Запарился. Кто знает, что это такое вообще? И где у меня там и что пропущено?


Это сообщение отредактировал(а) MacTep - 1.10.2006, 13:35

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  Error.jpg 24,80 Kb


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Vas
Дата 1.10.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

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



Код

      with frmPeoples.Peoples do
        begin
          Close;
          SQL.Clear;
          SQL.Add('INSERT INTO People VALUES (:fam, :name, :otch, :adres, :phone)');
          //SQL.Add('SELECT * FROM People'); - это зачем?
          parameters.parseSQL(SQL.text, true);
          parameters.parambyname('fam').Value:=Edit1.Text;
          parameters.parambyname('name').Value:=Edit2.Text;
          parameters.parambyname('otch').Value:=Edit3.Text;
          parameters.parambyname('adres').Value:=Edit4.Text;
          parameters.parambyname('phone').Value:=Edit5.Text;
          ExecSQL;
        end;



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Rodman
Дата 1.10.2006, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



НУ Вы даете... Лови пример
Код

      with frmPeoples.Peoples do    
        begin    
          Close;    
          SQL.Clear;    
          SQL.Add('INSERT INTO People (Fam, Name, otch, adres, phone) VALUES (:Pfam, :Pname, :Potch, :adres , :Pphone);');    
          //SQL.Add('SELECT * FROM People');    это  и правда не нужно, это запрос на выборку
          parameters.parseSQL(SQL.text, true);    
          parameters.parambyname('Pfam').Value:=Edit1.Text;    
          parameters.parambyname('Pname').Value:=Edit2.Text;    
          parameters.parambyname('Potch').Value:=Edit3.Text;    
          parameters.parambyname('Padres').Value:=Edit4.Text;    
          parameters.parambyname('Pphone').Value:=Edit5.Text;    
          ExecSQL;    
        end;


INSERT INTO People (Fam, Name, otch, adres, phone) VALUES (:Pfam, :Pname, :Potch, :adres , :Pphone) - этим запросом ты добавляешь данные в таблицу People. Сначала в первых скобках перечисляются имена полей твоей таблицы, а вот во вторых скобках параметры которые будет передаваться...

а это SQL.Add('SELECT * FROM People'); запрос на выборку все данных из таблицы People... Так как там параметров нет... то и не надо передавать, но ты влепил два запроса в один... На тебя любая СУБД ругаться начала бы...

или так можешь попробовать:
Код

with frmPeoples.Peoples do    
        begin    
          Close;    
          SQL.Clear;    
          SQL.Add('INSERT INTO People (Fam, Name, otch, adres, phone) VALUES ('+Edit1.Text+','+Edit2.Text+','+Edit3.Text+','+Edit4.Text+','+Edit5.Text+');');    
          //SQL.Add('SELECT * FROM People');    это  и правда не нужно, это запрос на выборку
          parameters.parseSQL(SQL.text, true);    
          ExecSQL;    
        end;


Это сообщение отредактировал(а) Rodman - 1.10.2006, 23:20
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Vas
Дата 2.10.2006, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

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



Rodman, а в запросе Insert поля можно не перечислять, только тогда в VALUES нужно перечислять значения в строгом порядке, как поля идут в таблице.

Это сообщение отредактировал(а) Vas - 2.10.2006, 10:51


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Rodman
Дата 2.10.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Vas, первый раз слышу, но возможно ты прав... 

но тот вариант, что я дал работает всегда... smile 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
MacTep
Дата 4.10.2006, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Rodman, все ясно. Спасибо. smile


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
MacTep
Дата 11.10.2006, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Люди, ну что, никто никогда не добавлял в базу данных картинки при помощи SQL запроса???


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0740 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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