好像是少了where ,C++的代码看不太懂 AnsiString where="";
if(txtNamePart->Text!="")
{
where+=" where B.gxNamePartB='"+txtNamePart->Text+"'"; //少了where吧?存储过程中没有看到有,这里也没有看到你加
} DataMdl->StorPrcSch->Close();
DataMdl->dsDbgMx->DataSet=DataMdl->StorPrcSch;
DataMdl->StorPrcSch->StoredProcName="zs_Sch";
DataMdl->StorPrcSch->Params->Clear();
DataMdl->StorPrcSch->Params->CreateParam(ftString,"@Where",pdInput);
DataMdl->StorPrcSch->Params->ParamByName("@Where")->Value=where;
DataMdl->StorPrcSch->Prepare();
DataMdl->StorPrcSch->Open();
if(txtNamePart->Text!="")
{
where+=" where B.gxNamePartB='"+txtNamePart->Text+"'"; //少了where吧?存储过程中没有看到有,这里也没有看到你加
} DataMdl->StorPrcSch->Close();
DataMdl->dsDbgMx->DataSet=DataMdl->StorPrcSch;
DataMdl->StorPrcSch->StoredProcName="zs_Sch";
DataMdl->StorPrcSch->Params->Clear();
DataMdl->StorPrcSch->Params->CreateParam(ftString,"@Where",pdInput);
DataMdl->StorPrcSch->Params->ParamByName("@Where")->Value=where;
DataMdl->StorPrcSch->Prepare();
DataMdl->StorPrcSch->Open();
呵呵,是少了where
但是我加上了之后还是错误
假如:
DataMdl->StorPrcSch->Params->ParamByName("@Where")->Value=" where B.gxNamePartB='明仕'";则顺利通过
如果改成:
DataMdl->StorPrcSch->Params->ParamByName("@Where")->Value=" where B.gxNamePartB='明仕二代一字标'";则出错:字符串‘明仕二代一’之前有未闭合的引号。
什么原因呢?
字段gxNamePartB长度设为40,不应该是它的问题呀
declare @sql nvarchar(4000)
但是到底是怎么形成的呢
ADOStoredProc1->Parameters->CreateParameter("@Where",ftString,pdInput,32,NULL);
里的32的长度!,它说的是你创建"@Where"的长度,把它改大些再试
我改成了80就好了。
在这里特别感谢3996906(以后再说)孜孜不倦的对我热心帮助,也感谢各位帮助我的朋友,以及被我惊动了的那些老大。
虽然分少了一点,但我肯定给分!!