Поиск:

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


Новичок



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

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



Пишу на Delphi 7 + бд ms sql 2000
вот такой код процедуры:

Код

procedure TFormDobUS.Button1Click(Sender: TObject);
begin
  ADOQuery1.SQL.Text:='update users set all=all+1 where id=' + Edit1.Text;
  ADOQuery1.ExecSQL;
end;


тип данных у "all" и у "id" - numeric
выдает ошибку - "неверный синтаксис около ="
Почему??? smile 
PM MAIL ICQ   Вверх
Akella
Дата 6.2.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



а так?
Код

  ADOQuery1.SQL.Text:='update users set all=all+1 where id=' + QuotedStr(Edit1.Text);


Добавлено @ 11:48 
или так:

Код

ADOQuery1.SQL.Text:='update users set all=all+1 where id=:id';
ADOQuery1.params[0].asString := Edit1.Text;

PM MAIL   Вверх
Savek
Дата 6.2.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

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



Цитата(Akella @  6.2.2007,  11:45 Найти цитируемый пост)
Код    
ADOQuery1.SQL.Text:='update users set all=all+1 where id=' + QuotedStr(Edit1.Text);

Зачем нужны кавычки если тип поля числовой? Будет несоответсвие данных в условии отбора.

Я бы сделал так
Код

ADOQuery1.SQL.Text:='update users set all=all+1 where id=:id';
ADOQuery1.parameters.ParamByName('id').Value:=StrToIntDef(Edit1.Text,-1);

заодно и защита от некорректного ввода в поле радактирования
PM MAIL   Вверх
Gava
Дата 6.2.2007, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



при таком
Код

procedure TFormDobUS.Button1Click(Sender: TObject);
var a:integer;
begin
  a:=StrToInt(Edit1.text);
  ADOQuery1.SQL.Text:='update users set all=all+1 where id=:usid';
  ADOQuery1.Parameters.ParamByName('usid').Value:=a;
  ADOQuery1.ExecSQL;
end;
javascript: void(0);
и при таком
Код

procedure TFormDobUS.Button1Click(Sender: TObject);
begin
  ADOQuery1.SQL.Text:='update users set all=all+1 where id=' + Edit1.Text;
  ADOQuery1.ExecSQL;
end;

выдается ошибка is not a valid integer value

такая функция вообще не существует  smile 
Код

ADOQuery1.SQL.Text:='update users set all=all+1 where id=:id';
ADOQuery1.params[0].asString := Edit1.Text;


причем: если в 1ом коде вместо строчки a:=StrToInt(Edit1.text); пишу a:=1, то все работает...
PM MAIL ICQ   Вверх
Gava
Дата 6.2.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



причем delphi указывает ошибку на строку   Application.Run в самом проекте
PM MAIL ICQ   Вверх
Akella
Дата 6.2.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Добавлено @ 14:36 
Код

ADOQuery1.SQL.Text:='update users set all=all+1 where id=:id';
ADOQuery1.params[0] := Edit1.Text;


Это сообщение отредактировал(а) Akella - 6.2.2007, 14:37
PM MAIL   Вверх
Rodman
Дата 6.2.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



Цитата(Gava @  6.2.2007,  11:25 Найти цитируемый пост)
причем delphi указывает ошибку на строку   Application.Run в самом проекте 

он просто вылетает туда... smile 
надеюсь с конекшеном все ОК
а так 
Код

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT all FROM users where id='''+Edit1.Text+''';');
ADOQuery1.Open;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('update users set all='''+ADOQuery1.Fields[0].asinteger+1+''' where id='''+Edit1.Text+''';');
ADOQuery2.ExecSQL;


Это сообщение отредактировал(а) Rodman - 6.2.2007, 15:44
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Savek
Дата 6.2.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

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



Цитата(Gava @  6.2.2007,  12:08 Найти цитируемый пост)
выдается ошибка is not a valid integer value

Так ведь для этого и придумали функцию StrToIntDef
PM MAIL   Вверх
Gava
Дата 6.2.2007, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



все решалось очень просто: поле numeric - это же не integer!!!!
короче я сменил numerik на bigint с кодом

Код

procedure TFormDobUS.Button1Click(Sender: TObject);
begin
  ADOQuery1.SQL.Text:='update users set all=all+1 where id=' + Edit1.Text;
  ADOQuery1.ExecSQL;
end;


Урра! всем пасибоsmile
PM MAIL ICQ   Вверх
Akella
Дата 7.2.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



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


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

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