Проблема с TAdoStoredProc

syned

Добрый день.у меня такая проблемма: при вызове хранимой процедуры (сервер MS SQL 2005) через TAdoStoredProc, при вставке значения NULL во внешний ключ возникает ошибка, хотя поле может быть NULL.
23 ответа

syned

В делфи этот код даже не скомпилируется
Сказки не рассказывайте!


syned

ОшибкаНеправильно определен объект Parameter. Представлены несовместимые или полные сведения.


syned

Какие значения у свойств параметра @cid в коллекции параметров TADOStoredProc?З.Ы TADOStoredProc лучше заменить на TADODataSet.


syned

все разобрался нужно писать такParameters[1].Value := (NULL);RENaissance спасибо.


syned

форум SQL через дорогу


syned

это касается Delphi средствами SQL эта процедура выполняется без проблем.


syned

поглядте профайлером что шлется на сервер, выполните тот же запрос в QA, сделайте выводы


syned

Какой оригинальный текст ошибки?


syned

Добрый день.у меня такая проблемма: при вызове хранимой процедуры (сервер MS SQL 2005) через TAdoStoredProc, при вставке значения NULL во внешний ключ возникает ошибка, хотя поле может быть NULL.
Ошибка то хоть какая? Телепатов.net


syned

говорит что конфликт внешнего ключа, если вносиш не NULL а нормальное значение, то все работает, в QA и с NULL и со значением работает.


syned

Структуру таблиц и код хранимки в студию.


syned

CREATE TABLE [dbo].[Panel]( [Panel_id] [varchar](15) COLLATE Cyrillic_General_CI_AS NOT NULL, [IsRadio] [bit] NOT NULL, [TestPanel] [bit] NOT NULL, [Password_] [varchar](12) COLLATE Cyrillic_General_CI_AS NULL, [CreateDate] [datetime] NULL DEFAULT (getdate()), [Disabled] [bit] NOT NULL, [Remarks] [varchar](15) COLLATE Cyrillic_General_CI_AS NULL, [SMS] [varchar](45) COLLATE Cyrillic_General_CI_AS NULL, [IsFirePanel] [bit] NOT NULL DEFAULT ((0)), [Central_id] [varchar](15) COLLATE Cyrillic_General_CI_AS NULL, [computer] [varchar](20) COLLATE Cyrillic_General_CI_AS NULL, CONSTRAINT [pk_Panel] PRIMARY KEY CLUSTERED CONSTRAINT [fk_Central] FOREIGN KEY([Central_id]) REFERENCES Central(CREATE PROC [dbo].[addPanel]@pid varchar(15),@cid varchar(15),@t bit,@pass varchar(12),@r varchar(10),@disabled bit,@sms varchar(45),@fire bit,@radio bit,@comp varchar(20)ASinsert into panel (panel_id,isRadio,testPanel,password_,CreateDate,disabled,sms,isFirePanel,Central_id,remarks,computer) values (@pid,@radio,@t,@pass,getDate(),@disabled,@sms,@fire,@cid,@r,@comp)


syned

Ну началось, так глядишь и перетащим сюда всех SQL-щиков.


syned

И в какой поле идет попытка вставить NULL?


syned

Central_id


syned

И все-таки приведите оригинальное сообщение об ошибке.


syned

The INSERT statement conflicted with the FOREIGN KEY constraint fk_Central. The conflict occured in database testDD, table Central, column Central_id


syned

А Вы уверены, что в параметр @cid NULL передается, а не пустая строка?!З.Ы Код заполнения параметров процедуры покажите.


syned

Parameters[1].Value := 'NULL';


syned

Parameters[1].Value := 'NULL';
Вот у Вас и ошибка. Вы передаете не NULL, а строку 'NULL'. Разницу ощущаете?З.Ы Так напишите
Parameters[<b>1</b>].Value := NULL;


syned

в Delphi?так и есть.


syned

Что-то я не понял. Вы привели код, где NULL был в апострофах, а надо без них.


syned

Вот у Вас и ошибка. Вы передаете не NULL, а строку 'NULL'. Разницу ощущаете?З.Ы Так напишите
Parameters[<b>1</b>].Value := NULL;
Posted via ActualForum NNTP Server 1.3
В делфи этот код даже не скомпилируется