请教:读取DBGrid或Table中的数据问题。 ( 积分: 50 )

  • 主题发起人 主题发起人 lzh1018
  • 开始时间 开始时间
L

lzh1018

Unregistered / Unconfirmed
GUEST, unregistred user!
初学delphi,我想从DBGrid或Table中按指定行列读取数据。
如:读取DBGrid或Table的第2列的1-10行中的数据,请问各位该如何读取?
因是初学,希望讲详细一些,最好是能写出代码。谢谢!
 
for i := 1 to 10 do
s: s + Tbl.FieldByName('sdf');
累加在一个串里了.
 
Delphizhou您好!
谢谢您的解答!但这个方法不行,这个方法的结果是将第1行的数据累加了10次。
请问还有其他办法吗?
 
adoQuery1.First;
while not adoquery1.eof do
begin
//就是下面这个值,你想干什么做干什么?我不管了
//adoQuery1.FiledByName('sdf').AsString;//就当它是字符串

adoQuery1.next;
end;
 
非常感谢黄耀彰老师的解答,这的确能解决读取的问题,但还想请教一下,
如果我不是从第一条读取到最后一条,而是需要在中间读取几条,
如:读取第234行或567行,请问有该如何实现?请大家指点,谢谢!
 
>>“如:读取第234行或567行,请问有该如何实现?请大家指点,谢谢! ”
你怎么知道是“第234行或567行”
如果你知道条件,为什么你不把这两条记录过滤出来呢?
adoQuery1.Close;
adoQuery1.SQL.Text := 'SELECT TOP 234 * FROM 你的表名 ORDER BY 某排序字段 ';
adoQuery1.Open;
//最后一条就是234行,呵呵找本SQL恶补一下吧!

//其实就算单独挑出第234行,567行都是可以的,表演一下又如何。
//(就用Northwind库的Orders表吧)。
adoQuery1.Close;
adoQuery1.SQL.Text :=
' SELECT * ' +
' FROM (SELECT TOP 1 * FROM ' +
' (SELECT TOP 234 * FROM Orders ORDER BY OrderDate)P ' +
' ORDER BY OrderDate DESC)P1 ' +
' UNION ' +
' SELECT * ' +
' FROM (SELECT TOP 1 * FROM ' +
'(SELECT TOP 567 * FROM Orders ORDER BY OrderDate)Q ' +
' ORDER BY OrderDate DESC)Q1'
adoQuery1.Open;

//哇噻,真的只有指定的这两行耶,看来要好好学一下SQL了
 
后退
顶部