http://hi.baidu.com/493168771/blog/item/ea43d1a4a6f0c6ff9052ee83.html

登入代码
var s:string;
begin
if (edit1.Text='') or (edit2.Text='') then
   Application.MessageBox('用户名或密码不能为空!','错误',MB_OK)
else
   begin
     with DataModule3.adoquery1 do
      begin
       close;
       sql.Clear;
       sql.add('select 权限代码 from net060218_password ');
       sql.add('where 人员代码='''+edit1.Text+''''+' and 密码='''+edit2.Text+'''');
       open;
       s:=DataModule3.adoquery1.fieldbyname('权限代码').AsString;
      end;
       if DataModule3.adoquery1.RecordCount=0 then Application.MessageBox('用户名或密码错误,请重新输入!','错误',MB_OK)
       else
        begin
          if s='' then
           begin
            login.Hide;
            function_list.Show;
           end;
          if StrPos(PChar(s), PChar('a1')) <> nil then
           begin
           //具有字段ad拥有的权限
            login.Hide;
            function_list.show;
            function_list.button3.Enabled:=true;
            form1.Button1.Enabled:=true;
            form1.Button2.Enabled:=true;
            form1.btnsearch1.Enabled:=true;
            form1.btnsearch2.Enabled:=true;
            form1.btnalter1.Enabled:=true;
            form1.btnalter2.Enabled:=true;
            form1.btndel1.Enabled:=true;
            form1.btndel2.Enabled:=true;
            form6.Button2.Enabled:=true;
            form6.Button3.Enabled:=true;
            form6.Button5.Enabled:=true;
            form6.Button6.Enabled:=true;
           end;
          if StrPos(PChar(s), PChar('b1')) <> nil then
           begin
            login.Hide;
            function_list.Show;
            form1.Button1.Enabled:=true;
           end;
          if StrPos(PChar(s), PChar('c1')) <> nil then
           begin
            login.Hide;
            function_list.Show;
            form1.btndel1.Enabled:=true;
           end;
          if StrPos(PChar(s), PChar('d1')) <> nil then
           begin
            login.Hide;
            function_list.Show;
            form1.btnalter1.Enabled:=true;
           end;
          if StrPos(PChar(s), PChar('e1')) <> nil then
           begin
            login.Hide;
            function_list.Show;
            form1.btnsearch1.Enabled:=true;
           end;
          if StrPos(PChar(s), PChar('f1')) <> nil then
           begin
            login.Hide;
            function_list.Show;
            form1.Button2.Enabled:=true;
           end;
          if StrPos(PChar(s), PChar('g1')) <> nil then
           begin
            login.Hide;
            function_list.Show;
            form1.btndel2.Enabled:=true;
           end;
          if StrPos(PChar(s), PChar('h1')) <> nil then
           begin
            login.Hide;
            function_list.Show;
            form1.btnalter2.Enabled:=true;
           end;
          if StrPos(PChar(s), PChar('i1')) <> nil then
           begin
            login.Hide;
            function_list.Show;
            form1.btnsearch2.Enabled:=true;
           end;
          if StrPos(PChar(s), PChar('j1')) <> nil then
           begin
            login.Hide;
            function_list.Show;
            form6.Button2.Enabled:=true;
            form6.Button3.Enabled:=true
           end;
          if StrPos(PChar(s), PChar('k1')) <> nil then
           begin
            login.Hide;
            function_list.Show;
            form6.Button5.Enabled:=true;
            form6.Button6.Enabled:=true
           end;
        end;
   end;
   edit2.Clear;
end;

权限管理:
begin
       if permissions = nil then
        permissions := Tpermissions.Create(nil);
        permissions.ShowModal ;
end;
菜单项调用:
begin
         if button3.Enabled then
        button3Click(Sender) ;

end;
dbgrid的激活
var s:string;
begin
s:=DataModule3.adoquery1.fieldbyname('权限代码').AsString;

if StrPos(PChar(s), PChar('b1')) <> nil then
     checkbox1.Checked:=true
else checkbox1.Checked:=false;
if StrPos(PChar(s), PChar('c1')) <> nil then
     checkbox2.Checked:=true
else checkbox2.Checked:=false;
if StrPos(PChar(s), PChar('d1')) <> nil then
     checkbox3.Checked:=true
else checkbox3.Checked:=false;
if StrPos(PChar(s), PChar('e1')) <> nil then
     checkbox4.Checked:=true
else checkbox4.Checked:=false;
if StrPos(PChar(s), PChar('f1')) <> nil then
     checkbox5.Checked:=true
else checkbox5.Checked:=false;
if StrPos(PChar(s), PChar('g1')) <> nil then
     checkbox6.Checked:=true
else checkbox6.Checked:=false;
if StrPos(PChar(s), PChar('h1')) <> nil then
     checkbox7.Checked:=true
else checkbox7.Checked:=false;
if StrPos(PChar(s), PChar('i1')) <> nil then
     checkbox8.Checked:=true
else checkbox8.Checked:=false;
if StrPos(PChar(s), PChar('j1')) <> nil then
     checkbox9.Checked:=true
else checkbox9.Checked:=false;
if StrPos(PChar(s), PChar('k1')) <> nil then
     checkbox10.Checked:=true
else checkbox10.Checked:=false;
if StrPos(PChar(s), PChar('a1')) <> nil then
     checkbox11.Checked:=true
else checkbox11.Checked:=false;
end;
权限的赋予:
var s:string;
begin
s:=DataModule3.adoquery1.fieldbyname('人员代码').AsString;
with DataModule3.ADOQuery2 do
   begin
    close;
    sql.Clear;
    sql.Add('update net060218_password set 权限代码='''' ');
    sql.Add('where 人员代码='''+s+'''');
    execsql;

    if checkbox1.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''b1''');
      sql.Add('where 人员代码='''+s+'''');
      execsql;
     end;
    if checkbox2.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''c1''');
      sql.Add('where 人员代码='''+s+'''');
      execsql;
     end;
    if checkbox3.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''d1''');
      sql.Add('where 人员代码='''+s+'''');
      execsql;
     end;
    if checkbox4.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''e1''');
      sql.Add('where 人员代码='''+s+'''');
      execsql;
     end;
    if checkbox5.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''f1''');
      sql.Add('where 人员代码='''+s+'''');
      execsql;
     end;
    if checkbox6.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''g1''');
      sql.Add('where 人员代码='''+s+'''');
      execsql;
     end;
    if checkbox7.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''h1''');
      sql.Add('where 人员代码='''+s+'''');
      execsql;
     end;
    if checkbox8.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''i1''');
      execsql;
     end;
    if checkbox9.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''j1''');
      sql.Add('where 人员代码='''+s+'''');
      execsql;
     end;
    if checkbox10.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''k1''');
      sql.Add('where 人员代码='''+s+'''');
      execsql;
     end;
    if checkbox11.Checked=true then
     begin
      sql.Clear;
      sql.Add('update net060218_password set 权限代码=权限代码+''a1''');
      sql.Add('where 人员代码='''+s+'''');
      execsql;
     end;
   end;
   with DataModule3.ADOQuery1 do
   begin
    close;
    sql.Clear;
    sql.Add('select net060218_password.人员代码,姓名,密码,权限代码 from net060218_emploee,net060218_password ');
    sql.Add('where net060218_password.人员代码=net060218_emploee.人员代码');
    open;
   end;
end;

密码修改模块:
procedure TMy_imfor.FormActivate(Sender: TObject);
begin

with DataModule3.ADOQuery2 do
   begin
    sql.Add('select * from net060218_emploee ');
    sql.Add('where 人员代码='''+login.Edit1.Text+'''');
    open;
   end;

end;
密码修改:
begin
if edit1.Text='' then
   application.MessageBox('请输入原密码!','提示',mb_ok)
else if edit2.Text='' then
   application.MessageBox('请输入新密码!','提示',mb_ok)
else if edit3.Text='' then
   application.MessageBox('请再次输入新密码!','提示',mb_ok)
else
   begin
    with DataModule3.ADOQuery1 do
     begin
      close;
      sql.Clear;
      sql.Add('select * from net060218_password where 人员代码='''+login.Edit1.Text+'''');
      open;
      if edit1.Text=trim(fieldbyname('密码').AsString) then
       begin
        if (trim(edit2.Text)='') or (trim(edit3.Text)='') then
         application.MessageBox('密码不合法!','提示',mb_ok)
        else if edit2.Text<>edit3.Text then
         application.MessageBox('密码不一致!','提示',mb_ok)
        else
         begin
          close;
          sql.Clear;
          sql.Add('update net060218_password ');
          sql.Add('set 密码='''+edit2.Text+'''');
          sql.Add(' where 人员代码='''+login.Edit1.Text+'''');
          execsql;
          application.MessageBox('修改成功!','提示',mb_ok);
         end;
       end
      else
       application.MessageBox('密码不正确!','提示',mb_ok);
     end;
   end;
   edit1.Text:='';
   edit2.Text:='';
   edit3.Text:='';
end;
统计表里面的adoquery1:
select jno 物料代码 ,sum(jliang)进仓数据 from dan
group by jno
order by jno
统计表里面的adoquery2:
select jno 物料代码 ,sum(cling)出仓数量 from dan
group by jno
order by jno
统计按钮:
begin
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select jno 物料代码 ,sum(jliang)进仓数据 ,sum(cling)出仓数量 from dan ');
adoquery1.SQL.Add('where jtime>= '''+combobox1.Text+'''and jtime <='''+combobox2.Text+'''' );
adoquery1.SQL.Add('group by jno');
adoquery1.SQL.add('order by jno');
adoquery1.Open;
adoquery3.SQL.Clear;
adoquery3.SQL.Add('select jno 物料代码 ,sum(cling)出仓数量 from dan ');
adoquery3.SQL.Add('where jtime>= '''+combobox1.Text+'''and jtime <='''+combobox2.Text+'''' );
adoquery3.SQL.Add('group by jno');
adoquery3.SQL.add('order by jno');
adoquery3.Open;
end;
打印报表的combobox按钮对应生成:
begin
Form14.show;
Form13.Hide;
Form14.quickrep1.Hide;
Form14.ADOQUERY2.Close;
Form14.ADOQUERY2.sql.Clear;
Form14.ADOQUERY2.SQL.ADD('select jname from dan');
Form14.ADOQUERY2.SQL.ADD('group by jname');
Form14.ADOQUERY2.Open;
while not Form14.adoquery2.Eof do
begin
Form14.combobox3.Items.Add(Form14.adoquery2.Fields[0].AsString);
Form14.adoquery2.Next
end;
打印报表的adoquery1:
select dan.* ,jdan.jdanw ,jdan.kcun from dan,jdan
where dan.jno=jdan.jno
统计里面的combobox按钮对应生成:
begin
Form14.show;
Form13.Hide;
quickrep1.Hide;
adoquery2.Close;
adoquery2.sql.Clear;
adoquery2.SQL.Add('select jname from dan');
adoquery2.SQL.add('group by jname');
adoquery2.Open;
while not adoquery2.Eof do
begin
combobox3.Items.Add(adoquery2.Fields[0].AsString);
adoquery2.Next
end;
adoquery2.Close;
adoquery2.Open;
end;
月份打印:
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select dan.*,jdan.jdanw from dan,jdan ');
adoquery1.SQL.Add('where dan.jno=jdan.jno and jtime like ''%'+combobox1.Text+'_'+'%''');
adoquery1.Open;
qrlabel1.Caption:='某某公司2009-'+combobox1.text+'月的进出仓单';
quickrep1.Preview;
end;
按年和物料打印:
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from dan,jdan');
adoquery1.SQL.Add('where dan.jno=jdan.jno and dan.jname='''+combobox3.Text+''' and jtime like ''%'+combobox2.Text+'%''');
adoquery1.Open;
qrlabel1.Caption:='某某公司第'+combobox2.text+'年'+combobox3.text+'的进出仓单';
quickrep1.Preview;
end;