总出现类型不比配提示Type mismatch in expression

sbls0919z 2010-04-28 07:54:30
总出现类型不比配提示Type mismatch in expression
我的这段代码是
void __fastcall TfmLogin::Button1Click(TObject *Sender)
{
short count = 0;
if(Edit1->Text =="" || Edit2->Text =="")
{
ShowMessage("用户名或密码不能为空!");
return;
}
Query1->SQL->Clear();
Query1->SQL->Add("select count(*) as 数量");
Query1->SQL->Add("from Use.db");
Query1->SQL->Add("where 用户名=:id and 密码=:pwd and 权限级别=:qx");
Query1->Params->Items[0]->AsString = Edit1->Text.Trim() ;
Query1->Params->Items[1]->AsString = Edit2->Text.Trim() ;
Query1->Params->Items[2]->AsString = ComboBox1->Text.Trim();
Query1->ExecSQL();
Query1->Open();
count = Query1->FieldByName("数量")->AsInteger;
Query1->Close();

用paradox 做的表 表的结构是
用户名 S
密码 S
权限级别 A

这个是个登陆的代码 请问我应该改哪些地方 才能改正这个错误呢
...全文
849 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
周药师 2010-04-29
  • 打赏
  • 举报
回复
用Params->Items[0] 这些多余的
直接写一条SQL语句
带入
AnsiString SQL ="sele"
Query1->SQL->Add(SQL);即可

AnsiString SQL ;
//字符串用 '%s' ,整形用 %d
SQL.sprintf("select count(*) as 数量 from Use.db where 用户名='%s' and 密码='%s' and \
权限级别='%s'",Edit1->Text.c_str(),Edit2->Text.c_str(),ComboBox1->Text.c_str()) ;

draculamx 2010-04-29
  • 打赏
  • 举报
回复
Query1->SQL->Add("where 用户名=:id and 密码=:pwd and 权限级别=:qx");

如果你的字段,是字符类型的,那么应该加上两个单引号啊。。。

Query1->SQL->Add("where 用户名='id' and 密码='pwd' and 权限级别=qx");
suine 2010-04-29
  • 打赏
  • 举报
回复
Query1->Params->Items[0]->Value = dit1->Text.Trim() ;
我来看看CB 2010-04-28
  • 打赏
  • 举报
回复
哪一句出错了?
我不懂电脑 2010-04-28
  • 打赏
  • 举报
回复
Type mismatch in expression
注意这个错误发生行的代码。
柯本 2010-04-28
  • 打赏
  • 举报
回复
用户名,密码是S(short)类型?
那你在输入时,用户名及密码必须都是数字(-32,768 through 32,767 )
权限级别 A(alpha)是字符型,那你赋值时要加一对''号
Query1->Params->Items[2]->AsString =QuotedStr(ComboBox1->Text.Trim());

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧