求救,关于tquery和dbgrid
我这里面有一个库,别名是ict,里面有2个表ictw和ics每个表里面有englishi和chinese两个字段,我要用一个edit输入一个英语单词然后在这两个表当中用tquery查询,返回得到包含这个单词的短语和句子的english和chinese字段,显示在一个dbgrid当中,怎么实现
有怎么实现讲查询结果编号将编号在dbgrid当中作为一列显示,然后用数字键选择使结果发到另外一个edit当种
问题点数:20、回复次数:9Top
1 楼liuyun1984(流云)回复于 2004-05-04 20:13:47 得分 0
大家帮帮我啊Top
2 楼guanshangming()回复于 2004-05-05 15:03:56 得分 2
第一个问题
以Access或SQL Server为例
select * from
(select word,english,chinese from ictw
union
select word,enliash,chines from ics)
where word like '%LOVE%'
第二问题还没有想好,等想好再给答复Top
3 楼guanshangming()回复于 2004-05-05 15:07:58 得分 5
你也可以先参考一下这里
http://expert.csdn.net/Expert/topic/2915/2915037.xml?temp=.9774439Top
4 楼liuyun1984(流云)回复于 2004-05-05 17:09:01 得分 0
问题以解决,谢谢个位
DataModule2->WordQuery->SQL->Add(queryString);
DataModule2->WordQuery->ExecSQL();
DataModule2->WordQuery->Active=true;
DataModule2->WordQuery->Edit();
DataModule2->WordQuery->First();
while(!(DataModule2->WordQuery->Eof))
{
DataModule2->WordQuery->Edit();
DataModule2->WordQuery->FieldByName("Id")->AsInteger=DataModule2->WordQuery->RecNo;
DataModule2->WordQuery->Next();
WordQuery是一个Tquery的Name,DataModule2是放Tquery的数据模块的Name
已经将WordQuery的RwquestLive属性设置为true
Top
5 楼uestcwl(uestcwl)回复于 2004-05-05 17:44:43 得分 5
dingTop
6 楼liuyun1984(流云)回复于 2004-05-05 17:48:15 得分 0
现在的新的问题出来了,大家继续帮忙啊
就是如果DataModule2->WordQuery->SQL->Add(queryString);
DataModule2->WordQuery->ExecSQL();
DataModule2->WordQuery->Active=true;
DataModule2->WordQuery->Edit();
DataModule2->WordQuery->First();
while(!(DataModule2->WordQuery->Eof))
{
DataModule2->WordQuery->Edit();
DataModule2->WordQuery->FieldByName("Id")->AsInteger=DataModule2->WordQuery->RecNo;
DataModule2->WordQuery->Next();
queryString="Select * From icw ";或者queryString="Select * From ics”,都没有问题。
queryString="Select * From icw Union Select * from ics ";时就出错显示:WordQuery不能修改只读的DataSet
已经将WordQuery的RwquestLive属性设置为true
请问个位怎么解决
Top
7 楼guanshangming()回复于 2004-05-05 20:48:57 得分 8
首先对你这一句不太明白
DataModule2->WordQuery->ExecSQL(); //这里这句是什么用意
DataModule2->WordQuery->Active=true;
BDE+Paradox或dBase IV对于联合查询甚至查询语句使用了Order by,都会将数据集设置为只读。ADO+SQL Server就没有此问题
可以考虑设置计算字段。
具体方法为
在设计时先设置好Query的SQL语句,然后双击Query,添加要显示的字段名,然后添加new field... ,在New Field窗口的字段属性里填入计算字段的字段名和类型,字段类型选Calculated。
假设添加计算字段名为ID,在
Query的OnCalcFields事件中书写
void __fastcall TForm1::Query1CalcFields(TDataSet *DataSet)
{
Query1->FieldByName("ID")->AsInteger = Query1->RecNo;
}
最后,将Query的RequestLive属性设置为true
Top
8 楼liuyun1984(流云)回复于 2004-05-06 09:12:22 得分 0
DataModule2->WordQuery->ExecSQL();
DataModule2->WordQuery->Active=true;//执行sql查询
你的方法解决了联合查询时dataset只读的问题,但是现在照你的方法做时dbgrid只显示id字段而没有english和chinese字段,但是在设计时先设置好Query的SQL语句却不可以,因为我这里时动态的sql查询。Top
9 楼liuyun1984(流云)回复于 2004-05-07 10:28:18 得分 0
非常感谢各位
特别感谢 guanshangming(聪明蛋)Top




