Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка при исполнении процедуры.


Yakudza ©   (2002-02-28 11:54:00) 

Есть форма добавления новой компании в базу, но несколько полей часто бывают пустыми, типа, emailа нет и т.д.. И когда исполняеться процедура, и есть такие пустые значения то она естественно ругаеться -

"Project acc.exe raised exception class EDBEngineError with message "General SQL error".
[INTERSOLV][ODBC Server driver] Character, decimal, and binary parameters cannot have a precision of zero."

подскажите как лучше решить эту проблему, пока что я проверяю - если TEdit.Text пусто то параметру процедуры присваиваю пробел.

Спасибо за любую информацию.


roottim   (2002-02-28 16:45:00) [1]

DM.spAdd_Embassy.Prepare вот эту перед exec ставь и назабудь UnPrepare после него
попробуй ка заменить так!..

if phone<>"" then
DM.spAdd_Embassy.ParamByName("@phone").AsString := phone;
else
DM.spAdd_Embassy.ParamByName("@phone").Value:=NULL;

а так в пр все по уму!!! может гвоздик и в этом...


Yakudza   (2002-02-28 16:30:00) [2]

Вот :

DM.spAdd_Embassy.Prepare;
DM.spAdd_Embassy.ParamByName("@name").AsString := Trim(edEmbName.Text);
DM.spAdd_Embassy.ParamByName("@address").AsString := Trim(mAddress.Text);
DM.spAdd_Embassy.ParamByName("@phone").AsString := phone;
DM.spAdd_Embassy.ParamByName("@fax").AsString := fax;
DM.spAdd_Embassy.ParamByName("@a_first_name").AsString := a_first_name;
DM.spAdd_Embassy.ParamByName("@a_last_name").AsString := a_last_name;
DM.spAdd_Embassy.ParamByName("@website").AsString := website;
DM.spAdd_Embassy.ParamByName("@email").AsString := email;
DM.spAdd_Embassy.ParamByName("@notes").AsString := notes;
DM.spAdd_Embassy.ExecProc;


roottim   (2002-02-28 15:35:00) [3]

выложи код где инициализируеш SP


Yakudza   (2002-02-28 15:28:00) [4]

c null все равно ругаеться.:(
Я ж говорю это StoredProc ругаеться перед тем как запустить параметры на сервак.


Yakudza   (2002-02-28 14:42:00) [5]

>roottim
default null.... - счас попробую !


roottim   (2002-02-28 14:04:00) [6]

и второе!!.... ошибка при присвоении параметров могет быть


roottim   (2002-02-28 13:54:00) [7]

ясен пень!...
он непонимает что за значение ему присваивают...
в оракловой бы проседуре я бы попробовал так

create procedure add ( name varchar(200) default null....
и у тебя скобочка опущена в инсерт, но это скорее очепятка :)


Yakudza   (2002-02-28 13:35:00) [8]

>roottim
Врядли это процедура, ругаеться еще до того как пытаеться исполнить процедуру на серваке.

но на всякий случай вот она -

CREATE PROCEDUREadd (@name varchar(200),@address varchar (100),@phone varchar(20),@fax varchar(20),@a_first_name varchar (70),@a_last_name varchar (100),@website varchar (100), @email varchar (100),@notes varchar (250))

AS
DECLARE

@date datetime
BEGIN
SELECT @date = getdate()
INSERT INTOembassy name,address,phone,fax,a_first_name,a_last_name,website,email,add_date,notes) VALUES(@name,@address,@phone,@fax,@a_first_name,@a_last_name,@website,@email,@date,@notes)

END


roottim   (2002-02-28 13:15:00) [9]

раз ты используеш не дб компоненты скорее всего в самой процедуре баг
выложи ее


Yakudza   (2002-02-28 12:58:00) [10]

Прошу прощения,опечатка:))
поля в базе null :))


Yakudza   (2002-02-28 12:29:00) [11]

База Sybase поля не not null.


bas   (2002-02-28 12:15:00) [12]

Какая база-то?
Поля в БД notNULL?


Наверх

Титульная страница Поиск, карта сайта Написать письмо