Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Что за ошибка?


Автор: Garmahis 31.5.2006, 14:54
Код

    ADOQuery3.SQL.Text:='INSERT INTO RNumber VALUES (:id,:Post,:Neud,:Number,:Data,:Page,:Pay,:Cost,:PaperID,:SizeR,:RCost,:Mask,:Rubric,:Verstka,:MakeCount,:SizeD,:DataPayd)';
    ADOQuery3.Parameters.ParseSQL(ADOQuery3.SQL.text,True);
   ADOQuery3.Parameters.ParamByName('id').Value:=s;
   ADOQuery3.Parameters.ParamByName('Post').Value:= i;
   if Reklam.StringGrid4.Cells[8,i]<>'' then ADOQuery3.Parameters.ParamByName('Neud').Value:= StrToInt(Reklam.StringGrid4.Cells[8,i])
   else
   ADOQuery3.Parameters.ParamByName('Neud').Value:=0;
   ADOQuery3.Parameters.ParamByName('Number').Value:=Reklam.StringGrid4.Cells[2,i];
   if Reklam.StringGrid4.Cells[4,i]<>'' then ADOQuery3.Parameters.ParamByName('Data').Value:=StrToDate(Reklam.StringGrid4.Cells[4,i])
   else 
   ADOQuery3.Parameters.ParamByName('Data').Value:=MinDateTime;
   if Reklam.StringGrid4.Cells[3,i]<>'' then ADOQuery3.Parameters.ParamByName('Page').Value:=StrToInt(Reklam.StringGrid4.Cells[3,i])
   else  
   ADOQuery3.Parameters.ParamByName('Page').Value:=0;
   ADOQuery3.Parameters.ParamByName('Pay').Value:=State;
   if Reklam.StringGrid4.Cells[6,i]<>'' then ADOQuery3.Parameters.ParamByName('Cost').Value:= StrToCurr(Reklam.StringGrid4.Cells[6,i])
   else 
   ADOQuery3.Parameters.ParamByName('Cost').Value:=0;
   ADOQuery3.Parameters.ParamByName('PaperID').Value:= s2;
   ADOQuery3.Parameters.ParamByName('SizeR').Value:= Reklam.StringGrid4.Cells[5,i];
   if Reklam.StringGrid4.Cells[9,i]<>'' then ADOQuery3.Parameters.ParamByName('RCost').Value:= StrToCurr(Reklam.StringGrid4.Cells[9,i])
   else 
   ADOQuery3.Parameters.ParamByName('RCost').Value:=0;
   ADOQuery3.Parameters.ParamByName('Mask').Value:=Reklam.StringGrid4.Cells[12,i];
   ADOQuery3.Parameters.ParamByName('Rubric').Value:=Reklam.StringGrid4.Cells[14,i];
   ADOQuery3.Parameters.ParamByName('Verstka').Value:= Reklam.StringGrid4.Cells[15,i];
   if Reklam.StringGrid4.Cells[16,i]<>'' then ADOQuery3.Parameters.ParamByName('MakeCount').Value:=StrToInt(Reklam.StringGrid4.Cells[16,i])
   else 
   ADOQuery3.Parameters.ParamByName('MakeCount').Value:=0;
   if Reklam.StringGrid4.Cells[17,i]<>'' then ADOQuery3.Parameters.ParamByName('SizeD').Value:=StrToFloat(Reklam.StringGrid4.Cells[17,i])
   else 
   ADOQuery3.Parameters.ParamByName('SizeD').Value:=0;
   if Reklam.StringGrid4.Cells[18,i]<>'' then ADOQuery3.Parameters.ParamByName('DataPayd').Value:=StrToDate(Reklam.StringGrid4.Cells[18,i])
   else 
   ADOQuery3.Parameters.ParamByName('DataPayd').Value:=MaxDateTime;
   Reklam.ADOQuery3.SQL.SaveToFile(IntToStr(i)+'.txt');
   Reklam.ADOQuery3.ExecSQL;
   Reklam.ADOQuery3.Close;
  Reklam.ADOQuery3.SQL.Clear;

Во время выполнения кода на строке ExecSQL вылетает со странной ошибкой:
EOleException "Недопустимое символьное значение для спецификации броска"
Что за ошибка? И как бороться? 

Автор: Vit 31.5.2006, 15:43
Где-то строковое значение не может быть конвертировано в integer (например пробел попадается) или что-то типа такого. Попробуйте при присвоении параметров в явном виде преобразовывать данные до нужного типа 

Автор: Garmahis 31.5.2006, 15:44
В явном? это как? 

Автор: Garmahis 31.5.2006, 16:01
Проблема в заднии троки где указана дата. Там дно из значений изначально было задано не как текущая дата а как MinDateTime. Вот её то он и не понимает smile Как для скуэль сервера задать миндатетайм? 

Автор: Vit 31.5.2006, 16:34
А что такое "MinDateTime"?


Цитата(Garmahis @  31.5.2006,  06:44 Найти цитируемый пост)
В явном? это как?  



Ну например если в гриде стоит число то присваивать не текст в гриде а конвертировать его в число и т.п. 

Автор: Garmahis 31.5.2006, 17:26
Это константа из модуля SysUtils
Код

const
  MinDateTime: TDateTime = -657434.0;      { 01/01/0100 12:00:00.000 AM }
  MaxDateTime: TDateTime =  2958465.99999; { 12/31/9999 11:59:59.999 PM }
 

Автор: Vit 31.5.2006, 18:14
Значит просто такую далёкую дату не поддерживает. А зачем она нужна для сервера? 

Автор: DDX 2.6.2006, 12:52
попробуй напихать туда другую дату, и посмотри, что получится 

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