ADOStoredProc 执行存储过程以后怎么样取得结果? ADOStoredProc.open();以后怎么样取得结果?又怎样取得存储过程中的output值? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用DataSource+DBGrid 不就可以取得了! 赋完参数以后OPEN ADOStoredProc 然后就可以提它的数据出来了呀,TABLE一样的,不过你一定要现在存储过程里先把你想提的数据SELECT出来 下面的搞定 output 参数:function TMonitor.Login(UserName, Password: string): Boolean;begin try ADOStoredProc := TADOStoredProc.Create(nil); ADOStoredProc.Connection := ADOConnection; ADOStoredProc.ProcedureName := 'sp_Monitors_Login'; ADOStoredProc.Parameters.CreateParameter('UserName', ftString, pdInput, 20, UserName); ADOStoredProc.Parameters.CreateParameter('Password', ftString, pdInput, 20, Password); ADOStoredProc.Parameters.CreateParameter('Result', ftBoolean, pdReturnValue, 1, 0); ADOStoredProc.Prepared := True; ADOStoredProc.ExecProc; Result := ADOStoredProc.Parameters.ParamByName('Result').Value; finally ADOStoredProc.Free; end;end; 下面的搞定 返回的记录集procedure TfrmMain.TwoDatasetReturn;var i, j: Integer; dsGroupTree: TADODataSet; dsAccountGroups: TADODataSet; Rows: OLEVariant;begin //填充分组列表 ClearTreeView(tvGroups); dsAccountGroups := nil; dsGroupTree := nil; try dsGroupTree := TADODataSet.Create(nil); dsAccountGroups := TADODataSet.Create(nil); dsGroupTree.Connection := ADOConn1; dsGroupTree.CommandText := 'sp_Groups_Tree'; dsGroupTree.CommandType := cmdStoredProc; dsGroupTree.Open; //dsGroupTree.RecordCount; //OK dsAccountGroups.Recordset := dsGroupTree.Recordset.NextRecordset(Rows); //dsAccountGroups.RecordCount; //OK //TopGroup.GroupID := dsGroupTree.Recordset.Fields.Item['TopGroupID'].Value; finally dsAccountGroups.Recordset.Close; dsAccountGroups.Close; dsGroupTree.Close; dsGroupTree.Free; end; ADOStoredProc 本身就是个Dataset 要这么烦的吗? 如是要取得返回值同意 Highhat(Highhat) . 多谢多谢,感激感激。各位大哥辛苦了。主要是Highhat大哥让我明白了整个过程。谢谢。 控件输入问题? 如何改变dxdbgrid符合条件的cell背景颜色 如何统计字符串占用字节数的问题????紧急求救? 在模态对话框中调用showmessage导致直接返回主窗口,如何解决? 添加打印机中devmode的问题 时间提取的文题 一个很急的问题,请大家帮忙丫! 如何在delphi中实现对blob类型的存储 有谁有关于DBIMAGE的显示和存储的例子吗?谢了! delphi 关于动态连接库的问题(紧急呼救) 小问题:如何取得ADOQuery的查询返回结果集,如何判断结果为空?/代码如下: COM-DLL中引用ADO、TQuery等数据库连接操作对象如何设置?
然后就可以提它的数据出来了呀,TABLE一样的,不过你一定要现在存储过程里先把你想提的数据SELECT出来
function TMonitor.Login(UserName, Password: string): Boolean;
begin
try
ADOStoredProc := TADOStoredProc.Create(nil);
ADOStoredProc.Connection := ADOConnection; ADOStoredProc.ProcedureName := 'sp_Monitors_Login';
ADOStoredProc.Parameters.CreateParameter('UserName', ftString, pdInput, 20, UserName);
ADOStoredProc.Parameters.CreateParameter('Password', ftString, pdInput, 20, Password);
ADOStoredProc.Parameters.CreateParameter('Result', ftBoolean, pdReturnValue, 1, 0); ADOStoredProc.Prepared := True;
ADOStoredProc.ExecProc;
Result := ADOStoredProc.Parameters.ParamByName('Result').Value;
finally
ADOStoredProc.Free;
end;
end;
var
i, j: Integer;
dsGroupTree: TADODataSet;
dsAccountGroups: TADODataSet;
Rows: OLEVariant;begin
//填充分组列表
ClearTreeView(tvGroups); dsAccountGroups := nil;
dsGroupTree := nil;
try
dsGroupTree := TADODataSet.Create(nil);
dsAccountGroups := TADODataSet.Create(nil); dsGroupTree.Connection := ADOConn1;
dsGroupTree.CommandText := 'sp_Groups_Tree';
dsGroupTree.CommandType := cmdStoredProc;
dsGroupTree.Open;
//dsGroupTree.RecordCount; //OK
dsAccountGroups.Recordset := dsGroupTree.Recordset.NextRecordset(Rows);
//dsAccountGroups.RecordCount; //OK
//TopGroup.GroupID := dsGroupTree.Recordset.Fields.Item['TopGroupID'].Value;
finally
dsAccountGroups.Recordset.Close;
dsAccountGroups.Close;
dsGroupTree.Close;
dsGroupTree.Free;
end;
各位大哥辛苦了。主要是Highhat大哥让我明白了整个过程。
谢谢。