首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

ADOQuery的一个有关问题,各位大大帮帮忙.

2012-02-21 
ADOQuery的一个问题,各位大大帮帮忙...C/C++ codeString no Label3-CaptionString date Label2-Cap

ADOQuery的一个问题,各位大大帮帮忙...

C/C++ code
String no = Label3->Caption;String date = Label2->Caption;String content = Memo1->Lines->GetText();String amount =  Form1->Edit1->Text;String chief = Edit1->Text;String accounting = Edit2->Text;String cashier = Edit3->Text;String charge = Edit4->Text;try{ADOConnection1->Open();ADOQuery1->SQL->Clear();ADOQuery1->Parameters->Clear();ADOQuery1->Parameters->CreateParameter("p0",ftString,pdInput,20,NULL);ADOQuery1->Parameters->CreateParameter("p1",ftString,pdInput,20,NULL);ADOQuery1->Parameters->CreateParameter("p2",ftString,pdInput,200,NULL);ADOQuery1->Parameters->CreateParameter("p3",ftString,pdInput,20,NULL);ADOQuery1->Parameters->CreateParameter("p4",ftString,pdInput,20,NULL);ADOQuery1->Parameters->CreateParameter("p5",ftString,pdInput,20,NULL);ADOQuery1->Parameters->CreateParameter("p6",ftString,pdInput,20,NULL);ADOQuery1->Parameters->CreateParameter("p7",ftString,pdInput,20,NULL);String sql="insert into receipt values(:p0,:p1,:p2,:p3,:p4,:p5,:p6,:p7)";//ADOQuery1->Parameters->ParamByName("p2")->Value=1;ADOQuery1->Parameters->ParamByName("p0")->Value=no;ADOQuery1->Parameters->ParamByName("p1")->Value=date;ADOQuery1->Parameters->ParamByName("p2")->Value=content;ADOQuery1->Parameters->ParamByName("p3")->Value=amount;ADOQuery1->Parameters->ParamByName("p4")->Value=chief;ADOQuery1->Parameters->ParamByName("p5")->Value=accounting;ADOQuery1->Parameters->ParamByName("p6")->Value=cashier;ADOQuery1->Parameters->ParamByName("p7")->Value=charge;ShowMessage(sql);ADOQuery1->SQL->Add(sql);ADOQuery1->ExecSQL();ADOQuery1->Close();ADOConnection1->Close();}catch(Exception &E){ShowMessage(E.Message);}


执行时总是提示"至少有一个参数没有被指定值","ADOQuery1->Parameters->ParamByName("p0")->"打开这里的时候后面Value是没有提示出来的,我直接赋值ADOQuery1->Parameters->ParamByName("p0")->Value=1之类的也是一样的提示,我用的是BCB6.0,在XP和win7下都试过了...我以前在XP下用过是有提示后面Value的,而且运行没有问题,现在不知道是什么问题,请各位大大帮帮忙...急...

[解决办法]
顺序应该是这样子的,楼主这样试试
String sql="insert into receipt values(:p0,:p1,:p2,:p3,:p4,:p5,:p6,:p7)";
ShowMessage(sql);
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql); //写了SQL以后,Param会自动生成的
ADOQuery1->Parameters->ParamByName("p0")->Value=no;
ADOQuery1->Parameters->ParamByName("p1")->Value=date;
ADOQuery1->Parameters->ParamByName("p2")->Value=content;
ADOQuery1->Parameters->ParamByName("p3")->Value=amount;
ADOQuery1->Parameters->ParamByName("p4")->Value=chief;
ADOQuery1->Parameters->ParamByName("p5")->Value=accounting;
ADOQuery1->Parameters->ParamByName("p6")->Value=cashier;
ADOQuery1->Parameters->ParamByName("p7")->Value=charge;
ADOQuery1->ExecSQL();
ADOQuery1->Close();

另外,我看了一下我以前的代码,都是这样写的,你也可以试试
ADOQuery1->Parameters->ParamValues["p7"] = charge;

热点排行