急!对dbgrid的简单操作(50分)

  • 主题发起人 主题发起人 乖乖宝
  • 开始时间 开始时间

乖乖宝

Unregistered / Unconfirmed
GUEST, unregistred user!
大哥大姐好!
小妹实在笨拙,初学delphi,现有问题请教:建立一个无用的表temp.dbf,然后dbgrid的dataset指向temp.dbf,
使dbgrid成编辑状态,当作一个输入过渡,在dbgrid中输入用户所需的字段(字段名、类型、大小),
一个字段信息占据一行,连续在dbgrid中输入若干行字段信息后,最终利用createtable将字段
增加到指定的新表中,但是如何能够利用一个循环将数据一条一条插入数据表中,例如dataset中的query1.eof
等等之类,还盼有经验的大哥大姐给与指点,小妹先行谢过了!
 
var
i:integer;
begin
Query.Close;
Query.Sql.add('select * from temp')
Query.Open;
//以下是你要的循环了
for i:=0 to Query.RecordCount-1 do
begin
//在这儿做你要做的事。
Query.next;
end;
end;
 
同意楼上
 
with QrTemp do
begin
Close;
SQL.Text := 'Select * from temp.dbf';
Open;
if not IsEmpty then
begin
first;
while not eof do
begin
//你要处理的问题
next;
end;
end;
end;
 
//prgImport是进度条,{}注释的是用sql语句来实现,没有注释掉的用table实现
prgImport.Max:= tblDBF.RecordCount;
prgImport.Step:=1;
tblDBF.First;
cn:='';
for i:=0 to tblDBF.FieldCount-1 do cn:=cn+tblDBF.Fields.FieldName+',';
cn:=Copy(cn,1,length(cn)-1);
try
{while not tblDBF.Eof do
begin
qryTemp.Close;
qryTemp.SQL.Clear;
ssql:='';
for i:=0 to tblDBF.FieldCount-1 do
ssql:=ssql+tblDBF.Fields.AsString+''',''';
ssql:=Copy(ssql,1,length(ssql)-2);
ssql:='insert into '+edtTable.Text +'('+cn+') values ('''+ssql+')';
qryTemp.SQL.Add(ssql);
qryTemp.ExecSQL;
tblDBF.Next;
prgImport.StepIt;
end;
}
tblTemp.Close;
tblTemp.TableName:=edtTable.Text;
tblTemp.Open ;
while not tblDBF.Eof do
begin
tblTemp.Append ;
for i:=0 to tblDBF.FieldCount-1 do
tblTemp.FieldByName(tblDBF.Fields.FieldName).AsString:=tblDBF.Fields.AsString;
tblTemp.Post;
tblDBF.Next;
prgImport.StepIt;
end;
MessageBox(handle,'导入完毕!','提示信息',mb_iconinformation);
except
MessageBox(handle,'导入有误!','提示信息',mb_iconinformation);
end;
 
后退
顶部