为什么我的存储过程老出错误!在delphi下(在查询分析器中是正确的)
表 如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BankBill]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[BankBill]
GOCREATE TABLE [dbo].[BankBill] (
[SquNum] [int] IDENTITY (1, 1) NOT NULL ,
[DealDate] [datetime] NULL ,
[Debit] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Lend] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[AccountName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[AccountNo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Auditinged] [bit] NOT NULL
) ON [PRIMARY]
GO存储过程如下:
CREATE procedure writeBankBill
(
@AccountNo varchar(50),
@AccountName varchar(50),
@DealDate Datetime,
@Debit varchar(50),
@Lend varchar(50)
)
AS
insert into BankBill(AccountNo, AccountName, DealDate, Debit, Lend)
values(@AccountNo, @AccountName, @DealDate, @Debit, @Lend)
GOdelphi中调用存储过程如下:procedure TDModule.InsertDataToBankBill(const DealDate:TDatetime; const AccountNo,AccountName,Lend,Debit:String);
var
tempParameter: TParameter;
begin
with DModule.Strpre do
begin
if Active then Close; ProcedureName:='ReadFromExcelAndWriteToBankBill';
Try
Parameters.Clear; tempParameter:=Parameters.AddParameter;
tempParameter.Name:='@DealDate';
tempParameter.DataType:= ftDateTime;
tempParameter.Direction:=PdInput;
tempParameter.Value:= DealDate; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@AccountNo';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=AccountNo; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@AccountName';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=AccountName; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@Lend';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=Lend; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@Debit';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=Debit; ExecProc;
finally
Close;
end;
end;end;
表 如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BankBill]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[BankBill]
GOCREATE TABLE [dbo].[BankBill] (
[SquNum] [int] IDENTITY (1, 1) NOT NULL ,
[DealDate] [datetime] NULL ,
[Debit] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Lend] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[AccountName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[AccountNo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Auditinged] [bit] NOT NULL
) ON [PRIMARY]
GO存储过程如下:
CREATE procedure writeBankBill
(
@AccountNo varchar(50),
@AccountName varchar(50),
@DealDate Datetime,
@Debit varchar(50),
@Lend varchar(50)
)
AS
insert into BankBill(AccountNo, AccountName, DealDate, Debit, Lend)
values(@AccountNo, @AccountName, @DealDate, @Debit, @Lend)
GOdelphi中调用存储过程如下:procedure TDModule.InsertDataToBankBill(const DealDate:TDatetime; const AccountNo,AccountName,Lend,Debit:String);
var
tempParameter: TParameter;
begin
with DModule.Strpre do
begin
if Active then Close; ProcedureName:='ReadFromExcelAndWriteToBankBill';
Try
Parameters.Clear; tempParameter:=Parameters.AddParameter;
tempParameter.Name:='@DealDate';
tempParameter.DataType:= ftDateTime;
tempParameter.Direction:=PdInput;
tempParameter.Value:= DealDate; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@AccountNo';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=AccountNo; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@AccountName';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=AccountName; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@Lend';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=Lend; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@Debit';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=Debit; ExecProc;
finally
Close;
end;
end;end;
解决方案 »
- 請教各位高手:Delphi 的 Object 管理機制是怎麼樣的。為什麼這個代碼不出錯?
- 关于TidSMTP开发邮件问题(delphi自带的案例)
- 大家有没有dspack的demo或中文资料,发给小弟点,先谢谢拉
- 在MIDAS中使用DCOM或SOCKET连接方式,能否用在INTERNET上?
- 有個報表想問大家
- 终于在网上找到了一个可以完全反编译(生成pas文件)的软件!!!
- 如何每次将新添加到数据库的记录移到最底部? 就好像写字一样. 急, pls help!!!
- (如图)delphi中有关开发的一个问题。请大哥给出思路代码。
- 闹鬼啦~~~~~~~~~~
- Delphi 如何计算DBGridEH 列 = 列值+文本框值
- 带参数存储过程使用问题,请高手执教!
- 一个关于客户端问题 在线等
服务器: 消息 515,级别 16,状态 2,过程 writeBankBill,行 12
无法将 NULL 值插入列 'Auditinged',表 'BPS.dbo.BankBill';该列不允许空值。INSERT 失败。
语句已终止。
CREATE procedure ReadFromExcelAndWriteToBankBill
(
@AccountNo varchar(50),
@AccountName varchar(50),
@DealDate Datetime,
@Debit varchar(50),
@Lend varchar(50)
)
AS
insert into BankBill(AccountNo, AccountName, DealDate, Debit, Lend)
values(@AccountNo, @AccountName, @DealDate, @Debit, @Lend)
GO
无法将 NULL 值插入列 'Auditinged',表 'BPS.dbo.BankBill';该列不允许空值。INSERT 失败。
语句已终止。
你得存储过程有问题
exec ReadFromExcelAndWriteToBankBill '1','1','2004-01-01','1','1'
表 如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BankBill]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[BankBill]
GOCREATE TABLE [dbo].[BankBill] (
[SquNum] [int] IDENTITY (1, 1) NOT NULL ,
[DealDate] [datetime] NULL ,
[Debit] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Lend] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[AccountName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[AccountNo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Auditinged] [bit] NOT NULL --该字段默认值为 0
) ON [PRIMARY]
GO存储过程如下:
CREATE procedure ReadFromExcelAndWriteToBankBill
(
@AccountNo varchar(50),
@AccountName varchar(50),
@DealDate Datetime,
@Debit varchar(50),
@Lend varchar(50)
)
AS
insert into BankBill(AccountNo, AccountName, DealDate, Debit, Lend)
values(@AccountNo, @AccountName, @DealDate, @Debit, @Lend)
GO
delphi中调用存储过程如下:procedure TDModule.InsertDataToBankBill(const DealDate:TDatetime; const AccountNo,AccountName,Lend,Debit:String);
var
tempParameter: TParameter;
begin
with DModule.Strpre do
begin
if Active then Close; ProcedureName:='ReadFromExcelAndWriteToBankBill';
Try
Parameters.Clear; tempParameter:=Parameters.AddParameter;
tempParameter.Name:='@DealDate';
tempParameter.DataType:= ftDateTime;
tempParameter.Direction:=PdInput;
tempParameter.Value:= DealDate; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@AccountNo';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=AccountNo; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@AccountName';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=AccountName; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@Lend';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=Lend; tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@Debit';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=Debit; ExecProc;
finally
Close;
end;
end;end;
tempParameter.Name:='@AccountNo';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=AccountNo;tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@AccountName';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=AccountName;tempParameter:=Parameters.AddParameter;
tempParameter.Name:='@DealDate';
tempParameter.DataType:= ftDateTime;
tempParameter.Direction:=PdInput;
tempParameter.Value:= DealDate;tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@Debit';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=Debit;tempParameter:=Parameters.AddParameter ;
tempParameter.Name:='@Lend';
tempParameter.DataType:= ftString;
tempParameter.Direction:=PdInput;
tempParameter.Value:=Lend;
好 了 谢谢