ADO存储过程

时间:2018-04-11 13:17:26

标签: sql-server delphi

我这里有Delphi 10.2.2,我想我可能会使用错误的东西。

我有一个包含以下参数@etikettnr nvarchar(50)的存储过程 Delphi中的相同过程具有数据类型字符串,大小为50。

由于某些未知原因,如果我从这样的过程传递一个来自FDQuery的String:

DM1.spHISTJUMBO.Parameters.ParamValues['@etikettnr']:=DM1.HISTJUMBOQueryetikettnr.AsString

M1.spHISTJUMBO.Parameters.ParamValues['@etikettnr']:=DM1.HISTJUMBOQueryetikettnr.Value

我得到了

  

nvarchar值的转换' 038843738001'溢出了一个int列错误。

事情是这是一个nvarchar(50) column,这样就可以了。

如果我像这样尝试,我会得到同样的错误

DM1.spHISTJUMBO.Parameters.ParamValues['@etikettnr']:=038843738001

或者

DM1.spHISTJUMBO.Parameters.ParamValues['@etikettnr']:='038843738001';

但有时它会毫无错误地得到低谷。为什么要尝试转换......

知道为什么吗?

谢谢

ALTER procedure [dbo].[spAWBAR_HISTORIE_JUMBO]
(@OP varchar(10),
 @ID int,
 @Auftnr int,
 @Pos int,
 @Menge int,
 @teile_nr int,
 @eingebaut_in int,
 @etikettnr nvarchar(50),
 @esnr int,
 @esname nvarchar(50),
 @gestell nvarchar(50),
 @gestellname nvarchar(50),
 @zustandname nvarchar(50),
 @lastmodzeit datetime2(5),
 @bearbtyp int,
 @smenge int,
 @Location nvarchar(50),
 @DB_YEAR int

enter image description here

我不能相信这让我又来了。存储过程不是问题。该问题之前是一个查询。这样做了: DM1.SyncQuery.SQL.Add('select Auftnr from AWBAR_HISTORIE_JUMBO where Auftnr='+DM1.HISTJUMBOQueryauftnr.AsString+' and Pos='+DM1.HISTJUMBOQuerypos.AsString+' and Etikettnr='+DM1.HISTJUMBOQueryetikettnr.AsString+' and Lastmodzeit='+quotedstr(DM1.HISTJUMBOQuerylastmodzeit.AsString)+' and Location='+quotedstr('Augustdorf')+' and DB_YEAR='+inttostr(CHANGED_ARRAY[i].DB_YEAR));

这不起作用,我忘记了原因,但我之前遇到过这个问题......

我被告知我需要这样做: Qry.SQL.Add('and Gestellname=:Gestellname and Kuid= :kuid and ltrim(rtrim(Gestell)) = :email');

然后 Qry.Parameters.ParamByName('Gestellname').Value := Gestellname; Qry.Parameters.ParamByName('KUID').Value := Kuid; Qry.Parameters.ParamByName('email').Value := email;

粘贴的示例来自我遇到同样问题的另一个程序:)

问题是我认为,由于某些原因,ADOQuery认为这个字段Etikettnr是整数,因为它的第一个记录是nummeric ...

老兄们......这搞砸了我的一天。但是,谢谢你的提示。

1 个答案:

答案 0 :(得分:0)

或只是

and Etikettnr='+quotedstr(DM1.HISTJUMBOQueryetikettnr.AsString)

有时候我会对自己做的蠢事感到惊讶......