Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при добавлении записи в БД через SQL, При процедуре Добавления новой записи 
V
    Опции темы
irina1410
  Дата 25.6.2012, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. Delphi 7. БД - MS Access/
Вот проблема какая: написала прогу с использованием sql.
При процедуре добавления записи в БД пишет ошибку "ADOQuery1: Field "name" not found". Process stopped.
В БД это поле текстового типа, остальные численные.
new_id, new_name, new_kol, new_pr - это имена ячеек на форме "Insert", для ввода новых значений.

Также в программе есть сортировка в полем "name" и ьам прога поле видит и всё работает.

Подскажите, что делать, в чем проблема. Завтра экзамен, а я всё разобраться не могу.
Помогите, пожалуйста.Ошибка при добавлении.[code=delphi]
 smile  smile  smile 
[
Код

procedure TInsert.saveClick(Sender: TObject);
var iditem,code: integer;
    sql1,mem,mem1: string;
    price,kol: real;
begin
s:=new_name.Text;
if (new_id.Text='') or (s='') then
                            begin
                            ShowMessage('Код товара (Наименование) не могут быть пустыми!');
                            exit;
                            end;
val(new_id.Text,iditem,code);
if (code<>0) or (iditem<0) then
                        begin
                        ShowMessage('Неправильно указан код товара!');
                        exit;
                        end;
Main.ADOQuery1.Close;
SQL1:=Main.AdoQuery1.SQL.Text;
Main.AdoQuery1.SQL.Clear;
SQL:='select id from my where id='+new_id.Text;
Main.ADOQuery1.SQL.Add(sql);
Main.ADOQuery1.Open;
if Main.ADOQuery1.RecordCount<>0 then
                                begin
                                ShowMessage('Такой код товара уже существует!');
                                Main.ADOQuery1.Close;
                                Main.ADOQuery1.SQL.Clear;
                                Main.ADOQuery1.SQL.Add(sql1);
                                Main.ADOQuery1.Open;
                                exit;
                                end
else begin Main.ADOQuery1.Open;
           Main.ADOQuery1.SQL.Clear;
           Main.ADOQuery1.Sql.Add(sql1);
      end;
val(new_kol.Text,kol,code);
if (code<>0) or (kol<0) then begin
                          ShowMessage('В поле Объем партии введено некор. значение данные не будут сохранены!');
                          mem:='0';
                          end
                        else mem:=new_kol.Text;
val(new_pr.Text,price,code);
if (code<>0) or (price<0) then
                          begin
                          ShowMessage('В поле Стоимость введено некорректное значение данные не будут сохранены!');
                          mem1:='0';
                          end
                          else mem1:=new_pr.Text;
[U]SQL:='INSERT INTO my (id, name, kol, pr) VALUES ('+new_id.Text+', '+new_name.Text+', '+new_kol.Text+', '+new_pr.Text+' )';[/U]
Main.ADOQuery1.SQL.Add(SQL);
Main.ADOQuery1.Open;
Insert.Hide;{скрыли форму добавления записи}
Main.Show;{открыли основную форму}
end;{/procedure TInsert.saveClick}
/code]

Это сообщение отредактировал(а) irina1410 - 25.6.2012, 11:36

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  экзамен.rar 336,99 Kb
PM MAIL   Вверх
Vas
Дата 25.6.2012, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 name в акцессе зарезервированное слово.
попробуй так
Код

SQL:='INSERT INTO my ([id], [name], [kol], [pr]) VALUES ('+new_id.Text+', '+new_name.Text+', '+new_kol.Text+', '+new_pr.Text+' )';



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


Новичок



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

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



Цитата(Vas @ 25.6.2012,  12:24)
name в акцессе зарезервированное слово.
попробуй так
Код

SQL:='INSERT INTO my ([id], [name], [kol], [pr]) VALUES ('+new_id.Text+', '+new_name.Text+', '+new_kol.Text+', '+new_pr.Text+' )';

Попробовала.
Та же ошибка.

Мне тут еще посоветовали изменить "name" на какое-нибудь другое имя. НО увы, после смены стала вылетать другая ошибка "Ошибка синтаксиса в предложении FROM". Я просто уже не знаю, что делать. smile 
PM MAIL   Вверх
superVad
Дата 25.6.2012, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

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



Цитата(irina1410 @  25.6.2012,  11:51 Найти цитируемый пост)
Мне тут еще посоветовали изменить "name" на какое-нибудь другое имя. НО увы, после смены стала вылетать другая ошибка "Ошибка синтаксиса в предложении FROM". Я просто уже не знаю, что делать.  

Исправлять вторую ошибку.
PM MAIL   Вверх
Данкинг
Дата 25.6.2012, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



На какой строке эта "другая ошибка"? Просто я сильно сомневаюсь, что при изменении какого-то поля в запросе с INSERT появилась ошибка в другом запросе, с SELECT.

Цитата(irina1410 @  25.6.2012,  13:51 Найти цитируемый пост)
Мне тут еще посоветовали изменить "name" на какое-нибудь другое имя.

Это для тех, кто не прочитал предыдущего поста.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Аватар
Дата 28.6.2012, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1. SQL - что за переменная?
2. 
Цитата
Main.ADOQuery1.SQL.Add(SQL);
кто SQL.Clear делать будет?
3.
Цитата
Main.ADOQuery1.Open;
 А почему не ExecSQL?

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.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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