0

Item_Order列のあるテーブルがあります

orderId, clintName, companyName, itemName, orderDate, qauntity, clintId_FK, itemId_FK, status

ここでclintId_FK、およびはそれぞれおよびテーブルitem_FKの主キーです。ClintItem_Configuration

Item_Orderテーブルにレコードを挿入するためのストアドプロシージャを作成しました。すなわち

ALTER PROCEDURE [dbo].[Order_Create_SP]
@orderId varchar(50),
@clintName varchar(50),
@companyName varchar(50),
@itemName  varchar(50),
@orderDate datetime,
@qauntity int,
@status char(10),
@operation int

AS
DECLARE @id1 varchar(50)
DECLARE @id2 varchar(50)
BEGIN
SET NOCOUNT ON;

if @operation = 0
BEGIN

SELECT top(1)@id1 = clintId FROM dbo.Clint order by clintId desc
select top(1)@id2 =  itemId from dbo.Item_Configuration order by itemId desc

insert into Item_Order(orderId, clintName, companyName, itemName, orderDate, qauntity, clintId_FK, itemId_FK, status)
 values(@orderId, @clintName, @companyName, @itemName, @orderDate, @qauntity, @id1, @id2, 'OPEN')

END
END

私のC#コードは

private void btnOrder_Click(object sender, EventArgs e)
{
        SqlConnection conn1 = new SqlConnection();
        try
        {
            SqlCommand inserOrder= new SqlCommand("Order_Create_SP", conn1);
            inserOrder.CommandType = CommandType.StoredProcedure;

            inserOrder.Parameters.Add("@orderId", SqlDbType.VarChar);
            inserOrder.Parameters["@orderId"].Value = oredrId.Text;

            inserOrder.Parameters.Add("@clintName", SqlDbType.VarChar);
            inserOrder.Parameters["@clintName"].Value = comboClint.Text;

            inserOrder.Parameters.Add("@itemName", SqlDbType.VarChar);
            inserOrder.Parameters["@itemName"].Value = comboItem.Text;

            inserOrder.Parameters.Add("@orderDate", SqlDbType.DateTime);

          inserOrder.Parameters["@orderDate"].Value=Convert.ToDateTime(orderDate.Text);
          inserOrder.Parameters.Add("@qauntity", SqlDbType.Int);
            inserOrder.Parameters["@qauntity"].Value = Convert.ToInt32(qauntity.Text);

            inserOrder.Parameters.Add("@stauts", SqlDbType.VarChar);
            inserOrder.Parameters["@stauts"].Value = "OPEN";

            inserOrder.Parameters.Add("@companyName", SqlDbType.VarChar);
            inserOrder.Parameters["@companyName"].Value = companyName.Text;

            inserOrder.Parameters.Add("@operation", SqlDbType.VarChar);
            inserOrder.Parameters["@operation"].Value = 0;

            inserOrder.ExecuteNonQuery();

互換性のないことをしていますか?正しく動作していません。助けてください。

ありがとうございました。

4

1 に答える 1

0

これが問題かどうかはわかりませんがWHERE、外部キーを検索するときにストアドプロシージャに句がありません。次のようなものに変更してみてください

SELECT top(1)@id1 = clintId FROM dbo.Clint WHERE Name = @clintName order by clintId desc
SELECT top(1)@id2 =  itemId from dbo.Item_Configuration WHERE name = @itemName order by itemId desc
于 2012-07-24T16:54:26.977 に答える