Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проапдейтить файл в базе???  [new]
_true_sql_admin_
Guest
Привет!!!

Делаю сохранение файла в базу данных, зааплоадить файл в базу получилось, а вот проапдейтить его в базе, после изменения не получается...
К примеру я сохранил в базу некий test.doc, что бы его отредактировать я его сохраняю на диск, затем через ShellExecute открываю с диска, редактирую файл, сохраняю его, затем передаю в хранимую процедуру:
CREATE PROCEDURE UpdateWorkerAttach
	@WorkerAttachID int,
	@Memo varchar(1024),
	@FileName varchar(255),
	@FileExt varchar(255),
	@FileContent image,
	@ErrorID int Output
AS

	SELECT @ErrorID=0
	DECLARE @AttachID int
	SELECT @AttachID=0
	SELECT @WorkerAttachID=0

	BEGIN TRANSACTION
		
	SELECT @AttachID=WorkerAttachments.AttachmentID FROM WorkerAttachments 
	WHERE 
	WorkerAttachments.ID=@WorkerAttachID

	UPDATE Attachments
	SET 
	FileName=@FileName,
	FileExt=@FileExt,
	FileContent=@FileContent,
	Memo=@Memo
	WHERE 
	ID=@AttachID
			
	IF(@@Error<>0) 
	BEGIN
		SELECT @ErrorID=2
		ROLLBACK TRANSACTION	
	END
	ELSE
	BEGIN
		COMMIT TRANSACTION
	END
GO

Вызов процедуры делаю так на C++ Builder:
bool DataProvider::UpdateRegisterAttach(long _worker_attach_id, AnsiString _name, AnsiString _file_name)
{
bool _result=true;
long _error_id=0;
   try
   {
        AnsiString _f_name=GetFileName(_file_name);
        AnsiString _f_ext=GetFileExt(_file_name);

        provider->UpdateRegisterAttachADOStoredProc->Parameters->ParamByName("@WorkerAttachID")->Value=_worker_attach_id;
        provider->UpdateRegisterAttachADOStoredProc->Parameters->ParamByName("@Memo")->Value=_name;
        provider->UpdateRegisterAttachADOStoredProc->Parameters->ParamByName("@FileName")->Value=_f_name;
        provider->UpdateRegisterAttachADOStoredProc->Parameters->ParamByName("@FileExt")->Value=_f_ext;
        provider->UpdateRegisterAttachADOStoredProc->Parameters->ParamByName("@FileContent")->LoadFromFile(_file_name, ftBlob);

        provider->UpdateRegisterAttachADOStoredProc->ExecProc();

        _error_id=provider->AddRegisterAttachADOStoredProc->Parameters->ParamByName("@ErrorID")->Value;

        if(_error_id!=0)
        {
          _result=false
        };
   }
   catch(...)
   {
        if ( Application->MessageBox("Error execute stored procedure UpdateRegisterAttach.", "Message", MB_OK) == IDOK)
        {
                _result=false;
        };
   };

return _result;
};

В чем может быть проблема?

Спасибо!!!
18 апр 05, 11:53    [1475606]     Ответить | Цитировать Сообщить модератору
 Re: Проапдейтить файл в базе???  [new]
Glory
Member

Откуда:
Сообщений: 104760
В чем может быть проблема?
А чем сейчас проблема ?
18 апр 05, 12:32    [1475776]     Ответить | Цитировать Сообщить модератору
 Re: Проапдейтить файл в базе???  [new]
KOLO-Pokemon
Member

Откуда: Набережные Челны -> Москва
Сообщений: 609
...проапдейтить его в базе, после изменения не получается...
18 апр 05, 12:36    [1475793]     Ответить | Цитировать Сообщить модератору
 Re: Проапдейтить файл в базе???  [new]
Taffy
Member

Откуда:
Сообщений: 20501
Ну скорее всго в таблице нет значений
WHERE
WorkerAttachments.ID=@WorkerAttachID
А он у Вас жестко = 0

Или
WHERE
ID=@AttachID
тоже 0

А где вы изменяете значения этих переменных, я не увидела. :)
18 апр 05, 12:45    [1475839]     Ответить | Цитировать Сообщить модератору
 Re: Проапдейтить файл в базе???  [new]
_true_sql_admin_
Guest
To Taffy>

Спасибо!!!

А то я уже с ума схожу, ща перепроверю!!! Тестил процедуру в QA и забыл убрать :-)
18 апр 05, 13:16    [1475990]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить