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

📄 sybquery.pas

📁 sybase大全
💻 PAS
📖 第 1 页 / 共 2 页
字号:
                navigator.btnlast.enabled:=true;
              end;
            end;
        -2 :begin
{              if first_flag then}
              begin
                navigator.btnfirst.enabled:=true;
                navigator.btnprior.enabled:=true;
                navigator.btnnext.enabled:=false;
                navigator.btnlast.enabled:=false;
              end;
            end;
      end;
    end;
    currrownum:=dbcurrow(dbProc);
    if currrownum > lastrownum then
      lastrownum:=currrownum;
  end
  else
  begin
    result:=No_More_Rows;
  end;

  sproc_retcode:=result;
end;

function Tsybquery.prevrow:integer;
var value :string[255];
    retcode3:integer;
begin
  result:=0;
  sproc_retcode:=0;
  if (retcode = Succeed) then
  begin
    currrownum:=dbcurrow(dbProc);
    if currrownum > 1 then
      dec(currrownum);
    retcode3 := dbgetrow(dbproc,currrownum);
    if retcode3 = -2 then
    begin
      Result:=retcode3;
      sproc_retcode:=result;
      exit;
    end;
    if fupdatefields then
      update_fields;
    if navigator <> nil then
    begin
      if currrownum = 1 then
      begin
        navigator.btnfirst.enabled:=false;
        navigator.btnprior.enabled:=false;
        navigator.btnnext.enabled:=true;
        navigator.btnlast.enabled:=true;
      end
      else
      begin
        navigator.btnfirst.enabled:=true;
        navigator.btnprior.enabled:=true;
        navigator.btnnext.enabled:=true;
        navigator.btnlast.enabled:=true;
      end;
    end;
    Result:=retcode3;
  end
  else
  begin
    retcode:=No_More_Rows;
    result:=No_More_Rows;
  end;
  sproc_retcode:=result;
end;

function Tsybquery.firstrow:integer;
var value :string[255];
    retcode3:integer;
begin
  result:=0;
  sproc_retcode:=0;
  if (retcode = Succeed) then
  begin
    retcode3 := dbgetrow(dbproc,firstrownum);
    Result:=retcode3;
    if fupdatefields then
      update_fields;
    if navigator <> nil then
    begin
      navigator.btnfirst.enabled:=false;
      navigator.btnprior.enabled:=false;
      navigator.btnnext.enabled:=true;
      navigator.btnlast.enabled:=true;
    end;
  end
  else
    result:=No_More_Rows;
  sproc_retcode:=result;
end;

function Tsybquery.lastrow:integer;
var value :string[255];
    retcode3:integer;
begin
  result:=0;
  sproc_retcode:=0;
  if (retcode = Succeed) then
  begin
    retcode3 := dbgetrow(dbproc,dblastrow(dbProc));
    if fupdatefields then
      update_fields;
    if navigator <> nil then
    begin
      navigator.btnfirst.enabled:=true;
      navigator.btnprior.enabled:=true;
      navigator.btnnext.enabled:=false;
      navigator.btnlast.enabled:=false;
      Result:=retcode3;
    end;  
  end
  else
    result:=No_More_Rows;
  sproc_retcode:=result;
end;

function Tsybquery.column(index:byte):string;
begin
  result:=strpas(dbvalue(dbproc,index))
end;

function Tsybquery.heading(index:byte):string;
begin
  result:=strpas(dbcolname(dbproc,index))
end;

function Tsybquery.coltype(index:byte):string;
begin
  result:=strpas(dbprtype(dbcoltype(dbproc,index)))
end;

function Tsybquery.collength(index:byte):integer;
begin
  result:=dbcollen(dbproc,index)
end;

function Tsybquery.ischar(index:byte):boolean;
var colltyp  :string;
begin
  result:=false;
  if (coltype(index)='char')
    or (coltype(index)='text')
    or (coltype(index)='datetime')
    or (coltype(index)='smalldatetime') then
  begin
    result:=true;
    exit;
  end;
  if (coltype(index)='binary')
    or (coltype(index)='tinyint')
    or (coltype(index)='smallint')
    or (coltype(index)='int')
    or (coltype(index)='float')
    or (coltype(index)='real')
    or (coltype(index)='numeric')
    or (coltype(index)='decimal')
    or (coltype(index)='bit')
    or (coltype(index)='money')
    or (coltype(index)='smallmoney')
    or (coltype(index)='sum')
    or (coltype(index)='avg')
    or (coltype(index)='count')
    or (coltype(index)='min')
    or (coltype(index)='max') then
  begin
    result:=false;
  end;
end;

procedure Tsybobjectproperty.GetValues(TheProc: TGetStrProc);
var
{  SqlCommand:array[0..8000] of char;}
  Login,Retcode,retcode2,i:integer;
  dbname :SybObjectname;
  s      :string;
  tslist:Tsybquery;
  adatabase :tsybdatabase;
begin
  tslist:=Tsybquery(getcomponent(0));

  if getname = 'DbName' then
  begin
    if databaseslist <> nil then
      for i:=0 to (sybase_components.databaseslist.count-1) do
      begin
        adatabase:=databaseslist[i];
       theproc(adatabase.name);
      end;
  end
end;

function Tsybobjectproperty.getattributes:Tpropertyattributes;
begin
  Result := [paValueList,paAutoUpdate,paMultiSelect];
end;

procedure tsybquery.get_dbproc;
var i         :integer;
    adatabase :tsybdatabase;
begin
  if not autodbproc then
    exit;
  if sybase_components.databaseslist <> nil then
    for i:=0 to (sybase_components.databaseslist.count-1) do
    begin
      adatabase:=databaseslist[i];
      if FDbName = adatabase.name then
      begin
        setdbproc(adatabase.dbproc);
        break;
      end;
    end;
end;

function Tstringsproperty.getvalue:string;
begin
  result:=getstrvalue;
end;

procedure Tstringsproperty.setvalue(const value:string);
begin
  setstrvalue(value);
end;

procedure Tstringsproperty.edit;
var
  OKBottomDlg: TOKBottomDlg;
begin
  OKBottomDlg:=TOKBottomDlg.create(nil);
  OKBottomDlg.memo.text:=getstrvalue;
  OKBottomDlg.showmodal;
  if OKBottomDlg.modalresult = mrok then
  begin
    setstrvalue(OKBottomDlg.memo.text);
  end;
  OKBottomDlg.free;
end;

function Tstringsproperty.getattributes:Tpropertyattributes;
begin
  result:=[padialog];
end;

procedure Tsybquery.addfield(value:SybObjectname);
var i  :smallint;
begin
  for i:=1 to fieldscount do
  begin
    if fields[i]=value then
      exit;
  end;
  inc(fieldscount);
  fields[fieldscount]:=value;
end;

procedure Tsybquery.deletefield(value:SybObjectname);
var i,j  :smallint;
    newfields:array[1..100] of SybObjectname;
begin
  j:=0;
  for i:=1 to fieldscount do
  begin
    if fields[i] <> value then
    begin
      inc(j);
      newfields[j]:=fields[i];
    end;
  end;
  fieldscount:=j;
  for i:=1 to fieldscount do
    fields[i]:=newfields[i];
end;

procedure TSybQuery.update_fields;
var i,j    :integer;
    field  :tsybfield;
begin
  for i:=1 to numcols do
  begin

    if fieldslist <> nil then
    begin
      for j:=0 to fieldslist.count-1 do
      begin
        if (lowercase(tcomponent(fieldslist.items[j]).classname)='tsybedit') then
        begin
          if (tsybfield(fieldslist[j]).dataset = name)
           and (tsybfield(fieldslist[j]).datafield = heading(i))
           and (length(name)>0) and (length(heading(i))>0) then
          begin
            tsybfield(fieldslist[j]).value:=column(i);
          end;
        end
        else
        if (lowercase(tcomponent(fieldslist.items[j]).classname)='tsybmemo') then
        begin
          if (tsybmemo(fieldslist[j]).dataset = name)
           and (tsybmemo(fieldslist[j]).datafield = heading(i))
           and (length(name)>0) and (length(heading(i))>0) then
           tsybmemo(fieldslist[j]).value:=column(i);
        end
        else
        if (lowercase(tcomponent(fieldslist.items[j]).classname)='tsybcheckbox') then
        begin
          if (tsybcheckbox(fieldslist[j]).dataset = name)
           and (tsybcheckbox(fieldslist[j]).datafield = heading(i))
           and (length(name)>0) and (length(heading(i))>0) then
          tsybcheckbox(fieldslist[j]).value:=column(i);
        end
        else
        if (lowercase(tcomponent(fieldslist.items[j]).classname)='tsybradiobutton') then
        begin
          if (tsybradiobutton(fieldslist[j]).tablename = name)
           and (tsybradiobutton(fieldslist[j]).datafield = heading(i))
           and (length(name)>0) and (length(heading(i))>0) then
          tsybradiobutton(fieldslist[j]).value:=column(i);
        end;
      end;
    end;

  end;
end;

procedure tsybquery.get_databasefields;
var tmpquery :tsybquery;
    i        :integer;
begin

  get_dbproc;
  tmpquery:=tsybquery.create(nil);
  tmpquery.dbname:=dbname;
  tmpquery.dbproc:=dbproc;
  tmpquery.sql:=fdesignsql;
  datafieldscount:=0;
  tmpquery.sqlexec;
  for i:=1 to tmpquery.numcols do
  begin
    inc(datafieldscount);
    datafields[datafieldscount]:=tmpquery.heading(i);
  end;
  tmpquery.free;
end;

procedure tsybquery.LoadSqlFromFile(FileName :string);
begin
  clearsql;
  sql:=sybase_components.LoadFromFile(FileName);
end;

procedure TSybQuery.get_next_resultset;
var linenum,i,j,rows  :integer;
    p                 :pchar;
begin
  FCurrCmd:=dbcurcmd(dbProc);
  Retcode:=dbresults(dbProc);
  rows:=dbrows(dbProc);
  if rows = fail then
    setrowsreturned(false)
  else
    setrowsreturned(true);
  numcols:=dbnumcols(dbProc);
  FColumncount:=numcols;

  retcode2:=0;
  if retcode = Succeed then
  begin
    firstrownum:=1;
    lastrownum:=1;
  end;

end;

end.

⌨️ 快捷键说明

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