请教高手一个关于"存储过程"的小问题(30分)

  • 主题发起人 主题发起人 foofighter
  • 开始时间 开始时间
F

foofighter

Unregistered / Unconfirmed
GUEST, unregistred user!
我要动态使用TStoredProc
却不知道怎么样让数据显示控件(比如我这里的dbchart)引用TStoredProc的字段
dbchart1.Series[0].DataSource := dm.StoredProc1;
Series1.XLabelsSource := dm.StoredProc1.[red]???[/red];
Series1.yvalues.ValueSource := dm.StoredProc1.[red]???[/red];
请高手点拨
 
动态使用TStoredProc好象有问题?
 
TStoredProc返回的是一个数据集,既然是数据集就可以使用Fields属性.
例如:xlabel上显示的是返回数据集的第一个字段;yvalues显示的是返回数据集的
第二个字段,如下:

dbchart1.Series[0].DataSource := dm.AdoStoredProc1;
Series1.XLabelsSource := dm.AdoStoredProc1.fields[1].FieldName ;
Series1.yvalues.ValueSource := dm.AdoStoredProc1.fields[2].FieldName;

如果还有什么问题,我再给你一个例程.
 
一样可以用 dm.AdoStoredProc1.FieldByName(...)
 
我用的是dataAccess里的StoredProc控件
当时觉得StoredProc1和query之间有很多相似的地方
也这样试着用过 好象仍然有问题

 
sorry,上次没看清楚,用的是TADOStoredProc,下面的代码是TStoredProc的.
其中: 数据库名为'test',有一个表,名为't1',存储过程名 GetData,定义为
"create proc GetData @tablename varchar(20) as",我这儿试没有问题.

代码:
  if not Database1.Connected then
    Database1.Connected := True;
  with StoredProc1 do
  begin
    DatabaseName := 'test';
    StoredProcName := 'GetData';
    Params.Clear;
    Params.CreateParam(ftstring,'@tablename',ptInput);
    Params[0].AsString := 't1';
    try
      Open;
    except
    end;
    DataSource1.DataSet := StoredProc1;
    dbchart1.Series[0].DataSource := StoredProc1;
    Series1.XLabelsSource := fields[1].FieldName ;
    Series1.yvalues.ValueSource := fields[2].FieldName;
  end;
 
接受答案了.
 
后退
顶部