dbgrideh上选择多行之后,如何把所有选择的记录的所有字段添加到数据库中?(100分)

  • 主题发起人 主题发起人 kitcause
  • 开始时间 开始时间
K

kitcause

Unregistered / Unconfirmed
GUEST, unregistred user!
dbgrideh上选择多行之后,要求把所选择的记录全部添加入SQL数据库的一个固定表中。

如何做?
 
dbgrideh.selectedrows记载了所有被选择行的bookmark,可以看看
delphi的帮助.
 
var
i:integer;
begin
for i:=1 to DBGrid1.SelectedRows.Count do
begin
Table1.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i-1]));
//Do what you want to do
end;
end;

我知道这样可以知道选择的记录,但关键是如何添加到SQL。
 
一行一行的写进去啊,可以用SQL 语句,也可以打开一个数据集,用append..edit..post
的方法,有什么难度吗?
 
程序一段供参考:
if DBGrid.SelectedRows.Count > 0 then
for i := 0 to DBGrid.SelectedRows.Count - 1 do
begin
GotoBookMark(Pointer(DBGrid.SelectedRows.Items));
for j := 0 to FieldsCount - 1 do begin
if DBGrid.Columns[j].Field.DataType <> ftString then
Num[j + 1] :=IntToStr(DBGrid.Columns[j].Field.Value)
else
str[ j + 1] := DBGrid.Columns[j].Field.Value;
end;
end;
 
利用SelectedRows和GotoBookmark完成

procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
s: string;
begin
if DBGrid1.SelectedRows.Count>0 then
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items));
for j := 0 to FieldCount-1 do
begin

if (j>0) then s:=s+', ';
s:=s+Fields[j].AsString;
end;
Listbox1.Items.Add(s);
s:= '';
end;
end;
 
后退
顶部