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是我自定义的带有一个参数的函数 是用来显示的
+_+ 不是用SQL语句 请帮我看看该如何修改?
關聯好SQL後,直接再循環這個數據集就OK了
SQL关联好了 按照我上面写的循环 还是不正确哦 请帮我看看该如何修改?
我想如果要遍历,实现查询后,在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');请问这句应该放在程序的什么地方呢?
只要记住以下几行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;
類似這樣。 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;
還有:table1 有id 和name,table2也有id 和name,既然表名都有name了,遍歷什麼呢???
建議你貼出兩個表的數據,然後把具體需求結果寫上。
// 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是我自定义的带有一个参数的函数 是用来显示的
from t1 left join t2 on t1.name = t2.name group by t1.name');请问这句应该放在程序的什么地方呢?
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;
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;