delphi如何遍历数据表?用delphi语句如何写

椰子天涯 2011-02-16 09:47:49
数据库中有两个表 table1和table2

其中table1的name字段 对应着 table2的name字段

table1 中只有id和name两个字段 table2中的字段有id name age sex grade 字段

目的是遍历table1和table2 然后按照姓名name分类 全部显示出来每个学生的信息
...全文
684 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
椰子天涯 2011-02-18
  • 打赏
  • 举报
回复
一楼在吗
椰子天涯 2011-02-17
  • 打赏
  • 举报
回复
内容全部显示出来了 还有一个问题请教大家

canvas 的textout 输出前如何分组排序? 如何对内容进行排序?
椰子天涯 2011-02-16
  • 打赏
  • 举报
回复
SQL关联好了 按照我上面写的循环 还是不正确哦 请帮我看看该如何修改?
kye_jufei 2011-02-16
  • 打赏
  • 举报
回复
關聯好SQL後,直接再循環這個數據集就OK了。。。
椰子天涯 2011-02-16
  • 打赏
  • 举报
回复
+_+ 不是用SQL语句 请帮我看看该如何修改?
椰子天涯 2011-02-16
  • 打赏
  • 举报
回复
table1.First;
// while not table1.Eof do
for i:=1 to table1.RecordCount do
begin
table2.First;
for j:=1 to table2.RecordCount do
if tabel2.FieldByName('name').AsString = tabel1.FieldByName('name').AsString then
begin
Arr[1]:=table2.FieldByName('name').AsString;
Arr[2]:=table2.FieldByName('age').AsString;
Arr[3]:=table2.FieldByName('sex').AsString;
Arr[4]:=table2.FieldByName('grade').AsString;
test(j);
table2.Next;
end;
table1.Next;
end;

我这样写的运行结果是只显示出来了table1中的最后一个name对应的table2中的信息

帮我看看这样写错在哪里?为什么没有全部都显示出来
我想要把table1中的所有的name分别对应的tabel2中的信息都显示出来 该如何写 ?

其中 function test(i:integer):string; test是我自定义的带有一个参数的函数 是用来显示的
bdmh 2011-02-16
  • 打赏
  • 举报
回复
直接用sql组合出数据更方便写,如果是完全对应,就用 inner join,其他的left join,right join根据情况用
kye_jufei 2011-02-16
  • 打赏
  • 举报
回复
直接關聯兩表left join 然後按name分類就可以了。。。。
還有:table1 有id 和name,table2也有id 和name,既然表名都有name了,遍歷什麼呢???
建議你貼出兩個表的數據,然後把具體需求結果寫上。。。。
椰子天涯 2011-02-16
  • 打赏
  • 举报
回复
还是不行啊

运行结果还是只显示出来了table1中的最后一个name对应的table2中的信息

怎么回事哦
kye_jufei 2011-02-16
  • 打赏
  • 举报
回复
類似這樣。。。。
 cbb_cb.Properties.Items.Clear;
qry_BaseTemp.Close;
qry_BaseTemp.SQL.Clear;
qry_BaseTemp.SQL.Add( ' select t1.name, t2.age, t2.sex......' );
qry_BaseTemp.Open;
while not qry_BaseTemp.Eof do
begin
cbb_cb.Properties.Items.Add(VarToStr(qry_BaseTemp.FieldValues['CB']));
qry_BaseTemp.Next;
end;
liangpei2008 2011-02-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yyangjingjing 的回复:]

我想如果要遍历,实现查询后,在DELPHI中用DataSet的First、Next等方法,循环方式遍历。

查询语句 myquery.SQL.Add('select t1.name, t2.age, t2.sex, t2.grade
from t1 left join t2 on t1.name = t2.name group by t1.name');

请问这句应该放在程序的什么地……
[/Quote]
只要记住以下几行Delphi数据库编程的必杀句,走遍天下都不怕


WITH MyQuery Do
BEGIN
CLOSE;
CLEAR;
SQL.TEXT:='select t1.name, t2.age, t2.sex......';
OPEN;
WHILE NOT EOF DO
BEGIN
XXX=FIELDBYNAME('字段名').ASSTRING;
END;
END;
椰子天涯 2011-02-16
  • 打赏
  • 举报
回复
我想如果要遍历,实现查询后,在DELPHI中用DataSet的First、Next等方法,循环方式遍历。

查询语句 myquery.SQL.Add('select t1.name, t2.age, t2.sex, t2.grade
from t1 left join t2 on t1.name = t2.name group by t1.name');

请问这句应该放在程序的什么地方呢?

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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