⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit3.pas

📁 用于家庭养殖的财务进出
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit Unit3;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, AxCtrls, OleCtrls, VCF1, StdCtrls,DB, ADODB, ExtCtrls,jpeg,DBTables,ComCtrls;
  //Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  //Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, ComCtrls;

//Procedure  CompCount(field_name:string);
procedure AddRecord(tablename,prescode:string); //增加表中的记录,编号自动增加
function SaveRecord(tabsheetnum:integer;prescode:string):boolean; //当不是新增从属子信息的保存
procedure DelRecord(tablename,prescode:string);//删除表中相应记录
function tabsheetCount:integer; //找到需要动态创建的 tabsheet的个数
function labelcount:integer;  //统计tabsheet页面中控件个数
procedure ClearAllComp;       //清除所有tabsheet页面中非标签控件值
procedure ClearSGSheet;       //清除当前<激活状态>tabsheet页面中非标签控件值
procedure Loadfield(activepage:integer;perscode:string);  ////往激活页控件填值
procedure Updatelistbox(stringlist,listbox:tobject); //更新相应单位下的人员列表
procedure UpdateStringGrid;//更新grid表中人员信息
function Checkfield:boolean;//检查激活页面中容器的是否发生变化
procedure ComboboxOnChange(Comp,sigcombo,editbox,combo:Tcomponent;dpt:tdatetimepicker;index:integer);//未曾用到
procedure loadsubfield(comp:tcomponent;fieldname:string);//向comp组件查询数据库code中的code值  <frm_SJCX>
procedure loadsig(comp:tcomponent;typestr:string);   //向comp组件查询数据库sig_code中的code值 <frm_SJCX>
function sig(comp:tcomponent):string; //把组件中的中文名转换为相应的sql语句字符 <frm_SJCX>
Function  addCode(PwdStr:String):String;//加密 PwdStr:要加密的字串<frm_manage>
Function  undoCode(PwdStr:String):String;//解密 PwdStr:要解密的字串 <frm_manage>
procedure showinfo(pagenum:integer;perscode:string);//显示当前页面下,用户的具体信息
//procedure RadioButtonClick(comp:tcomponent;index:integer);
procedure readpic;  //从数据库中读出当前用户的照片信息
procedure savepic;  //将图片信息存入数据库中
//yz1118  获得最后一个节点
procedure getfinalchild(treenode:ttreenode);
function trimkongge(s:string):string;//去除字符里面的空格
function  ReadCursor:boolean;       //变化鼠标状态
function  ResumeCursor:boolean;     //恢复鼠标状态
implementation
  uses data_module,unit_main,unit_global;
///////////////2006-03 zjx//////////////////////////////
function ReadCursor:boolean;
var
  H:Hcursor;
begin
////////读取鼠标等待的状态////////////////////
  H:=LoadCursorFromFile(pansichar(ExtractFilePath( Application.ExeName )+'Wait.cur'));
  //H:=LoadCursorFromFile('Wait.cur');
  SetsystemCursor(H,ocr_normal);
end;
//////////////鼠标状态的恢复///////////////////////////////
function ResumeCursor:boolean;
begin
  SystemParametersinfo(SPI_SETCURSORS,0,nil,SPIF_SENDCHANGE);
end;

function trimkongge(s:string):string;      //2006-03 zjx
var
  i:integer;
begin
  result:='';
  for i:=1 to length(s) do
  begin
    if s[i]<>' ' then
      result:=result+s[i];
  end;
end;
///////////////2006-03 zjx//////////////////////////////

Function tabsheetCount:integer;
var
  sqlstr:string;
begin
  sqlstr:='select max(page) as maxnum from field_info';
  with dm.ADOQuery1 do
  begin
    close;
    sql.Clear;
    sql.Add(sqlstr);
    open;
    if not eof=bof then
      result:=fieldbyname('maxnum').AsInteger
    else
      result:=-1;
  end;
end;

function labelcount:integer;
var
  sqlstr:string;
begin
  sqlstr:='select count(*),yn from field_info where yn=''1'' group by yn';
  with dm.ADOQuery1 do
  begin
    close;
    sql.Clear;
    sql.Add(sqlstr);
    open;
    if not eof=bof then
      result:=recordcount
    else
      result:=-1;
  end;
end;

procedure AddRecord(tablename,prescode:string);   //每次从相应的表中读出prescode段的最大值,然后自加
var
  sqlstr:string;
begin
   sqlstr:='insert into '+tablename+' (prescode) values ('+quotedstr(prescode)+')';
   with dm.ADOQuery3 do
   begin
     close;
     sql.Clear;
     sql.Add(sqlstr);
     //Parameters[0].Value:=prescode;
     execsql;
   end;
end;

function SaveRecord(tabsheetnum:integer;prescode:string):boolean;     //当不是新增从属子信息的保存
var
  values:string;
  table_name,field:string;
  code:string;
  i,j:integer;
  sqlstr:string;
  index:integer;
  filehandle:integer;
  setpath:string;
  tmpyear,tmpmonth:integer;
  Year,Month,Day:word;
  temp:string;
  NianLin:integer;
  seafield:string;
  Selrow:integer;
  xhindex:integer;
  b_exist:boolean;
  xhfieldname:string;
begin
   xhfieldname:='';
   b_exist:=true;
   seafield:='xh';
   result:=false;
   sqlstr:='select * from field_info where yn=''1'' and page='+inttostr(tabsheetnum);
     with dm.ADOQuery1 do
     begin
       close;
       sql.Clear;
       sql.Add(sqlstr);
       open;
       first;
       while not eof do
       begin
        index:=fieldbyname('ord').AsInteger-1;
      //从界面上取值
          if  (fieldbyname('type').AsString='N') then
          begin
            xhindex:=index;
            xhfieldname:=fieldbyname('field').asstring;
          end;
          if (fieldbyname('type').AsString='E') or (fieldbyname('type').AsString='UE')   then
          begin
            values:=editbox[tabsheetnum-1][index].Text;
          end;
          if (fieldbyname('type').AsString='B')  then
          begin
            if checkbox[tabsheetnum-1][index].Checked=true then
               values:='是'
          else
               values:='否';
          end;
          if (fieldbyname('type').AsString='M')  then
          begin
            values:=memo[tabsheetnum-1][index].Text;
          end;
          if (fieldbyname('type').AsString='D')  then
          begin
            values:=maskedit[tabsheetnum-1][index].Text;
            if (fieldbyname('lab_name').AsString='出生年月') and (tabsheetnum=1) then
            begin
              decodedate(now,year,month,day);
              NianLin:=strtoint(copy(inttostr(Year),1,4))-strtoint(copy(values,1,4));
            end;
          end;
          if fieldbyname('type').AsString='C'  then
          begin
            values:=combobox[tabsheetnum-1][index].Text;
          end;
          if (fieldbyname('type').asstring='N') then
          begin
            values:=editbox[tabsheetnum-1][index].Text;
          end;
        if dm.ADOQuery1.FieldByName('lab_name').AsString<>'修改记录项' then
        begin
        table_name:=dm.ADOQuery1.FieldValues['table_name'];
        field:=dm.ADOQuery1.FieldValues['field'];
       {1022修改
        原因,因为若表中没有该记录则不能保存该修改信息}
        with dm.ADOQuery2 do
        begin
          close;
          sql.Clear;
          sql.Add('select * from ' +table_name + ' where prescode='+quotedstr(gencode));
          open;
          if dm.ADOQuery2.Eof then
             b_exist:=false
          else
            b_exist:=true;
        end;
       //导入数据库
        with dm.ADOQuery2 do
        begin
          if values<>'' then
          begin
            if is_mult then
            begin
              if b_exist then
              begin
                  if  field=xhfieldname then
                    sqlstr:='update '+table_name+' set '+field+'='+values+' where prescode='+quotedstr(prescode)+' and '+seafield+'='+inttostr(xh_value)//quotedstr(frm_main.StringGrid1.Cells[0,comprow])
                  else
                    sqlstr:='update '+table_name+' set '+field+'='+quotedstr(values)+' where prescode='+quotedstr(prescode)+' and '+seafield+'='+inttostr(xh_value);//quotedstr(frm_main.StringGrid1.Cells[0,comprow]);  //yz1127
              end
              else
              begin
               if field=xhfieldname then
               begin
               //200516增加:人员编号根据自动编号字段确定,保证数据交换时编号唯一连续
                sqlstr:='insert into ' + table_name+ '(prescode,'+field+') values('+quotedstr(gencode)+','+values+')';
               end
               else
                 sqlstr:='insert into ' + table_name+ '(prescode,'+field+') values('+quotedstr(gencode)+','+quotedstr(values)+')';
              end;
            end
            else
              if b_exist then
                 if field=xhfieldname then
                   sqlstr:='update '+table_name+' set '+field+'='+values+' where prescode='+quotedstr(prescode)
                 else
                   sqlstr:='update '+table_name+' set '+field+'='+quotedstr(values)+' where prescode='+quotedstr(prescode)
              else
                  if field=xhfieldname then
                    sqlstr:='insert into ' + table_name+ '(prescode,'+field+') values('+quotedstr(gencode)+','+values+')'
                  else
                    sqlstr:='insert into ' + table_name+ '(prescode,'+field+') values('+quotedstr(gencode)+','+quotedstr(values)+')';
          end
          else
          begin
            if is_mult then
            begin
              if comprow=0 then
                comprow:=1;
              if b_exist then
                sqlstr:='update '+table_name+' set '+field+'=null where prescode='+quotedstr(prescode)+' and '+seafield+'='+inttostr(xh_value)//quotedstr(frm_main.StringGrid1.Cells[0,comprow])
              else
                sqlstr:='insert into ' + table_name+ '(prescode,'+field+') values('+quotedstr(gencode)+',null)';
            end
            else
              if b_exist then
                sqlstr:='update '+table_name+' set '+field+'=null where prescode='+quotedstr(prescode)
              else
                sqlstr:='insert into ' + table_name+ '(prescode'+field+') values('+quotedstr(gencode)+','+'null)';
          end;
          close;
          sql.Clear;
          sql.Add(sqlstr);
          execsql;
        end;
        end;
        next;
      end;
      if trim(gencode)='' then
      begin
        close;
        sql.Clear;
        sql.Add('select max(id) as maxid from a01');
        open;
        gencode:=fieldbyname('maxid').AsString;
        sqlstr:='update '+table_name+' set prescode='+quotedstr(gencode)+' where id='+fieldbyname('maxid').AsString;
        close;
        sql.Clear;
        sql.Add(sqlstr);
        execsql;
      end;
      result:=true;
  end;
  if is_mult then
  begin
    updatestringgrid;
  end;
  if frm_main.PageControl1.ActivePageIndex=1 then
  begin
    with dm.ADOQuery2 do
    begin
      close;
      sql.Clear;
      sqlstr:= 'update a02 set a0209='+quotedstr(company_code)+',a0206='+quotedstr(company_name)+' where xh='+inttostr(xh_value);
      sql.add(sqlstr);
      execsql;
    end;
  end;
end;

procedure DelRecord(tablename,prescode:string);
var
  sqlstr:string;
  name:string;
  str:pansichar;
begin
    sqlstr:='delete '+tablename+' where perscode='+quotedstr(prescode);
    with dm.ADOQuery2 do
    begin
      close;
      sql.Clear;
      dm.ADOQuery2.SQL.Text:='delete from '+tablename+' where prescode='+quotedstr(prescode);//sql.Add(sqlstr);
      execsql;
    end;
end;

procedure ClearAllComp;
var
  i,j:integer;
  sqlstr:string;
  index:integer;
begin
  for i:=0 to tabsheetcount-1 do
  begin
    sqlstr:='select * from field_info where yn=''1'' and page='+inttostr(i+1);
    with dm.ADOQuery3 do  //内循环
    begin
      close;
      sql.Clear;
      sql.Add(sqlstr);
      open;
      first;
      while not eof do //创建label,之后编辑框
      begin
        index:=fieldbyname('ord').AsInteger-1;
        if (fieldbyname('type').AsString='E') OR (fieldbyname('type').AsString='UE')  then
           editbox[i][index].Text:='';
        if fieldbyname('type').AsString='D' then
           maskedit[i][index].Text:='';
           //maskedit[i][index].DateTime:=now;
        if fieldbyname('type').AsString='C' then
          combobox[i][index].Text:='';
        if fieldbyname('type').AsString='M' then
          memo[i][index].Text:='';
        if fieldbyname('type').AsString='B' then
          checkbox[i][index].Checked:=false;
        if fieldbyname('type').AsString='N' then
          editbox[i][index].Text:='';
      next;
      end;
    end;
  end;
    frm_main.Label1.Caption:='';
    for j:=0 to frm_main.StringGrid1.RowCount-1 do
    begin
      frm_main.StringGrid1.Rows[j].Clear;
    end;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -