Problemas ao gravar arquivo PDF banco de dados Sql server TADOQuery Stored Procedure

06/03/2013

3

Bom dia pessoal estou com um probleminha quando vou salvar Msg de erro "valor de caractere inválido para especificação de coerção"

Tabela sql server 2008

create table [dbo].[MOV_PNEUS](
[MOV_ID] [UNIQUEIDENTIFIER]ROWGUIDCOL NOT NULL DEFAULT(NEWID()) UNIQUE ,
[ID_MOV] int PRIMARY KEY,
[MOV_DATA]DATETIME NOT NULL DEFAULT(GETDATE()),
[MOV_RESPONSAVEL] VARCHAR(50)NOT NULL,
[MOV_OS]VARCHAR (50)NOT NULL,
[FROM_PROJETO] VARCHAR (50) NOT NULL,
[FROM_LOCACAO] VARCHAR (50) NOT NULL,
[FROM_EQUIPAMENTO]VARCHAR(50) NOT NULL,
[FROM_HORIMETRO] NUMERIC(9,1)NOT NULL,
[FROM_POSICAO] VARCHAR(50) NOT NULL,
[FROM_PNEU_FOGO]NUMERIC(9,0) NOT NULL,
[FROM_MEDIDA] NUMERIC(9,1)NOT NULL,
[FROM_VIDA] VARCHAR (50) NOT NULL,
[FROM_CONDICAO] VARCHAR(50) NOT NULL,
[FROM_DIMENSAOATUAL] NUMERIC(9,1) NOT NULL,
[FROM_CAUSA]VARCHAR (50) NOT NULL,
[FROM_ANEXO] VARBINARY(MAX) FILESTREAM,
[FROM_OBS] VARCHAR (50));
GO

Procedure

ALTER PROC [dbo].[MOV_PNEUS_I](
@TIPO char(1),
@MOV_ID UNIQUEIDENTIFIER,
@MOV_DATA datetime,
@MOV_RESPONSAVEL varchar(50),
@MOV_OS varchar(50),
@FROM_PROJETO varchar(50),
@FROM_LOCACAO varchar(50),
@FROM_EQUIPAMENTO VARCHAR(50),
@FROM_HORIMETRO numeric(9,1),
@FROM_POSICAO varchar(50),
@FROM_PNEU_FOGO numeric(9,0),
@FROM_MEDIDA numeric(9,2),
@FROM_VIDA varchar(50),
@FROM_CONDICAO varchar(50),
@FROM_DIMENSAOATUAL numeric(9,2),
@FROM_CAUSA varchar(50),
@FROM_ANEXO varbinary(max),
@FROM_OBS varchar(50))
AS
BEGIN
IF @TIPO = 'I'
INSERT INTO MOV_PNEUS VALUES (
@MOV_ID,
@MOV_DATA,
@MOV_RESPONSAVEL,
@MOV_OS,
@FROM_PROJETO,
@FROM_LOCACAO,
@FROM_EQUIPAMENTO,
@FROM_HORIMETRO,
@FROM_POSICAO,
@FROM_PNEU_FOGO,
@FROM_MEDIDA,
@FROM_VIDA,
@FROM_CONDICAO,
@FROM_DIMENSAOATUAL,
@FROM_CAUSA,
@FROM_ANEXO,
@FROM_OBS)
END;


Aplicação delphi

procedure TfrmMovPneus.actsalvarExecute(Sender: TObject);
begin
with DMsql.spMovPneus do
begin
Parameters[0].Value:=0; // Return Value
Parameters[1].Value:='I';
Parameters[2].value:= ; // Estou com problemas nesta linha o valar seria 'NewId'
Parameters[3].Value:=eddata.Text;
Parameters[4].Value:=edresponsavel.Text;
Parameters[5].Value:=edos.Text;
Parameters[6].Value:=edprojeto2.Text;
Parameters[7].Value:=edlocacao2.Text;
Parameters[8].Value:=edequipamento2.Text;
Parameters[9].Value:=edhorimetro2.Text;
Parameters[10].Value:=edposicao2.Text;
Parameters[11].Value:=edpneu.Text;
Parameters[12].Value:=edmedida.Text;
Parameters[13].Value:=edvida2.Text;
Parameters[14].Value:=edcondicao2.Text;
Parameters[15].Value:=eddimensao2.Text;
Parameters[16].Value:=edcausa.Text;
Parameters[17].Value:=openDialog1.GetNamePath; // e nesta eu utilizo o opendialog1 para abrir o arquivo para ser salvo...
Parameters[18].value:=edobs.Text;
execProc;
begin
eddata.Clear;
edresponsavel.Clear;
edos.Clear;
edhorimetro2.Clear;
eddimensao2.Clear;
edanexo.Clear;
edobs.Clear;
Application.MessageBox('Cadastro efetuado com sucesso!','Confirmação',mb_Ok+mb_IconInformation);
DMsql.AdoQryCadEquip.Close;
DMsql.AdoQryCadEquip.open;

edresponsavel.SetFocus;
end;
end;
end;

procedure TfrmMovPneus.edanexoClick(Sender: TObject);
begin
if OpenDialog1.Execute then
edanexo.Text:=(OpenDialog1.FileName)
else
ShowMessage('Selecione um Arquivo!!!');
end;

Alguem poderia me ajudar ...?
Responder

Posts

06/03/2013

Fábio Roell

Bom dia pessoal estou com um probleminha quando vou salvar Msg de erro "valor de caractere inválido para especificação de coerção"

Tabela sql server 2008

create table [dbo].[MOV_PNEUS](
[MOV_ID] [UNIQUEIDENTIFIER]ROWGUIDCOL NOT NULL DEFAULT(NEWID()) UNIQUE ,
[ID_MOV] int PRIMARY KEY,
[MOV_DATA]DATETIME NOT NULL DEFAULT(GETDATE()),
[MOV_RESPONSAVEL] VARCHAR(50)NOT NULL,
[MOV_OS]VARCHAR (50)NOT NULL,
[FROM_PROJETO] VARCHAR (50) NOT NULL,
[FROM_LOCACAO] VARCHAR (50) NOT NULL,
[FROM_EQUIPAMENTO]VARCHAR(50) NOT NULL,
[FROM_HORIMETRO] NUMERIC(9,1)NOT NULL,
[FROM_POSICAO] VARCHAR(50) NOT NULL,
[FROM_PNEU_FOGO]NUMERIC(9,0) NOT NULL,
[FROM_MEDIDA] NUMERIC(9,1)NOT NULL,
[FROM_VIDA] VARCHAR (50) NOT NULL,
[FROM_CONDICAO] VARCHAR(50) NOT NULL,
[FROM_DIMENSAOATUAL] NUMERIC(9,1) NOT NULL,
[FROM_CAUSA]VARCHAR (50) NOT NULL,
[FROM_ANEXO] VARBINARY(MAX) FILESTREAM,
[FROM_OBS] VARCHAR (50));
GO

Procedure

ALTER PROC [dbo].[MOV_PNEUS_I](
@TIPO char(1),
@MOV_ID UNIQUEIDENTIFIER,
@MOV_DATA datetime,
@MOV_RESPONSAVEL varchar(50),
@MOV_OS varchar(50),
@FROM_PROJETO varchar(50),
@FROM_LOCACAO varchar(50),
@FROM_EQUIPAMENTO VARCHAR(50),
@FROM_HORIMETRO numeric(9,1),
@FROM_POSICAO varchar(50),
@FROM_PNEU_FOGO numeric(9,0),
@FROM_MEDIDA numeric(9,2),
@FROM_VIDA varchar(50),
@FROM_CONDICAO varchar(50),
@FROM_DIMENSAOATUAL numeric(9,2),
@FROM_CAUSA varchar(50),
@FROM_ANEXO varbinary(max),
@FROM_OBS varchar(50))
AS
BEGIN
IF @TIPO = 'I'
INSERT INTO MOV_PNEUS VALUES (
@MOV_ID,
@MOV_DATA,
@MOV_RESPONSAVEL,
@MOV_OS,
@FROM_PROJETO,
@FROM_LOCACAO,
@FROM_EQUIPAMENTO,
@FROM_HORIMETRO,
@FROM_POSICAO,
@FROM_PNEU_FOGO,
@FROM_MEDIDA,
@FROM_VIDA,
@FROM_CONDICAO,
@FROM_DIMENSAOATUAL,
@FROM_CAUSA,
@FROM_ANEXO,
@FROM_OBS)
END;


Aplicação delphi

procedure TfrmMovPneus.actsalvarExecute(Sender: TObject);
begin
with DMsql.spMovPneus do
begin
Parameters[0].Value:=0; // Return Value
Parameters[1].Value:='I';
Parameters[2].value:= ; // Estou com problemas nesta linha o valar seria 'NewId'
Parameters[3].Value:=eddata.Text;
Parameters[4].Value:=edresponsavel.Text;
Parameters[5].Value:=edos.Text;
Parameters[6].Value:=edprojeto2.Text;
Parameters[7].Value:=edlocacao2.Text;
Parameters[8].Value:=edequipamento2.Text;
Parameters[9].Value:=edhorimetro2.Text;
Parameters[10].Value:=edposicao2.Text;
Parameters[11].Value:=edpneu.Text;
Parameters[12].Value:=edmedida.Text;
Parameters[13].Value:=edvida2.Text;
Parameters[14].Value:=edcondicao2.Text;
Parameters[15].Value:=eddimensao2.Text;
Parameters[16].Value:=edcausa.Text;
Parameters[17].Value:=openDialog1.GetNamePath; // e nesta eu utilizo o opendialog1 para abrir o arquivo para ser salvo...
Parameters[18].value:=edobs.Text;
execProc;
begin
eddata.Clear;
edresponsavel.Clear;
edos.Clear;
edhorimetro2.Clear;
eddimensao2.Clear;
edanexo.Clear;
edobs.Clear;
Application.MessageBox('Cadastro efetuado com sucesso!','Confirmação',mb_Ok+mb_IconInformation);
DMsql.AdoQryCadEquip.Close;
DMsql.AdoQryCadEquip.open;

edresponsavel.SetFocus;
end;
end;
end;

procedure TfrmMovPneus.edanexoClick(Sender: TObject);
begin
if OpenDialog1.Execute then
edanexo.Text:=(OpenDialog1.FileName)
else
ShowMessage('Selecione um Arquivo!!!');
end;

Alguem poderia me ajudar ...?



Encontrei o erro....agora falta gravar o arquivo pdf e extrair com aplicação delphi o arquivo do banco de dados?

ALTER PROC [dbo].[MOV_PNEUS_I](
@TIPO char(1),
@MOV_ID UNIQUEIDENTIFIER,
@MOV_DATA datetime,
@MOV_RESPONSAVEL varchar(50),
@MOV_OS varchar(50),
@FROM_PROJETO varchar(50),
@FROM_LOCACAO varchar(50),
@FROM_EQUIPAMENTO VARCHAR(50),
@FROM_HORIMETRO numeric(9,1),
@FROM_POSICAO varchar(50),
@FROM_PNEU_FOGO numeric(9,0),
@FROM_MEDIDA numeric(9,2),
@FROM_VIDA varchar(50),
@FROM_CONDICAO varchar(50),
@FROM_DIMENSAOATUAL numeric(9,2),
@FROM_CAUSA varchar(50),
@FROM_ANEXO varbinary(max),
@FROM_OBS varchar(50))
AS
BEGIN
IF @TIPO = 'I'
INSERT INTO MOV_PNEUS VALUES (
NEWID(), --- Erro encontrado "@MOV_ID" modificado por "NEWID()"
@MOV_DATA,
@MOV_RESPONSAVEL,
@MOV_OS,
@FROM_PROJETO,
@FROM_LOCACAO,
@FROM_EQUIPAMENTO,
@FROM_HORIMETRO,
@FROM_POSICAO,
@FROM_PNEU_FOGO,
@FROM_MEDIDA,
@FROM_VIDA,
@FROM_CONDICAO,
@FROM_DIMENSAOATUAL,
@FROM_CAUSA,
@FROM_ANEXO,
@FROM_OBS)
END;


procedure TfrmMovPneus.actsalvarExecute(Sender: TObject);
begin
with DMsql.spMovPneus do
begin
Parameters[0].Value:=0; // Return Value
Parameters[1].Value:='I';
(* Parameters[2].value:= ;este parametro não é incluido, pois a função NEWID da procedure executa automaticamente*)
Parameters[3].Value:=eddata.Text;
Parameters[4].Value:=edresponsavel.Text;
Parameters[5].Value:=edos.Text;
Parameters[6].Value:=edprojeto2.Text;
Parameters[7].Value:=edlocacao2.Text;
Parameters[8].Value:=edequipamento2.Text;
Parameters[9].Value:=edhorimetro2.Text;
Parameters[10].Value:=edposicao2.Text;
Parameters[11].Value:=edpneu.Text;
Parameters[12].Value:=edmedida.Text;
Parameters[13].Value:=edvida2.Text;
Parameters[14].Value:=edcondicao2.Text;
Parameters[15].Value:=eddimensao2.Text;
Parameters[16].Value:=edcausa.Text;
Parameters[17].Value:=openDialog1.GetNamePath; // Alguem poderia me dizer se este parametro esta correto com opendialog1 para abrir o arquivo para ser salvo...
Parameters[18].value:=edobs.Text;
execProc;
begin
eddata.Clear;
edresponsavel.Clear;
edos.Clear;
edhorimetro2.Clear;
eddimensao2.Clear;
edanexo.Clear;
edobs.Clear;
Application.MessageBox('Cadastro efetuado com sucesso!','Confirmação',mb_Ok+mb_IconInformation);
DMsql.AdoQryCadEquip.Close;
DMsql.AdoQryCadEquip.open;

edresponsavel.SetFocus;
end;
end;
end;


fico no aguardo...
Responder