sub:=edit_other.Text ;
query_chengji.Close;
query_chengji.SQL.Clear;
sqlstr:='select troop.id,troop.name,study.study_id,study.subject_id,study.achieve,'
+ 'achieve.teacher achieve.subject from troop.db,study.db,achieve.db where ('
+ '(study.id = troop.id) and (achieve.subject_id = '
+'(select study.subject_id from troop.db,study.db where((troop.name =:sub) and ( study.id = troop.id))))) ';
query_chengji.SQL.Add(sqlstr);
query_chengji.ParamByName('sub').DataType :=ftstring;
query_chengji.ParamByName('sub').Asstring :=sub;以上是程序代码片断,表结构如下:
troop(id(key),name,……);
study(study_id(key),id,subject_id,achieve);
achieve(subject_id(key),subject,teacher);
我需要按troop.id或者troop.name查询出该学生选修的subject,achieve,以及该subject的teacher。用参数查询的时候总是报sub出错。哪位大虾告诉我该怎么写?谢谢了
query_chengji.Close;
query_chengji.SQL.Clear;
sqlstr:='select troop.id,troop.name,study.study_id,study.subject_id,study.achieve,'
+ 'achieve.teacher achieve.subject from troop.db,study.db,achieve.db where ('
+ '(study.id = troop.id) and (achieve.subject_id = '
+'(select study.subject_id from troop.db,study.db where((troop.name =:sub) and ( study.id = troop.id))))) ';
query_chengji.SQL.Add(sqlstr);
query_chengji.ParamByName('sub').DataType :=ftstring;
query_chengji.ParamByName('sub').Asstring :=sub;以上是程序代码片断,表结构如下:
troop(id(key),name,……);
study(study_id(key),id,subject_id,achieve);
achieve(subject_id(key),subject,teacher);
我需要按troop.id或者troop.name查询出该学生选修的subject,achieve,以及该subject的teacher。用参数查询的时候总是报sub出错。哪位大虾告诉我该怎么写?谢谢了
解决方案 »
- 接口问题,就想在Dll中调用主程序的方法,一直出错,请指教
- sql语句怎么删除DBGRID中被选中的当前行的某条记录
- 请问各位高手:数据库相关,谢谢!(给50)在线等待!
- 怎样关闭一个正在运行的软件
- 哭啊,为什么会这样呢
- ★★★★★★感谢CSDN,等待以久的(真正的)全文检索终于出来了,顺便放点分给大家!★★★★★★
- 关于TBlobField的SaveToFile的奇怪问题!
- 有.dcu, 但没有.pas怎么办?delphi就是不让通过啊!
- 在线程里查询的思路
- 很容易回答的问题,要抢分的快来.请问如何在一个DBGrid里添加,删除,编辑?
- 在Web Service中,TXSHexBinary類型一次最大會傳送多少個字節?
- 报表设置
query_chengji.ParamByName('sub').Asstring :=sub;改成query_chengji.ParamByName('sub').Asstring :=trim(edit_other.Text);
试试
依然是说:query_chengji :parameter 'sub' not found!!
众位神仙快来救我啊!!!!
2.+ 'achieve.teacher achieve.subject from troop.db,study.db,achieve.db'此行中
achieve.teather后少了一个逗号, 你试一下,记得给我加分呀
你的分数我肯定会加的啦,谢谢了先!!!
edit1.text:=query_chengji.SQL.Text;不就一清二楚了
var
sub,sqlstr:String;
begin
sub:=edit_other.Text ;
query_chengji.Close;
query_chengji.SQL.Clear;
sqlstr:='select troop.id,troop.name,study.study_id,study.subject_id,study.achieve,'
+ 'achieve.teacher, achieve.subject from troop,study,achieve where ('
+ '(study.id = troop.id) and (achieve.subject_id = '
+'(select study.subject_id from troop,study where((troop.name =:sub) and ( study.id = troop.id))))) ';
query_chengji.SQL.Add(sqlstr);
query_chengji.ParamByName('sub').DataType :=ftstring;
query_chengji.ParamByName('sub').Asstring :=sub;
query_chengji.open;
end;
to fenght2004(fht)兄 :你连接的后台数据库表结构和我的一样吗?
CREATE TABLE [dbo].[achieve] (
[subject_id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[subject] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[teacher] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GOCREATE TABLE [dbo].[study] (
[study_id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[id] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[subject_id] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[achieve] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GOCREATE TABLE [dbo].[troop] (
[id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
建议楼主,还是好好检查一下你的数据库表结构吧!是不是把id写成了ld