置顶随笔

[置顶]一个简单的文本框控件

摘要: 这一个简单的文本框控件主要实现在了IPostBackDataHandler, IEditableTextControl, ItextControl三个接口。IPostBackDataHandler IEditableTextControl主要有事件event EventHandler TextChanged;有ItextControl主要有一个Text属性接口说明:IPostBackDataHan...阅读全文
posted @ 2006-06-05 11:25 老狐狸 阅读(546) 评论(0) 编辑
2007年9月3日

关于Update语句在不同数据库中的差别

Oralce和DB2都支持的语法:
UPDATE A 
 
SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)

MS SQL Server不支持这样的语法,相对应的写法为:
UPDATE A 
    
SET A1 = B1, A2 = B2, A3 = B3 
    
FROM A LEFT JOIN B ON A.ID = B.ID

个人感觉MS SQL Server的Update语法功能更为强大。MS SQL SERVER的写法:
UPDATE A 
    
SET A1 = B1, A2 = B2, A3 = B3
    
FROM A, B WHERE A.ID = B.ID

在Oracle和DB2中的写法就比较麻烦了,如下:
UPDATE A 
    
SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
    
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)
posted @ 2007-09-03 09:26 老狐狸 阅读(47) 评论(0) 编辑
2006年10月24日

出错存储过程

包头:
create or replace package ErrorLog is

  -- Author  : tuil
  -- Created : 2006-9-18 13:45:53
  -- Purpose :

  -- Public type declarations
  TYPE type_cur IS REF CURSOR;
  procedure InsertLogError(ErrorId     in varchar2,
                                       Application in varchar2,
                                       Host        in varchar2,
                                       Type        in varchar2,
                                       Source      in varchar2,
                                       Message     in varchar2,
                                       User        in varchar2,
                                       AllXml      in clob default null,
                                       StatusCode  number,
                                       TimeUtc     in date);
  procedure GetMasterErrorsXml(Application in varchar2,
                         PageIndex   in number,
                         PageSize    in number,
                         TotalCount  out number,
                         v_cur       out type_cur);
  procedure GetDetailErrorXml(Application in varchar2,
                              ErrorId     in varchar2,
                              v_cur       out type_cur);

end ErrorLog;
包体:
create or replace package body ErrorLog is

  procedure InsertLogError(ErrorId     in varchar2,
                       Application in varchar2,
                       Host        in varchar2,
                       Type        in varchar2,
                       Source      in varchar2,
                       Message     in varchar2,
                       User        in varchar2,
                       AllXml      in clob default null,
                       StatusCode  number,
                       TimeUtc     in date) is
  begin
    insert into s_errorlog
      (errorid,
       application,
       host,
       type,
       source,
       message,
       username,
       statuscode,
       timeutc,
       SEQUENCE,
       allxml)
    values
      (ErrorId,
       Application,
       Host,
       Type,
       Source,
       message,
       User,
       StatusCode,
       timeutc,
       SEQ_S_ERRORLOG.Nextval,
       AllXml);
  end InsertLogError;
  procedure GetMasterErrorsXml(Application in varchar2,
                               PageIndex   in number,
                               PageSize    in number,
                               TotalCount  out number,
                               v_cur       out type_cur) is
 
    v_sql   VARCHAR2(1000);
    v_count number;
    v_Plow  number;
    v_Phei  number;
  Begin
    -----------------------------------------取分页总数
    v_sql := 'select count(*) from s_errorlog t where t.Application=''' ||
             Application || '''';
    execute immediate v_sql
      into v_count;
    TotalCount := ceil(v_count / PageSize);
    --------------------------------------------显示任意页内容
    v_Plow := PageIndex * PageSize + 1;
    v_Phei := v_Plow + PageSize - 1;
    v_sql  := 'SELECT ErrorId,
    Application,
    Host,
    Type,
    Source,
    Message,
    username,
    StatusCode,
    TimeUtc
    FROM (SELECT ErrorId,
        Application,
        Host,
        Type,
        Source,
        Message,
        username,
        StatusCode,
        TimeUtc, row_number() over(ORDER BY Sequence DESC) rn
    FROM  s_errorlog a WHERE A.application = ''' || Application || ''')
    WHERE rn BETWEEN ' || v_Plow || ' AND ' || v_Phei || '';
    open v_cur for v_sql;
 
  end;

  procedure GetDetailErrorXml(Application in varchar2,
                              ErrorId     in varchar2,
                              v_cur       out type_cur) is
    v_sql VARCHAR2(1000);
  begin
    v_sql := 'select allxml from s_errorlog t where t.application = ''' ||
             Application || ''' and t.errorid =''' || ErrorId || '''';
    open v_cur for v_sql;
  end;
end ErrorLog;
表结构:
create table S_ERRORLOG
(
  ERRORID     VARCHAR2(50) not null,
  APPLICATION VARCHAR2(60),
  HOST        VARCHAR2(50),
  TYPE        VARCHAR2(100),
  SOURCE      VARCHAR2(60),
  MESSAGE     VARCHAR2(500),
  USERNAME    VARCHAR2(50),
  STATUSCODE  NUMBER,
  TIMEUTC     DATE,
  SEQUENCE    NUMBER,
  ALLXML      CLOB
)

posted @ 2006-10-24 14:49 老狐狸 阅读(52) 评论(0) 编辑

F_GETTABLELID

create or replace function F_GETTABLELID(strTableName  IN VARCHAR2 DEFAULT NULLreturn VARCHAR2 is
  Result 
VARCHAR2(9);
  StoO_rowcnt      
INTEGER;
  strIndex         
NUMBER(90);
BEGIN
  
NULL;
  
BEGIN
    StoO_rowcnt :
= 0;
    
UPDATE SS_TablesID T
       
SET t.CurrentIDindex = t.CurrentIDindex + 1
     
WHERE TableName = strTableName RETURNING CurrentIDindex INTO
     strIndex;
    StoO_rowcnt :
= SQL%ROWCOUNT;
  EXCEPTION
    
WHEN NO_DATA_FOUND THEN
      
NULL;
    
WHEN OTHERS THEN
      raise_application_error(SQLCODE, SQLERRM, true);
  
END;
  
IF StoO_rowcnt = 0 THEN
    
BEGIN
      strIndex :
= 1;
      
BEGIN
        
INSERT INTO SS_TablesID
          (TableName, CurrentIDindex)
        
VALUES
          (strTableName, strIndex);
      EXCEPTION
        
WHEN NO_DATA_FOUND THEN
          
NULL;
        
WHEN OTHERS THEN
          raise_application_error(SQLCODE, SQLERRM, true);
      
END;
    
END;
  
END IF;
  Result :
= lpad(CAST(strIndex as varchar2), 9'0');
  
return(Result);
end F_GETTABLELID;
多表时:
CREATE OR REPLACE PROCEDURE F_GETMULTITABLELID(strTableName IN VARCHAR2 DEFAULT NULL,
                                               num          
IN VARCHAR2 DEFAULT NULL,
                                               strstartID   
IN OUT VARCHAR2,
                                               strendID     
IN OUT VARCHAR2AS
  StoO_rowcnt 
INTEGER;
  strIndex    
NUMBER(90);
BEGIN
  
NULL;
  
BEGIN
    StoO_rowcnt :
= 0;
    
UPDATE SS_TablesID T
       
SET t.CurrentIDindex = t.CurrentIDindex + 1
     
WHERE TableName = strTableName RETURNING CurrentIDindex INTO strIndex;
    StoO_rowcnt :
= SQL%ROWCOUNT;
  EXCEPTION
    
WHEN NO_DATA_FOUND THEN
      
NULL;
    
WHEN OTHERS THEN
      raise_application_error(SQLCODE, SQLERRM, true);
  
END;
  
IF StoO_rowcnt = 0 THEN
    
BEGIN
      strIndex :
= 1;
      
BEGIN
        
INSERT INTO SS_TablesID
          (TableName, CurrentIDindex)
        
VALUES
          (strTableName, strIndex);
      EXCEPTION
        
WHEN NO_DATA_FOUND THEN
          
NULL;
        
WHEN OTHERS THEN
          raise_application_error(SQLCODE, SQLERRM, true);
      
END;
    
END;
  
END IF;
  strstartID :
= CAST(strIndex as varchar2);
/*取下面几个ID*/
  
BEGIN
    
UPDATE SS_TablesID
       
SET CurrentIDindex = CurrentIDindex +
                             (
CAST(num AS NUMBER(90)) - 1)
     
WHERE 
       TableName 
= F_GETMULTITABLELID.strTableName RETURNING
     CurrentIDindex 
INTO strIndex;
  EXCEPTION
    
WHEN NO_DATA_FOUND THEN
      
NULL;
    
WHEN OTHERS THEN
      raise_application_error(SQLCODE, SQLERRM, true);
  
END;
  F_GETMULTITABLELID.strendID :
= CAST(F_GETMULTITABLELID.strIndex AS
                                      
VARCHAR2);
end F_GETMULTITABLELID;
posted @ 2006-10-24 14:47 老狐狸 阅读(32) 评论(0) 编辑
2006年8月19日

正则表达式求值

请教各位高手。在字符串 str = "i have #a problem# ,#thank you# for help #me,you# are good";
我想通过正则表达式或者其他效率比较高的方法求的在# #之间的字符如:(a problem)   ( thank you)  (me,you)
谢谢各位大虾啦!

posted @ 2006-08-19 09:04 老狐狸 阅读(39) 评论(0) 编辑
2006年8月17日

创建层次查询

select level, lpad(' ', 2 * level - 1, '--') || t.deptname, t.deptid
  from lbi_department t
 start with t.deptid = 1
connect by prior t.deptid = t.parentid
posted @ 2006-08-17 13:39 老狐狸 阅读(58) 评论(0) 编辑
2006年8月16日

ultrawebgrid

//获得数据网格选中行的行号
        function GetSelectRowIndex()
        
{
            
var oGrid = ogrdOpition;
            
if (oGrid == null)
            
{
                alert(
"对不起,请先选择一条资产信息!");
                
return -1;
            }

            
if (oGrid.getActiveRow() == null || oGrid.getActiveRow() == 'undefined')
            
{
                alert(
"对不起,请先选择一条资产信息!");
                
return -1;
            }

            
//return 2;
            return oGrid.getActiveRow().getCell(0).getValue();
        }
function gidManager_AfterCellUpdateHandler(gridName, cellId){
            
var cellList = cellId.split("_");
            
if(cellList[1== null||cellList[2== null)
                
return;
                
            
var cellRowIndex = cellList[1];
            
var cellColIndex = cellList[2];
            
var cellValue = ogidManager.Rows.getRow(cellRowIndex).getCell(cellColIndex).getValue();
            
var NetValue = ogidManager.Rows.getRow(cellRowIndex).getCell(7).getValue();//净值
            var RemainValue = ogidManager.Rows.getRow(cellRowIndex).getCell(8).getValue();//残值
            if(cellValue == null)
            
{
                ogidManager.Rows.getRow(cellRowIndex).getCell(cellColIndex).setValue(
0);
            }

            
if(NetValue - cellValue< RemainValue)
            
{
                
if(confirm("<%=sDisAmountName%>过大,净值减去<%=sDisAmountName%>应该大于残值,是否让系统自动修改?"))
                
{
                    ogidManager.Rows.getRow(cellRowIndex).getCell(cellColIndex).setValue(NetValue 
- RemainValue);
                }

            }
    
        }
    

var oRows = oGrid.Rows;
(oRow.getCell(0).getValue() == "true"如果为checkBox
求和
function grdOffice_AfterCellUpdateHandler(gridName, cellId){
            
//Add code to handle your event here.
            SumAmount();
        }

        
        
function SumAmount()
        
{
            
var total = 0;
            
for (var i=0;i<ogrdOffice.Rows.length;i++)
            
{
                total 
= total + parseFloat(ogrdOffice.Rows.getRow(i).getCell(2).getValue());
            }

            document.getElementById(
"grdOfficef_0_2").innerText = "¥ " + total.toFixed(2);
        }

private 
void grdOffice_InitializeLayout(object sender, Infragistics.WebUI.UltraWebGrid.LayoutEventArgs e)
        
{
            Infragistics.WebUI.UltraWebGrid.UltraGridColumn c ;
            Infragistics.WebUI.UltraWebGrid.ColumnFooter cf;

            c  
= e.Layout.Bands[0].Columns.FromKey("EXPENSENAME");
            cf 
= c.Footer ;
            cf.Key 
= "EXPENSENAME";
            cf.Caption 
= "合计";

            c  
= e.Layout.Bands[0].Columns.FromKey("AMOUNT");
            cf 
= c.Footer ;
            cf.Key 
= "AMOUNT";
            cf.Caption 
= "";
            cf.Total 
= Infragistics.WebUI.UltraWebGrid.SummaryInfo.Sum;
        }
            

ogridExpenseAccount.Rows.getRow(rowIndex).getCell(0).setValue(checkvalue == "true"?"false":"true");
posted @ 2006-08-16 16:51 老狐狸 阅读(656) 评论(0) 编辑

javascript

<IFRAME id="Ifr" frameBorder="no" width="100%" scrolling="no" height="100%" runat="server">
更改其 scr
document.getElementById("Ifr").contentWindow.document.location.replace("BudegeDgrd.aspx?Feetype="+sFeetType+"&Deptid="+sDptID+"&sTime="+time);    

var ss = val.split(",");
parent.parent.topFrame.document.all.tableHead.style.display 
= "none";
parent.parent.topFrame.document.all.tableHead.style.display 
= "";
hrefstr 
= window.location.href; 
pos 
= hrefstr.indexOf("?");
 parastr 
= hrefstr.substring(pos+1);
 para 
= parastr.split("&"); 
for(i=0;i<para.length;i++)
     
var value = para[0];

document.all("dplDeptType").options.add(new Option(name,id));
function OpenModalDialog() { window.showModalDialog(addUrl+'&title='+escape('增加人员费用信息')+'&DeptType='+GetParastr("DeptType"), window, sStyle) ; }
return confirm("确定保存并送审吗?");<inpu t type="button" value= "" class="cancelbutton" onclick="javascript:window.close()">
var dplDeptType=document.getElementById("dplDeptType");
var text = dplDeptType.options[dplDeptType.selectedIndex].text;
var value = depDeptType.value;
Page.RegisterStartupScript("click","<script language = javascript>window.dialogArguments.document.forms[0].btnQuery.click();</script>");
posted @ 2006-08-16 16:32 老狐狸 阅读(44) 评论(0) 编辑
2006年7月18日

case when用法和and 后加条件

摘要: SELECTA.OrderSIDasInvId,E.BizInvTypeasTypeCode,E.TypeNameasTypeName,B.SimpleNameasCorpName,C.StorNameasStorName,CASEWHENF_BS001QRYIONOTICE.UnitLevel_='1'THEN-A.TotalDefQty/250WHENF_BS001QRYIONOTICE.Un...阅读全文
posted @ 2006-07-18 13:19 老狐狸 阅读(453) 评论(0) 编辑
2006年7月12日

exp/imp导出导入工具的使用

摘要: imp username/password@linkName file=fileName tables=(tableName,tableName)一. 导出工具 exp1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移 它有三种模式: a. 用户模式: 导出用户所有对象以及对象中的数据; ...阅读全文
posted @ 2006-07-12 16:54 老狐狸 阅读(103) 评论(0) 编辑
2006年6月27日

ASP.NET1.1中Grid自定义眉头

摘要: protectedvoidgrid_ItemCreated(objectsender,DataGridItemEventArgse){if(e.Item.ItemType==ListItemType.Header){e.Item.SetRenderMethodDelegate(newRenderMethod(NewRenderMethod));}elseif(e.Item.ItemType==Li...阅读全文
posted @ 2006-06-27 13:45 老狐狸 阅读(62) 评论(0) 编辑