c++-C++builder DBGrid双击获取记录问题

问题描述

C++builder DBGrid双击获取记录问题

无论我双击001还是其他记录,该ADODataSet1->FieldByName(""员工号"")->AsString显示的就是001的值,不曾改变。代码如下
AnsiString Path;
AnsiString sqlstr = ""Select 头像 from Photo where 员工号='""+ADODataSet1->FieldByName(""员工号"")->AsString+""'"";
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sqlstr);
ADOQuery1->Open();
Path = ADOQuery1->FieldByName(""头像"")->AsString;
Image1->Picture->LoadFromFile(Path);

解决方案

这个要看你的代码是写在什么地方的了,试试下面的:

void __fastcall TForm1::DBGrid1DblClick(TObject Sender)//双击
{
if(((TDBGrid
)Sender)->DataSource->DataSet->Active==false || ((TDBGrid*)Sender)->DataSource->DataSet->RecordCount<=0)return;

AnsiString Path;
AnsiString sqlstr = ""Select 头像 from Photo where 员工号='""+((TDBGrid*)Sender)->DataSource->DataSet->FieldByName(""员工号"")->AsString+""'"";
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sqlstr);
ADOQuery1->Open();
Path = ADOQuery1->FieldByName(""头像"")->AsString;
Image1->Picture->LoadFromFile(Path);

}

还有一点,你的员工号是文本类型的还是数字类型的,数字类型的话不要加''

解决方案二:
参考:http://download.csdn.net/detail/zhujianqiangqq/2325441

解决方案三:
这个要看你的代码是写在什么地方的了,试试下面的:

void __fastcall TForm1::DBGrid1DblClick(TObject Sender)//双击
{
if(((TDBGrid
)Sender)->DataSource->DataSet->Active==false || ((TDBGrid*)Sender)->DataSource->DataSet->RecordCount<=0)return;

AnsiString Path;
AnsiString sqlstr = ""Select 头像 from Photo where 员工号='""+((TDBGrid*)Sender)->DataSource->DataSet->FieldByName(""员工号"")->AsString+""'"";
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sqlstr);
ADOQuery1->Open();
Path = ADOQuery1->FieldByName(""头像"")->AsString;
Image1->Picture->LoadFromFile(Path);

}

还有一点,你的员工号是文本类型的还是数字类型的,数字类型的话不要加''

时间: 2024-08-31 20:05:40

c++-C++builder DBGrid双击获取记录问题的相关文章

jquery ezUI 双击行记录弹窗查看明细的实现方法_jquery

第一步:给DataGrid绑定onDblClickRow事件: <table title="" id="dataTable" class="easyui-datagrid" style="height: 500px;" data-options=" url: '/ajaxget.aspx?_t='+new Date().getTime()+'&_action=SVNGetHandler.GetSearc

数据访问函数库的使用方法(二)—— 获取记录集和使用事务的方法

使用SQL语句来获取记录集的方法 string sql = "select col1,col2,col3 from TableName where "; //获取DataTable DataTable dt = dal.RunSqlDataTable(sql); //获取DataSet sql = "select col1,col2,col3 from TableName where "; sql += " select col1,col2,col3 fr

c++builder DBGrid 导出到excel函数定义时出现错误

问题描述 c++builder DBGrid 导出到excel函数定义时出现错误 最近在做关于c++builder的毕业设计,在论坛看到DBGrid导出excel就拿来用了,一开始可以用,突然某一天就不行了,定义函数报错 void __fastcall DBGridtoExcel(TDBGrid *dbg,String strXlsFile); [C++ Error] Unit10.h(61): E2293 ) expected 把TDBGrid *dbg换成其他控件就没问题,求帮忙 解决方案

JAVA频繁访问oracle数据库获取记录(间隔1秒就读取数据库记录或修改数据库记录),如何操作

问题描述 JAVA频繁访问oracle数据库获取记录(间隔1秒就读取数据库记录或修改数据库记录),使用什么连接方式最好(高效)??,用jdbc连接池好吗?,怎么使用jdbc连接池后释放资源而不关闭连接呢??,谢谢各位了!!

mysql 随机获取记录order by rand 优化

下面我就以users(userId,userName,password--)表(有一百多万条记录)为例,对比讲解下几个方法效率问题:  代码如下 复制代码 1.select * from users order by rand() LIMIT 1 执 行该sql语句,老半天没有反应,最后被迫手动停止执行,怎个伤人了得啊!后来我查了一下MYSQL手册,里面针对RAND()的提示大概意思就是,在 ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描,导致效率相当相当的低!

jquery ezUI 双击行记录弹窗查看明细

第一步:给DataGrid绑定onDblClickRow事件: <table title="" id="dataTable" class="easyui-datagrid" style="height: 500px;" data-options="  url: '/ajaxget.aspx?_t='+new Date().getTime()+'&_action=SVNGetHandler.GetSear

SQL语句分组获取记录的第一条数据的方法_MsSql

使用Northwind 数据库 首先查询Employees表 查询结果: city列里面只有5个城市 使用ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2) 先进行分组 注:根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的). sql语句为: select EmployeeID,LastName,FirstName,Title,TitleOfCourtesy,City,ROW_NUM

SQL语句分组获取记录的第一条数据的方法

使用Northwind 数据库 首先查询Employees表 查询结果: city列里面只有5个城市 使用ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2) 先进行分组 注:根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的). sql语句为: select EmployeeID,LastName,FirstName,Title,TitleOfCourtesy,City,ROW_NUM

angularjs中使用ui-view载入module,发现该module包含的js不执行

问题描述 angularjs中使用ui-view载入module,发现该module包含的js不执行 angularjs中使用ui-view载入module,发现该module包含的js不执行,直接以html的形式显示在页面中,这是怎么回事?求解答 module模板部分代码 ``` 今天,您去哪儿了? <!-- --> <!-- 动态发表编辑框 --> <!-- 加载编辑器的容器 --> <script id=""container"