From上有一个Button1,一个DataGrid1,想要点击Button1,在DataGrid1里面显示从存储过程返回的数据集里面的数据
CREATE PROCEDURE test1
(@input11 as varchar(10))
AS
SELECT DISTINCT
T_STOCKENTRANCE.ENTRANCENO AS 入库单号,T_STOCKENTRANCE.BILLNO AS 采购订单号,T_STOCKENTRANCE.CHECKNO AS 入库交易号, M_SUPPLIER.SUPPLIERNM AS 供应商名称 ,T_STOCKENTRANCEDETAIL.GOODSCD AS 备件代码, M_GOODS.GOODSNM AS 备件名称,T_STOCKENTRANCE.ENTRANCEDATE AS 入库日期,M_WAREHOUSE.WHCD AS 仓库,M_LOCATION.LOCATIONCD AS 存储区域,M_UNIT.UNITCD AS 库位 ,T_STOCKENTRANCEDETAIL.CASECOUNT AS 实际箱数
,T_STOCKENTRANCEDETAIL.BULKCOUNT AS 实际散件数
,T_STOCKENTRANCEDETAIL.REASON AS 入出库理由
,T_STOCKENTRANCEDETAIL.REFUSECD AS 拒收理由
,M_DEVICE.DEVICENM AS 设备名称, M_OPERATOR.OPERATORNM AS 操作员名称
FROM T_STOCKENTRANCE,T_STOCKENTRANCEDETAIL,M_SUPPLIER,M_GOODS,M_WAREHOUSE ,M_LOCATION,M_UNIT,M_DEVICE,M_OPERATOR
WHERE T_STOCKENTRANCE.SUPPLIERCD = M_SUPPLIER.SUPPLIERCD
AND T_STOCKENTRANCEDETAIL.GOODSCD = M_GOODS.GOODSCD
AND T_STOCKENTRANCEDETAIL.WHCD = M_WAREHOUSE.WHCD
AND T_STOCKENTRANCEDETAIL.LOCATIONCD = M_LOCATION.LOCATIONCD
AND T_STOCKENTRANCEDETAIL.UNITCD = M_UNIT.UNITCD
AND T_STOCKENTRANCE.DEVICECD = M_DEVICE.DEVICECD
AND T_STOCKENTRANCE.OPERATORCD = M_OPERATOR.OPERATORCDreturn 1
GOprocedure TCT1.Button1Click(Sender: TObject);
var
lDataParam1, lDataParam2: TDataParam;
ResultMessage: string;
begin
try
DataSetCCGCSJJ1.StoredProcName := 'dbo.test1';
DataSetCCGCSJJ1.Params.Clear;
lDataParam1 := DataSetCCGCSJJ1.Params.CreateParam(TFieldType.ftCursor, 'Result', TParamType.ptResult);
lDataParam1 := DataSetCCGCSJJ1.Params.CreateParam(TFieldType.ftString, '@input11', TParamType.ptInput);
//lDataParam2 := DataSetCCGCSJJ1.Params.CreateParam(TFieldType.ftDataSet.ftString, '@output11', TParamType.ptOutput);
DataSetCCGCSJJ1.Open;
DataGrid1.DataSource.Dataset := DataSetCCGCSJJ1.Fields[0].DataSet;
//Dialogs.ShowMessage(ResultMessage);
DataSetCCGCSJJ1.close();
finally
lDataParam1.Free;
lDataParam2.Free;
end;
end;
请帮我改改调用的代码,这样写我知道肯定是不对的,并说明说明原因,谢谢!
CREATE PROCEDURE test1
(@input11 as varchar(10))
AS
SELECT DISTINCT
T_STOCKENTRANCE.ENTRANCENO AS 入库单号,T_STOCKENTRANCE.BILLNO AS 采购订单号,T_STOCKENTRANCE.CHECKNO AS 入库交易号, M_SUPPLIER.SUPPLIERNM AS 供应商名称 ,T_STOCKENTRANCEDETAIL.GOODSCD AS 备件代码, M_GOODS.GOODSNM AS 备件名称,T_STOCKENTRANCE.ENTRANCEDATE AS 入库日期,M_WAREHOUSE.WHCD AS 仓库,M_LOCATION.LOCATIONCD AS 存储区域,M_UNIT.UNITCD AS 库位 ,T_STOCKENTRANCEDETAIL.CASECOUNT AS 实际箱数
,T_STOCKENTRANCEDETAIL.BULKCOUNT AS 实际散件数
,T_STOCKENTRANCEDETAIL.REASON AS 入出库理由
,T_STOCKENTRANCEDETAIL.REFUSECD AS 拒收理由
,M_DEVICE.DEVICENM AS 设备名称, M_OPERATOR.OPERATORNM AS 操作员名称
FROM T_STOCKENTRANCE,T_STOCKENTRANCEDETAIL,M_SUPPLIER,M_GOODS,M_WAREHOUSE ,M_LOCATION,M_UNIT,M_DEVICE,M_OPERATOR
WHERE T_STOCKENTRANCE.SUPPLIERCD = M_SUPPLIER.SUPPLIERCD
AND T_STOCKENTRANCEDETAIL.GOODSCD = M_GOODS.GOODSCD
AND T_STOCKENTRANCEDETAIL.WHCD = M_WAREHOUSE.WHCD
AND T_STOCKENTRANCEDETAIL.LOCATIONCD = M_LOCATION.LOCATIONCD
AND T_STOCKENTRANCEDETAIL.UNITCD = M_UNIT.UNITCD
AND T_STOCKENTRANCE.DEVICECD = M_DEVICE.DEVICECD
AND T_STOCKENTRANCE.OPERATORCD = M_OPERATOR.OPERATORCDreturn 1
GOprocedure TCT1.Button1Click(Sender: TObject);
var
lDataParam1, lDataParam2: TDataParam;
ResultMessage: string;
begin
try
DataSetCCGCSJJ1.StoredProcName := 'dbo.test1';
DataSetCCGCSJJ1.Params.Clear;
lDataParam1 := DataSetCCGCSJJ1.Params.CreateParam(TFieldType.ftCursor, 'Result', TParamType.ptResult);
lDataParam1 := DataSetCCGCSJJ1.Params.CreateParam(TFieldType.ftString, '@input11', TParamType.ptInput);
//lDataParam2 := DataSetCCGCSJJ1.Params.CreateParam(TFieldType.ftDataSet.ftString, '@output11', TParamType.ptOutput);
DataSetCCGCSJJ1.Open;
DataGrid1.DataSource.Dataset := DataSetCCGCSJJ1.Fields[0].DataSet;
//Dialogs.ShowMessage(ResultMessage);
DataSetCCGCSJJ1.close();
finally
lDataParam1.Free;
lDataParam2.Free;
end;
end;
请帮我改改调用的代码,这样写我知道肯定是不对的,并说明说明原因,谢谢!
begin
DataSetCCGCSJJ1.StoredProcName := 'test1,1';
DataSetCCGCSJJ1.Parameters.Delete(0);
DataSetCCGCSJJ1.Parameters.Items[0].Value := Edit1.Text;
DataSetCCGCSJJ1.Open;
DataGrid1.DataSource := DataSource1;
end;