Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Error converting data type varchar to numeric


Автор: Gava 5.2.2007, 12:16
Код

procedure TFormDobUS.Button1Click(Sender: TObject);
var usID,spID:char;
begin
  ADOQuery1.SQL.Text:='insert users Values('''+edit14.Text+''','''+edit1.Text+''')';
  ADOQuery1.ExecSQL;
  ADOQuery1.SQL.Text:='update users set vse=vse+1 where userid=1';
  ADOQuery1.ExecSQL;
end;


на строчке 6 и выдается такая ошибка...( Error converting data type varchar to numeric)
В SQL query analyzer строчка 
Код

update users set vse=vse+1 where userid=1

проходит на ура
что такое??

Автор: Savek 5.2.2007, 12:26
Цитата(Gava @  5.2.2007,  12:16 Найти цитируемый пост)
ADOQuery1.SQL.Text:='insert users Values('''+edit14.Text+''','''+edit1.Text+''')';

Скорее всего ошибка здесь

Автор: Gava 5.2.2007, 12:29
нет
если не приписывать строки 
Код
  ADOQuery1.SQL.Text:='update users set vse=vse+1 where userid=1';
  ADOQuery1.ExecSQL;

то все работает
у меня такое ощущение что это от 2х  ADOQuery1.ExecSQL;

Автор: Данкинг 5.2.2007, 12:35
В базе с пустыми полями (или NULL) как?

Автор: Gava 5.2.2007, 12:38
нее ну все поля заполненыsmile

Автор: Данкинг 5.2.2007, 12:43
А если очистку сделать?
Код


ADOQuery1.SQL.Text:='insert users Values('''+edit14.Text+''','''+edit1.Text+''')';
 ADOQuery1.ExecSQL;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Text:='update users set vse=vse+1 where userid=1';
ADOQuery1.ExecSQL;


Автор: Gava 5.2.2007, 12:49
неа...тоже самое блин...
причем: ситуация такая что если в теле процедуды это-
Код

ADOQuery1.SQL.Text:='insert users Values('''+edit1.Text+''','''+edit2.Text+''')';
ADOQuery1.ExecSQL; 

то она безошибочно работает
если 2-ая часть
Код

ADOQuery1.SQL.Text:='update users set vse=vse+1 where userid=1';
ADOQuery1.ExecSQL;

то она тоже работает нормально... когда пишу вместе - ошибка....

Автор: Данкинг 5.2.2007, 12:54
Ну, попробуй кверю закрыть перед вторым запросом...

Код

ADOQuery1.close;


Автор: Gava 5.2.2007, 13:02
smile финиш... блииииииииииииииииииин... не работает

Добавлено @ 13:05 
 smile ехху! кароче текст программы должен быль таков: 
Код

procedure TFormDobUS.Button1Click(Sender: TObject);
var usID,spID:char;
begin
  ADOQuery1.SQL.Text:='insert users Values('''+edit14.Text+''','''+edit1.Text+''')';
  //ADOQuery1.ExecSQL; - вот это нафиг:)
  ADOQuery1.SQL.Text:='update users set vse=vse+1 where userid=1';
  ADOQuery1.ExecSQL;
end;

Автор: Данкинг 5.2.2007, 13:11
Ну, млин... Могу ещё предложить изменить

Код

ADOQuery1.SQL.Text:='update users set vse=vse+1 where userid=1';


на

Код

ADOQuery1.SQL.ADD ('update users set vse=vse+1 where userid=1');


А так - ищи, почему происходит попытка чар засунуть в нумерик....

Гы! А вот моим способом попробуй, только exec не убирай. Должно получиться... smile 

Автор: Savek 5.2.2007, 14:18
Код

Button1Click(Sender: TObject);
var usID,spID:char;
begin
//ADOQuery1.SQL.Text:='insert users Values('''+edit14.Text+''','''+edit1.Text+''')'; тогда это тоже нафиг, оно все равно сразу же затирается
//ADOQuery1.ExecSQL; - вот это нафиг:)
ADOQuery1.SQL.Text:='update users set vse=vse+1 where userid=1';
ADOQuery1.ExecSQL;
end;

Автор: CatATonik 5.2.2007, 14:31
Код

ADOQuery1.SQL.Text:='insert users Values('''+edit14.Text+''','''+edit1.Text+''')';


А ты уверен что Edit14 и Edit1 создержат числовые значения? Вообще какой тип полей? Похоже что сначала записывается в текстовое поле, а потом MSSQL не может конвертировать в текст в число. Посмотри что в базу записалосьто после первого Exec.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)