我用SQL Server 2000建立了一个表 TempTable字段为
AuthorID char(10)
AuthorName varchar(20)
然后建立了一个存储过程Search_OnAuthor如下:
CREATE PROCEDURE dbo.Search_OnAuthor
@sAuthorName varChar(20),
@sTempABC varChar(20) Output
AS
set @sTempABC = @sAuthorName
select * from TempTable
where Author like '%'+@sTempABC+'%'
然后做了一个Midas结构的系统
数据库服务器利用TADOStoredProc来连接这个存储过程Search_OnAuthor用TDataSetProvider提供接口
客户端利用TClientDataSet获得接口
下面是调用Search_OnAuthor存储过程的方法:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientDataSet1->Close();
ClientDataSet1->Params->Clear();
ClientDataSet1->Params->CreateParam(ftString, "sAuthorName", ptInput);
ClientDataSet1->Params->CreateParam(ftString, "sTempABC", ptOutput);
ClientDataSet1->Params->ParamByName("sAuthorName")->AsString = AuthorNameEdit->Text;
ClientDataSet1->Params->ParamByName("sTempABC")->AsString = TempEdit->Text;
ClientDataSet1->Active = TRUE;
Edit3->Text = ClientDataSet1->Params->ParamByName("sTempABC")->AsString;
}
//---------------------------------------------------------------------------
发现运行结果不正确:
1.若AuthorNameEdit->Text没有非中文汉字时,Edit3->Text显示的与AuthorNameEdit->Text相同
2.若AuthorNameEdit->Text为中文汉字,Edit3->Text只显示AuthorNameEdit->Text汉字个数的一半.规律如下:
AuthorNameEdit->Text汉字个数 Edit3->Text显示的汉字个数
1 0
2 1
3 1
4 2
5 2
6 3
7 3
请问这是为什么?
系统:Windows 2000 Server,SQL 2000 SP4, C++Builder 6.0 同样的问题,解决不了,请高手帮忙
AuthorID char(10)
AuthorName varchar(20)
然后建立了一个存储过程Search_OnAuthor如下:
CREATE PROCEDURE dbo.Search_OnAuthor
@sAuthorName varChar(20),
@sTempABC varChar(20) Output
AS
set @sTempABC = @sAuthorName
select * from TempTable
where Author like '%'+@sTempABC+'%'
然后做了一个Midas结构的系统
数据库服务器利用TADOStoredProc来连接这个存储过程Search_OnAuthor用TDataSetProvider提供接口
客户端利用TClientDataSet获得接口
下面是调用Search_OnAuthor存储过程的方法:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientDataSet1->Close();
ClientDataSet1->Params->Clear();
ClientDataSet1->Params->CreateParam(ftString, "sAuthorName", ptInput);
ClientDataSet1->Params->CreateParam(ftString, "sTempABC", ptOutput);
ClientDataSet1->Params->ParamByName("sAuthorName")->AsString = AuthorNameEdit->Text;
ClientDataSet1->Params->ParamByName("sTempABC")->AsString = TempEdit->Text;
ClientDataSet1->Active = TRUE;
Edit3->Text = ClientDataSet1->Params->ParamByName("sTempABC")->AsString;
}
//---------------------------------------------------------------------------
发现运行结果不正确:
1.若AuthorNameEdit->Text没有非中文汉字时,Edit3->Text显示的与AuthorNameEdit->Text相同
2.若AuthorNameEdit->Text为中文汉字,Edit3->Text只显示AuthorNameEdit->Text汉字个数的一半.规律如下:
AuthorNameEdit->Text汉字个数 Edit3->Text显示的汉字个数
1 0
2 1
3 1
4 2
5 2
6 3
7 3
请问这是为什么?
系统:Windows 2000 Server,SQL 2000 SP4, C++Builder 6.0 同样的问题,解决不了,请高手帮忙
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货