一个棘手的问题,以前自己也没有做过.谢谢各位前来答题.......

huygtt 2008-11-20 11:30:26
在我的界面上有几个东西,一个是StringGrid,另外一些就是编辑框,我现在通过查询的方式就查出一些数据,在StringGrid查出两列,一列是用户名,另一列是部门,然而当我在StringGrid中选中一个用户名的时候,在边上的那些编辑框中就要实时显示出该用户的所有基本信息,可能这信息会有些多.当我选择另一个用户名的时候,边上的编辑框就显示对应的这个用户名的所有基本信息.
我提供一些我自己所写的代码,可能会存在很大的差异性,请大家不要笑我.
void __fastcall TForm1::StringGrid1Click(TObject *Sender)
{
AnsiString a,b……;
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("select cname,caddress ,ctel,cfax,email,cweb,bankname,bname,bnumber,contactone,cposione,telone,contacttwo,cpositwo,teltwo,contactthree,cposithree,telthree,vocation,saleman,remark from client where cname like '%"+ StringGrid1->Cells[0][2]+"%'");
Query1->Open();
Query1->First();
for(int i=1;i<=Query1->RecordCount;i++)
{
a = Query1->FieldByName("cname")->AsString;
b = Query1->FieldByName("caddress")->AsString;
    ……
Query1->Next();
}
Edit2->Text=a;
Edit3->Text=b;
   ……
}
省略号表示省去的一些变量和编辑框,红色部分的条件我应该怎么写呢?

或者也可以说一些其它的方法。谢谢
...全文
94 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huygtt 2008-11-21
  • 打赏
  • 举报
回复
问题成功解决
首先在这里谢谢马甲,因为我题目当中忘说了,DBGrid的方式我这里有好几个实例,我也看了,那个我会做,我只是想用这种方法来试一下,然后就出现问题了,不过还是很感谢马甲.
其次呢,就得感谢文生了,你的方法是正确的,我后期再改的时候已经可以通过,也得出正确结果,我感觉还是很满意的,谢谢.
jxw1987628的说法同样也给了我指导性的意见,让我在这种方法上有更深的理解了.同样谢谢您.
所以呢,最后要说的就是我要结贴去了.
TripH0101 2008-11-21
  • 打赏
  • 举报
回复
不清楚你的意思,我这试了OK,
MAJIA1918 2008-11-20
  • 打赏
  • 举报
回复
没权限,不能修改帖子
在OnSelectCel中,红字部分这么写
where cname like '%"+ StringGrid1->Cells[ARow][ACol]+"%'";
TripH0101 2008-11-20
  • 打赏
  • 举报
回复
获取 StringGrid 鼠标指定单元格的值
void __fastcall TForm1::StringGrid1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
struct TGridCoord MyGridCoord;
MyGridCoord=StringGrid1->MouseCoord(X,Y);
AnsiString ;
StrValue=StringGrid1->Cells[MyGridCoord.X][MyGridCoord.Y];
//MessageBox(Handle,StrValue.c_str(),"信息提示",MB_OK);
//下面是你的代码:
AnsiString a,b……;
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("select cname,caddress ,ctel,cfax,email,cweb,bankname,bname,bnumber,contactone,cposione,telone,contacttwo,cpositwo,teltwo,contactthree,cposithree,telthree,vocation,saleman,remark from client where cname like '%"+ StrValue+"%'");
Query1->Open();
Query1->First();
for(int i=1;i <=Query1->RecordCount;i++)
{
a = Query1->FieldByName("cname")->AsString;
b = Query1->FieldByName("caddress")->AsString;
    ……
Query1->Next();
}
Edit2->Text=a;
Edit3->Text=b;
   ……
}
MAJIA1918 2008-11-20
  • 打赏
  • 举报
回复
刚才看到函数名字,这部分代码要在OnSelectCel中写的
MAJIA1918 2008-11-20
  • 打赏
  • 举报
回复
我意思是编辑框就别用了,用dbgird吧
MAJIA1918 2008-11-20
  • 打赏
  • 举报
回复
最好用DBGIRD,要不数据量大的时候会很慢
huygtt 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 thwen0101 的回复:]
获取 StringGrid 鼠标指定单元格的值
void __fastcall TForm1::StringGrid1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
struct TGridCoord MyGridCoord;
MyGridCoord=StringGrid1->MouseCoord(X,Y);
AnsiString ;
StrValue=StringGrid1->Cells[MyGridCoord.X][MyGridCoord.Y];
//MessageBox(Handle,StrValue.c_str(),"信息提示",MB_OK);
//下面是你的代码: …
[/Quote]

StringGrid1MouseDown这个在bfm文件中是要做成OnClick=StringGrid1MouseDown还是做成OnMouseDown=StringGrid1MouseDown?我做成过OnClick后能够检测到点击事件,但得不到实际结果,用OnMouseDown的话连检测都检测不到了.不知道为什么?
jxw1987628 2008-11-20
  • 打赏
  • 举报
回复

// 如果只是想把红色的部分写好的话

// 改成如下:

String strValue =StringGrid1->Cells[ARow][ACol] ;

"...where cname like '"+ strValue + "'"; //左右个1个单引;


//如果是模糊查询在左单引的后面加上%,看你怎么模糊了

13,825

社区成员

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

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