我的数据库是这样写得:
CREATE PROCEDURE PRO_AutoLSH ---自动生成单号的存储过程
(
@BX varchar(10), --首字母,可以多个字母
@单号 varchar(20), --表中的流水号列名,最好是主键
@维护报修表 varchar(20) --表名
)
AS
begin
DECLARE @LSHID NVARCHAR(20)
DECLARE @TLSH VARCHAR(20)
DECLARE @NUM INT
DECLARE @sql NVARCHAR(200)
----查询该表最大的流水号
SET @sql='SELECT ISNULL(MAX(CONVERT(INT,SUBSTRING('+@单号+',8,4))),0)+1 FROM '+@维护报修表
--创建临时表
CREATE TABLE TEMP1(TOTAL INT);
--写入查询得到的数据
INSERT INTO TEMP1 EXEC(@sql);
--再查询出值
SET @NUM=(SELECT TOTAL FROM TEMP1)
DROP TABLE TEMP1
--拼接下一个流水号:BX+年份4位+月份2位+4位编号(如J2010120001)
SET @TLSH=@BX+SUBSTRING(CONVERT(VARCHAR(100),GETDATE(),112),1,6)+SUBSTRING(CONVERT(CHAR(5),10000+@NUM),2,4)
SET @sql=''
SET @sql='SELECT @LSH='+''''+@TLSH+''''+' FROM '+@维护报修表
EXEC sp_executesql
@sql,
N'@LSH NVARCHAR(20) OUTPUT',
@LSHID OUTPUT
SELECT @LSHID
end目的是自动生成流水号的单号
我在vs中设计是这样的单号对应的textbox1是只读模式,我想设计一个一打开这个界面textbox1就调用sql中的存储过程自动生成单号,我参考了网上:
执行一个没有参数的存储过程的代码,写了一下:
SqlConnection conn=new SqlConnection(“connectionString”);
SqlDataAdapter da = new SqlDataAdapter();
da.selectCommand = new SqlCommand();
da.selectCommand.Connection = conn;
da.selectCommand.CommandText = "PRO_AutoLSH";
da.selectCommand.CommandType = CommandType.StoredProcedure;
可是依然无法实现textbox1自动生成单号,求大神帮忙解决!~~谢谢!~~SQL存储过程无参数调用
CREATE PROCEDURE PRO_AutoLSH ---自动生成单号的存储过程
(
@BX varchar(10), --首字母,可以多个字母
@单号 varchar(20), --表中的流水号列名,最好是主键
@维护报修表 varchar(20) --表名
)
AS
begin
DECLARE @LSHID NVARCHAR(20)
DECLARE @TLSH VARCHAR(20)
DECLARE @NUM INT
DECLARE @sql NVARCHAR(200)
----查询该表最大的流水号
SET @sql='SELECT ISNULL(MAX(CONVERT(INT,SUBSTRING('+@单号+',8,4))),0)+1 FROM '+@维护报修表
--创建临时表
CREATE TABLE TEMP1(TOTAL INT);
--写入查询得到的数据
INSERT INTO TEMP1 EXEC(@sql);
--再查询出值
SET @NUM=(SELECT TOTAL FROM TEMP1)
DROP TABLE TEMP1
--拼接下一个流水号:BX+年份4位+月份2位+4位编号(如J2010120001)
SET @TLSH=@BX+SUBSTRING(CONVERT(VARCHAR(100),GETDATE(),112),1,6)+SUBSTRING(CONVERT(CHAR(5),10000+@NUM),2,4)
SET @sql=''
SET @sql='SELECT @LSH='+''''+@TLSH+''''+' FROM '+@维护报修表
EXEC sp_executesql
@sql,
N'@LSH NVARCHAR(20) OUTPUT',
@LSHID OUTPUT
SELECT @LSHID
end目的是自动生成流水号的单号
我在vs中设计是这样的单号对应的textbox1是只读模式,我想设计一个一打开这个界面textbox1就调用sql中的存储过程自动生成单号,我参考了网上:
执行一个没有参数的存储过程的代码,写了一下:
SqlConnection conn=new SqlConnection(“connectionString”);
SqlDataAdapter da = new SqlDataAdapter();
da.selectCommand = new SqlCommand();
da.selectCommand.Connection = conn;
da.selectCommand.CommandText = "PRO_AutoLSH";
da.selectCommand.CommandType = CommandType.StoredProcedure;
可是依然无法实现textbox1自动生成单号,求大神帮忙解决!~~谢谢!~~SQL存储过程无参数调用
解决方案 »
- C# 读取excel
- 关于Socket使用中出现到的无法捕捉的异常 困扰了很多天了......
- 如何修改 iis7 applicationhost.config的lcoation节点,在线等
- 一个窗体,怎样不断侦听事件(比如键盘输入),然后当这个事件触发(比如键盘A按下),跳到另一个Form
- 急,问题,求解?
- 如何模拟键盘按键
- WebClient 无法在IIS7.0下上传文件
- 请问:怎么用TreeView控件显示Access数据库里的数据?????
- 又是水晶报表的问题,大伙儿进来指点指点一二。。。
- 难道c#不支持SQL的子查询吗?
- “WindowsFormsApplication1.Form1”的类型初始值设定项引发异常。
- 求winfrom 图片点击放大效果实现...
SqlParameter outputparm = new SqlParameter("@单号",SqlDbType.VarChar,64);
outputparm.Direction = ParameterDirection.IntPutOutput;
commandpbx.Parameters.Add(outputparm);CREATE PROCEDURE PRO_AutoLSH ---自动生成单号的存储过程
(
@BX varchar(10), --首字母,可以多个字母
@单号 varchar(20) output, --表中的流水号列名,最好是主键
@维护报修表 varchar(20) --表名
)
@BX varchar(10), --首字母,可以多个字母
@单号 varchar(20), --表中的流水号列名,最好是主键
@维护报修表 varchar(20) --表名
另外,调用存储过程的话,可以试一下:
SqlParameter BX_Parameter = new SqlParameter("@letter", SqlDbType.VarChar, 10);
BX_Parameter.Value = "BX";
da.SelectCommand.Parameters.Add(BX_Parameter);
SqlParameter DH_Parameter = new SqlParameter("@LSHkey", SqlDbType.VarChar, 20);
DH_Parameter.Value = "单号";
da.SelectCommand.Parameters.Add(DH_Parameter);
SqlParameter WH_Parameter = new SqlParameter("@tablename", SqlDbType.VarChar, 20);
WH_Parameter.Value = "维护报修表";
da.SelectCommand.Parameters.Add(WH_Parameter);
try
{
da.Fill(dataset, "zidongLSH");
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
//return String.Empty;
} string str = "select MAX(单号) FROM 维护报修表";
SqlCommand cmd = new SqlCommand(str, conn);
textBox1.Text=(string) cmd.ExecuteScalar();
@单号 varchar(20), --表中的流水号列名,最好是主键
@维护报修表 varchar(20) 对吗?
"zidongLSH"是什么?