SQL :
===========================================
CREATE PROCEDURE dbo.my_quserproject
@qUsername Char(15)
AS
IF @qUsername IS NULL
BEGIN
RAISERROR('Username is empty!',14,1)
RETURN
ENDSELECT a.proj_name FROM tb_proj a, (SELECT c.proj_id FROM tb_userproj c JOIN tb_user d ON c.[user_id] = d.[user_id] WHERE d.[user_name] = @qUsername) b
WHERE a.proj_id = b.proj_id
GO
=========================================================Delphi(server):
=========================================================
procedure Tworkser.Quserproj(const UName: WideString);
begin
adosp_1.Close;
adosp_1.ProcedureName := 'my_quserproject';
adosp_1.Parameters.AddParameter.Name := '@qUsername';
adosp_1.Parameters.ParamValues['@qUsername'] := UName;
adosp_1.Prepared;
adosp_1.ExecProc;
end;=========================================================Client
=========================================================
with DM1 do
begin
Cds_1.Close;
DcomC_1.AppServer.Quserproj(str_login_name);
Cds_1.Open;
dbgrid1.DataSource := ds_1;
=========================================================
dbgrid1 显示为空,sql里可以返回:
==========================================================
proj_name
---------------
HW
Srvate
DDesign
Metek(所影响的行数为 4 行)
============================================================我想在ListBox中列出值该怎么写啊!
===========================================
CREATE PROCEDURE dbo.my_quserproject
@qUsername Char(15)
AS
IF @qUsername IS NULL
BEGIN
RAISERROR('Username is empty!',14,1)
RETURN
ENDSELECT a.proj_name FROM tb_proj a, (SELECT c.proj_id FROM tb_userproj c JOIN tb_user d ON c.[user_id] = d.[user_id] WHERE d.[user_name] = @qUsername) b
WHERE a.proj_id = b.proj_id
GO
=========================================================Delphi(server):
=========================================================
procedure Tworkser.Quserproj(const UName: WideString);
begin
adosp_1.Close;
adosp_1.ProcedureName := 'my_quserproject';
adosp_1.Parameters.AddParameter.Name := '@qUsername';
adosp_1.Parameters.ParamValues['@qUsername'] := UName;
adosp_1.Prepared;
adosp_1.ExecProc;
end;=========================================================Client
=========================================================
with DM1 do
begin
Cds_1.Close;
DcomC_1.AppServer.Quserproj(str_login_name);
Cds_1.Open;
dbgrid1.DataSource := ds_1;
=========================================================
dbgrid1 显示为空,sql里可以返回:
==========================================================
proj_name
---------------
HW
Srvate
DDesign
Metek(所影响的行数为 4 行)
============================================================我想在ListBox中列出值该怎么写啊!
解决方案 »
- 如何在程序文件名下添加其他信息
- 多个label的MouseEnter问题
- 怎么让edit的外形象表格,显示一条固定长度的下划线
- 请问为动态按键创建右键菜单的问题
- 3369064448这种数我用int64都报不是一个有效的整型,那我还能用什么?
- 为什么一个程序里同时打开10个以上数据库连接就出现内存错误!!!!
- 请问这样的SQL语句怎么写?
- 还是StringGrid的问题.请教!
- 李维写的关于Delphi5.x开发电子商务中中的xmlRowSet未定义的一个问题.
- Delphi的TThread可放入缓存,但是缓存内的TThread都是已执行过的
- 100分求解答
- 怎样改变stringgrid中一个特定cell的背景颜色?
=========================================================
procedure Tworkser.Quserproj(const UName: WideString);
begin
adosp_1.Close;
adosp_1.ProcedureName := 'my_quserproject';
adosp_1.Parameters.AddParameter.Name := '@qUsername';
adosp_1.Parameters.ParamValues['@qUsername'] := UName;
adosp_1.Prepared;
adosp_1.Open;//返回结果集用Open
end;=========================================================可为什么还是不行!我试过在APPSERVER上改用EXEC 可在Client上还是得不到
在请教:改成ADOQUERY后如何把结果集加到ListBox中
这样写对不?反正现在报错
==============================================
for I := 0 To clientdataset1.recordcount -1 do
ListBox1.Items.Add(clientdataset1.DataSetField.FieldValues[I]);
begin
ListBox1.Items.Add(clientdataset1.fieldByName('XX').AsString);
clientdataset1.Next;
end
可第一个问题用ADOstorproc,能不能帮忙解决!
function TYxCy_SupplySystemMain.SSExec(const ASPName, ProName: WideString;
ArrPara, ArrValue: OleVariant; out RetOut: WideString): OleVariant;
Var
i:Integer;
AspExec : TADOStoredProc;
AspDSP : TDataSetProvider;
begin
try
RetOut := '';
AspExec := FindComponent('ASP_'+ASPName) as TADOStoredProc;
AspDSP := FindComponent('DSP_'+ASPName) as TDataSetProvider;
AspExec.Connection := ASP_Exec.Connection;
with AspExec,Parameters do
begin
Close;
ProcedureName := ProName;
Refresh;
for i:=0 to 99 do
begin
try VarToStr(ArrPara[i]);
ParamByName(ArrPara[i]).Value := ArrValue[i];
except
break;
end;
end;
Result := AspDSP.Data;
RetOut := Parameters.ParamByName('@vc_ErrMsg').Value;
AspExec.Close;
end;
SetComplete;
except
Result := '应用服务器发生错误';
SetAbort;
end;
end;
with BatchSelDM,AppExec,CDS_BatchSel_Exec do
begin
Data := SSExec('Exec','PTBP_StockSel;1',VarArrayOf(['@dt_BegDate','@dt_EndDate']),VarArrayOf([bsDE_Beg.Text,bsDE_End.Text]),EmptyWideStr);
end;
谢谢你的回复!
你的CODE我不太能看懂,但我会努力看一下!可以的话,你可以看我上面贴的Code有什么问题,可以帮我指一下吗?
=========================================================
procedure Tworkser.Quserproj(const UName: WideString);
begin
adosp_1.Close;
adosp_1.ProcedureName := 'my_quserproject';
adosp_1.Parameters.AddParameter.Name := '@qUsername';
adosp_1.Parameters.ParamValues['@qUsername'] := UName;
adosp_1.Prepared;
adosp_1.ExecProc;
end;申明成一个函数
function Tworkser.Quserproj(const UName: WideString);OleVariant;
begin
adosp_1.Close;
adosp_1.ProcedureName := 'my_quserproject';
adosp_1.Refresh;
adosp_1.Parameters.AddParameter.Name := '@qUsername';
adosp_1.Parameters.ParamValues['@qUsername'] := UName;
adosp_1.Prepared;
adosp_1.ExecProc;
Result := adosp_1.Data;
end
=========================================================
with DM1 do
begin
Cds_1.Close;
DcomC_1.AppServer.Quserproj(str_login_name);
Cds_1.Open;
dbgrid1.DataSource := ds_1;
=========================================================
改为:
Client
=========================================================
with DM1,ClientDataSet1 do
begin
Date := DcomC_1.AppServer.Quserproj(str_login_name);
end;
=========================================================以上两段请自己测试