我做的是湘潭市账户管理系统软件,用DELPHI+ACCESS实现一个这样的功能:主要的表有:
Unitaccount单位账户表有一个主键,另一个表checkacc无主键,是临时表(最终从这里查询),checkacc年检上报表的结构如下:字段名称:NO(自动编号)
单位名称,账户名称,账号 ,银行机构名称,是否审批 ,是否备案 ,备案,Changed,账户性质,年检结果Unitaccount单位账户表结构:
字段名称:ID(主键),单位名称,银行机构代码,银行机构名称,账户性质,账号,账户名称,开户许可证核准号,开户许可证编号,审批号,账户状态,年检结果,年检编号,开户日期,销户日期,年检日期,到期日期,审批日期要实现的功能:在选择年检上报的单位文件时(存在程序目录下的年检上报单位的EXCEL报表文件),不仅要显示年检上报的单位的所有信息,还要同时出现选择的该单位的其他所有信息。举个列:查询出来的存在程序目录下的年检上报单位的EXCEL报表文件有三条数据,而在access数据库所有单位账户信息表与你选择检上报的有关单位EXCEL文件就有4条数据总共。:现在我写了一点的代码,下面是我Copy的,怎么样改才能实现这样的功能。。谢谢。。小女子刚学,希望哪位高手帮忙改下:有什么不懂的直接加我QQ1193127162,改好的就发到我邮箱[email protected],如果能实现高分酬谢。  //选择年检上报文件
  procedure TFrmCheck.btnSelFileClick(Sender: TObject);
var
  openfile: string;
  row: Integer;
begin
  RecCount := 0;
  ListBox1.Clear;
  ListBox1.Items.Add('初检报告:');
  DM.ADOQuery1.Close;
  DM.ADOQuery1.SQL.Clear;
  dm.ADOQuery1.SQL.Add('delete * from CheckAcc');CheckAcc//是临时表
  dm.ADOQuery1.ExecSQL;
  DM.ADOCheck.Close;
  DM.ADOCheck.SQL.Text := 'select * from CheckAcc';
  DM.ADOCheck.Open;
  dlgOpen.InitialDir := apppath + '年检上报文件';
  if (dlgOpen.Execute) then
  begin
    openfile := dlgOpen.FileName;
    edtSelFile.Text := openfile;
  end
  else
    Exit;  if varisempty(ExcelApp) then
  begin
    try      ExcelApp := CreateOleObject('Excel.Application');
    except
      ShowMessage('你的电脑中没有安装EXCEL,请先安装.');
      Exit;
    end;
  end else
  begin
    ExcelApp.workbooks.close;
  end;
  ExcelApp.workbooks.open(openfile);  row := 5;
  if Trim(ExcelApp.cells[row, 2].value) <> '' then
    edtUnitName.Text := Trim(ExcelApp.cells[row, 2].value);  while ExcelApp.cells[row, 2].value <> '' do
  begin
   // StatusBar.Panels[0].Text := format('  正在处理第 %d 条数据,请稍等...', [row]);
    DM.ADOCheck.Append;
    dm.ADOCheck.FieldByName('单位名称').AsString :=
      Trim(ExcelApp.cells[row, 1].value);
    dm.ADOCheck.FieldByName('账户名称').AsString :=
      Trim(ExcelApp.cells[row, 2].value);
    dm.ADOCheck.FieldByName('账户性质').AsString :=
      Trim(ExcelApp.cells[row, 4].value);
    dm.ADOCheck.FieldByName('银行机构名称').AsString :=
      Trim(ExcelApp.cells[row, 5].value);
    dm.ADOCheck.FieldByName('账号').AsString :=
      Trim(ExcelApp.cells[row, 6].value);
    //dm.ADOCheck.FieldByName('Approved').AsString :=
    //  Trim(ExcelApp.cells[row, 6].value);
    //dm.ADOCheck.FieldByName('Reserved').AsString :=
    //  Trim(ExcelApp.cells[row, 7].value);
    //dm.ADOCheck.FieldByName('Changed').AsString :=
     // Trim(ExcelApp.cells[row, 8].value);
    //dm.ADOCheck.FieldByName('Reserve').AsString :=
     // Trim(ExcelApp.cells[row, 9].value);
    dm.ADOCheck.Post;
    Inc(RecCount);
    if not dm.ADOQuery.Locate('账号', Trim(ExcelApp.cells[row, 6].value), []) then
      ListBox1.Items.Add(Format('第%d行:账号为%s的账户在数据库中无记录', [row, Trim(ExcelApp.cells[row, 5].value)]));
    Application.ProcessMessages;
    Inc(row);
  end;
  //edtRptYear.Text := Copy(DateToStr(date), 1, 4);
  dm.ADOQuery1.Close;
  dm.ADOQuery1.SQL.Text := 'select max(年检编号)+1 from UnitAccount';
  dm.ADOQuery1.Open;
  if dm.ADOQuery1.Fields[0].AsInteger >= YearOf(Now) * 1000 then
    edtRptNo.Text := dm.ADOQuery1.Fields[0].AsString else
    edtRptNo.Text := IntToStr(YearOf(Now) * 1000 + 1);
  DispStatusBar;
end;