楼上:人家楼主问的是“某个字段在ACCESS表中是第几列”,不是问“某个字段在数据集中是第几列”比如说:在ACCESS表TABLE1中,各字段顺序如下:Name,Age,Addr,Photo现在,做一个查询:select Addr, Photo, Age, Name from TABLE1你说Name字段用你的方法返回几?
lihuasoft(坐井观天) 老兄说的对啊,请大家帮忙想想啊
for i:=0 to ds.Fields.Count-1 do begin if ds.Fields[i].Name=sFieldName then begin result:=i; Exit; end; end;
新建一个ADOQuery2 SQLTEXT:SELECT * FROM TABLE WHERE 1=2 ADOQuery1---->Dataset1--->dbgrid1for i:=0 to ADOQuery2.Fields.Count-1 do begin if ds.Fields[i].Name=dbgrid1.Columns[1].FieldName.then begin result:=i; Exit; end; end;
修改一下: 新建一个ADOQuery2 SQLTEXT:SELECT * FROM TABLE WHERE 1=2 ADOQuery1---->Dataset1--->dbgrid1 ADOQuery2 --->Dataset2 for i:=0 to Dataset2.Fields.Count-1 do begin if Dataset2Fields[i].Name=dbgrid1.Columns[1].FieldName.then begin result:=i; Exit; end; end;
if ds.Fields[i].Name=sFieldName then begin
result:=i;
Exit;
end;
end;
ADOQuery1.FieldList.IndexOf('字段名')
-----------------------------------
http://kmok.cn/
~~~~~~~~~~~~(不是数据集中)望楼上各位再给楼主解释一下.
还没明白吗
if ds.Fields[i].Name=sFieldName then begin
result:=i;
Exit;
end;
end;
ADOQuery1---->Dataset1--->dbgrid1for i:=0 to ADOQuery2.Fields.Count-1 do begin
if ds.Fields[i].Name=dbgrid1.Columns[1].FieldName.then begin
result:=i;
Exit;
end;
end;
新建一个ADOQuery2 SQLTEXT:SELECT * FROM TABLE WHERE 1=2
ADOQuery1---->Dataset1--->dbgrid1
ADOQuery2 --->Dataset2
for i:=0 to Dataset2.Fields.Count-1 do begin
if Dataset2Fields[i].Name=dbgrid1.Columns[1].FieldName.then begin
result:=i;
Exit;
end;
end;