2011年10月13日

讓 TIPTOP Web-GDC 也可以修改字型大小

有些人會認為 TIPTOP 的字怎麼這麼小(預設是9 pt),是可以讓 GDC 預設字型大小改為更大一點,只要在 gdc.exe 後面加上參數 –a即可,不過如果是 Web ActiveX GDC呢,就不能用參數去改了。
 
有找到如何可以改 GDC 參數的功能。
/u1/genero/gas/tpl/fglgdcdefault.html 檔,有以下的參數提供修改。

    function configureGDC() {
      //uncomment following line to enable Admin Mode
      gdc.setAdmin(true);          // 開啟 Option 功能 

      //uncomment following line to enable Debug Mode
      //gdc.setDebug(true);         // 開啟 Debug功能

      //uncomment and modify the following line if you want to change the ping timeout (120 sec by default)
      //gdc.setPingTimeOut(120);   // 開啟 ping time out 功能

       //uncomment and modify the following line if you want to change the proxy (using system settings by default)
      //gdc.setProxy("proxy:3128")  // 開啟 proxy 功能

      // this is to ensure that any popup window will appear in front of the browser
      gdc.setFocus();             // 設為視窗動作中
    }


存檔後重新開啟。
就可以修改文字大小囉~~

讓 Oracle 也可以連結 SQL Server 讀取資料

要如何讓Oracle也可以整合 MS SQL Server ? Oracle有提供一套工具,10g版本稱之為 Oracle Transparent Gateway,到了11g之後改名為 Oracle Database Gateway,如果有購買Oracle DB的話,官方是可以免費提供使用的,不需額外購買,主要是讓Oracle可以做 DB-Link 。提供了許多異質資料庫的整合,詳細可查閱 Oracle Database Gateway 文件說明檔。

Oracle 官方網站下載,然後安裝 Oracle Database Gateway,選擇你所需要連結的資料庫類型。

再來就是預設會幫你建立一個連結設定

然後直接安裝就可以了,要一段時間

再來就是修改二個重要的檔案,首先是在 oracle\product\11.2.0\ts_1\dg4msql\admin,會有一個initdg4msql.ora檔。
修改為
HS_FDS_CONNECT_INFO=127.0.0.1//ERP
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
然後再修改檔案名稱initdg4msql.ora改為自已喜歡的 initerp.ora
第二個檔案就是修改 oracle\product\11.2.0\tg_1\NETWORK\ADMIN\ 裡面的listener.ora檔。
直接在最下面加上
SID_LIST_LISTENER=
  (SID_LIST=
      (SID_DESC=
         (SID_NAME=erp)
         (ORACLE_HOME=D:\Oracle\product\11.2.0\tg_1)
         (PROGRAM=dg4msql)
      )
  )
 之後再重新啟動 LISTENER

lsnrctl stop (停止)
lsnrctl start (啟動)
這樣就完成了 Oracle Database Gateway 的安裝和設定了。
再來就是第二部份,Oracle主機的部份。
首先就是要先建立連線服務的名稱,修改Oracle主機 oracle\product\11.2.0\dbhome_1\network\admin tnsnames.ora檔。
在最底下增加
ERP  =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))
    (CONNECT_DATA=(SID=erp))
    (HS=OK)
  )
 最後就是建立DB-Link,在SQL PLUS下指令,我試sa帳號好像不能使用,不過還是建議建立一個帳號比較好。
CREATE PUBLIC DATABASE LINK ERP CONNECT TO user IDENTIFIED BY password USING 'erp';
測試看看吧~~
select * from table_name@erp;
有結果啦~~

需要注意 Oracle 的所有 Object 英文是不區分大小寫的,但是 SQL Server 是有大小寫之分,
當執行 SQL 指令時, Oracle 會自動轉換為大寫的方式來執行,
必需要加上雙引號 " 的方式才能夠找到正確的 Table 名稱。
select * from "table_name"@erp;

2011年5月17日

fglWrt - 查詢 Tiptop 線上使用人數和狀況

要如何查詢目前有誰在 TIPTOP 系統線上呢?
還有目前總共有多少人在用,
當上線人數已滿的話,要如何把沒有在使用的 User 踢掉呢?

我想這個是 Tiptop 系統維護人員有時會很頭大吧!

fglWrt 指令可以做到以上這幾個問題喔~~
以下是 fglWrt 的所有參數:

Usage  : fglWrt [options]
 -l [license]: Installs a license.
 -v|-V       : Shows version information.
 -u          : Checks active users.
 -k key      : Installation key for license validation.
 -d          : Deletes current license.
 -i          : Clears the list of registered user sessions.
 -a opt      : Check or view options, possible options are:
               ps           : Shows processes on this machine.
               env          : Shows current environment.
               cpu          : Shows number of CPU in the computer.
               hostname     : Shows name of this machine.
               info license : Shows license information.
               info stat    : Shows statitics of license server.
               info users   : Shows all registered active users.
               info up      : Shows if license server is up.

查詢目前的線上人數和使用者:
fglWrt -a info users

要踢掉沒有在使用的 User :
fglWrt -i  

注意:我是直接使用這個指令,把 session 全部清除,正在 key 單的人會跳開,
所以執行前需看有沒有人 lock table 才能執行。
只是清除 server 上 genero 的 session 數而已,
所以不會影響已登入的 User (不會斷線或關閉程式),
這時就通知比較好的 User 快搶 session 吧~~~

2011年5月11日

重新建立 TIPTOP 測試區的環境

相信小地方修改,或是日積月累的修改程式,或是變更 Database Schema 時,
正式區和測試區的 4GL 程式和 Database Schema 會有不一樣的情況,
這時要如何快速的把正式區完全的蓋到測試區呢?

首先,把正式區的程式整個目錄 copy 到測試區的目錄,
記得不能全部複製喔~~ 只能複被各模組、共用程式、副程式。

1. \cp -r /u1/topprod/tiptop/a* /u1/toptest/tiptop  (先前一定要加 \ 喔,不然會一直問要不要覆蓋)
2. \cp -r /u1/topprod/tiptop/lib /u1/toptest/tiptop
3. \cp -r /u1/topprod/tiptop/sub /u1/toptest/tiptop
4. \cp -r /u1/topprod/tiptop/qry /u1/toptest/tiptop
5. \cp -r /u1/topprod/tiptop/g* /u1/toptest/tiptop

再來就是把全部客製程式都 copy 過去。

6. \cp -r /u1/topprod/topcust/c* /u1/toptest/topcust

程式的部份,這樣就不需要再重新 rebuild 囉~~整個動作應該是不會超過 5 分鐘。

接下來就是資料庫的部份:

首先把所有的測試資料庫都刪除吧~~ (包含 ds)
在 sqlplus 下執行 drop user ds cascade

還原正式區的 ds 資料庫到測試區的 ds 資料庫。
1. 建立空的 ds 資料庫: createdb ds 1
2. 匯入正式區 ds 備份檔到測試區的 ds DB:
       imp system/manager@toptest fromuser=ds touser=ds ignore = y file=ds.dmp log=ds.log
3. 匯入公司的資料到測試區,步驟同 1~2 。
4. 要記得修改 /u1/genero.run/etc/fglprofile.test 喔~~
    通常 createdb 參數是 1 的話,fglprofile.xxxx 檔是不會修改的。
dbi.database.aaa.source= "toptest"
dbi.database.aaa.username= "aaa"
dbi.database.aaa.password= "aaa"
dbi.database.aaa.schema= "aaa"
dbi.database.aaa.ora.prefetch.rows = 1
5. 完成,記得重新登入 udm7 試試看吧~

如果不行的話,要修改 zx_file 的 zx08 欄位,看預設的營運中心是否和測試資料庫一致。

資料庫要看資料的大小而定,不過應該是1個小時內可以搞定吧~~~

TIPTOP 程式/ Oracle 資料庫備份-集中備份篇

還記得之前有一篇文章:TIPTOP 主機定期備份 Oracle 資料 & TIPTOP 程式, 備份篇 嗎?
相信應該足夠使用了吧,
但還是有不足的部份,需要將 TIPTOP 主機設定 cron job ,然後再 cr 主機再設定排程工作,
實在是不符合統一集中備份的方式。

其實只要安裝 Oracle Client ,就可以將 Oracle 資料 export 到遠端的電腦,
這樣就可以一個指令,就可以完整的將全部的資料都在遠端的電腦上執行囉~~

以下是備份 Oracle 資料的批次檔,先轉換 Database 的字集,會有警告訊息,但還是可以正常匯出資料。

set NLS_LANG=TRADITIONAL CHINESE.AL32UTF8
exp system/sys_dsc@topprod owner=%1 log=d:\backup\tiptop\exp\%1.log file=d:\backup\tiptop\exp\%1.dmp

再來就是用 ftp 軟體去抓取 Tiptop 主機的程式檔案到本機電腦。

最後就是執行 RAR 的批次指令囉,
就可以在專屬的備份主機,主動的抓取 TITPOP 程式和 Oracle 資料庫來備份啦~

2011年3月23日

Oracle 如何還原已刪除的 Table / 清除回收筒

從 Oracle 10g 開始, 就開始提供有 recyclebin 的功能 (資源回收筒) ,
所以一旦不小心 drop table 刪錯了, 而且已經 commit ,
由於在 Oracle 10g 裡面的運作, 只是把原本的 Table 名稱換成 BIN$1234567890==$0 ,
沒關係, 只要把 recyclebin 裡面的物件還原就好啦~~
總是會有不小心的時候嘛~~
也由於沒有釋放 Tablespace 的空間, 也因此查詢 tablespace 佔用大小時就會越來越慢 ,
所以建議還是固定時間去清理一下 ,

以下就是整個還原會用到的相關指令 :

1. 查看目前有那些 Table
select * from tab

2. 查看資源回收有那些物件
select * from recyclebin;

select * from dba_recyclebin
或 SQLPLUS 的
SQL> show recyclebin

3. 再來就是還原指令
FLASHBACK TABLE [被刪除的 Table Name] TO BEFORE DROP;

如果是刪除 Table  不要放到 recyclebin 呢?
drop table recycletest purge;

當然囉, 也可以指定那些物件確定要清除 recyclebin
purge table recycletest;

要清空資源回收筒:
purge recyclebin;

purge dba_recyclebin;

要注意喔~ 建議用 BIN$1234567890==$0 當作 Table 名稱的方式來還原,
因為有可能建立重複的 Table 名稱, 到時候還原的方式是以後刪除的先還原,
BIN$1234567890==$0 數字越大表示越晚刪除的物件.

遇到重複 Table 的情況時, 可以還原的時候變更 Table 的名稱,
flashback table [刪除的 Table 名稱] to before drop rename to [要還原的 Table 名稱];

當然也可以打開或關閉資源回收筒的功能:
alter session set recyclebin = off;
alter system set recyclebin = off;

因 TIPTOP 執行批次作業或是報表的時候,都會產生暫存 Table 的,
像是 TT 開頭+一串數字+_文字 的 Table 就是暫存時產生的資料,以後也不會再用到了。
有時候也不會 DROP 掉一直存留著,或是就算 DROP 也會一直留在回收筒,
只要在 Oracle 建立排程,定時把這些垃圾都清一清吧~
declare
    str varchar2(1000);
    num number;
    begin
   --刪除 TEMP TABLE
    for i in(select table_name from user_tables ,user_objects where table_name like 'TT%' and created <= sysdate - 3 and table_name = object_name and object_type = 'TABLE' and tablespace_name = 'TEMPTABS')
    loop
    str:='drop table '||i.table_name||' purge ';
    execute immediate str ;
    commit;
   end loop;
   --清空回收筒
    for i in(select object_name,droptime from user_recyclebin where droptime < to_char(sysdate-3,'YYYY-MM-DD hh:mm:ss') and type= 'TABLE' order by droptime)
    loop
    str:='purge table "'||i.object_name||'" ';
    execute immediate str ;
    commit;
   end loop;
   end;

2011年3月16日

TIPTOP 和其他系統整合的架構

說到系統整合, 大家應該是惟恐不及吧~~
變成盡量讓其他的系統廠商去思考如何和 ERP 系統來整合,
但越來越多系統的話, 不就有越來越多的整合方式, 在管理上或問題釐清就變的複雜了.

在整合外部多種系統後發現, 比較容易和確實的就屬中介 Table 是最好的方式,
可以避免外部的系統直接寫入 ERP 的資料庫, 可以建立存取權限.
也讓系統整合能夠有足夠資料去稽核正確性.

再來就是系統整合的架構囉~

建立外部系統的 Oracle user account , 並在此 DB 帳號建立要讀取 ERP 的 readonly view ,
之後要取得 ERP 系統的資料, 就可以直接連到資料庫去 Select .
如果是要存入或異動資料到 ERP Database, 需要透過中介 Table 方式進行,
外部系統先寫入到中介 DB 的 Table (需先跟廠商溝通好整合的資料 Schema) ,
然後再由 ERP 用 cron job 或是手動的方式執行程式去建立或異動資料,
確認資料異動正確或錯誤, 回寫狀態碼給中介 DB 的 Table,
外部程式再去 Check 整合資料是否完整和正確.

整合系統讓權責能夠區分清楚, 避免以後維護和責任確認可以比較清楚和容易.

以 APS 的範例如下:
1. 和 APS 系統整合, 所以建立在 Oracle 建立 aps 的帳號名稱.
    使用 sys 帳號和 sysdba 方式登入
    conn sys/sys_dsc as sysdba;
    --create user
   CREATE USER aps
     IDENTIFIED BY aps
     DEFAULT TABLESPACE DBS1
     TEMPORARY TABLESPACE TEMP
     PROFILE TIPTOPGP
     ACCOUNT UNLOCK;
     -- 2 Roles for aps
     GRANT RESOURCE TO aps;
     GRANT TIPTOPGP TO aps;
     ALTER USER aps DEFAULT ROLE ALL;
     -- 5 System Privileges for aps
     GRANT UNLIMITED TABLESPACE TO aps;
     GRANT CREATE VIEW TO aps;
     GRANT CREATE TABLE TO aps;
     GRANT CREATE SYNONYM TO aps;
     GRANT CREATE SESSION TO aps;
     -- 1 Object Privilege for aps
     GRANT SELECT ON SYS.V_$SESSION TO aps;

2. 建立 aps 所要讀取 ERP 的 Table 資料 readonly view .
    我假設是全部 DS 裡面的 table 都可以讀取.
    select 'CREATE OR replace view aps.' || table_name || ' as
               select * from ds.' || table_name || ' with read only;'
      from  dba_tables
    where owner = 'DS'
    order by 1
   
    再把 SQL 執行後的資料, 全部複製再執行.
    或一個一個 table 加上去
    CREATE OR replace view aps.XXX_FILE as select * from ds.XXX_FILE with read only;

3. 在 aps Database 中建立中介 Table 的 Schema . 
    APS 會回寫工單和請購單, 所以我就叫 aps_sfb_file 和 aps_pml_file .

4. 使用者完成外部 APS 系統後, 回寫工單和請購單的資料到 ERP 系統,
    新增 APS 接口的程式, 去讀取中介 Table 和產生 ERP 的單號 .
    完成後回寫狀態到中介 Table .

2011年3月9日

TIPTOP Genero 呼叫本機的程式來執行

TIPTOP 導入之後, 再來就是一連串的外部程式整合囉~~
能夠提供公司全資訊化的服務, 才是 IT 價值所在.

最近想辦法整合條碼的設計軟體,
讓 TIPTOP 能夠抓取資料, 呼叫外部條碼軟體並丟參數值, 由條碼軟體列印出來.
這樣可以讓設計條碼的人就不是 IT 囉~~(這才是我的目的~~)
也簡化了作業的流程, 和日後的維護工作.

不過要如何做呢??
可以參考 cl_client_app.4gl 的程式,
就可以發現 GDC 是可以呼叫 Genero 稱之為"前端"的程式段, ( ui.Interface.frontCall )
只要在要呼叫外部軟體的程式上,加上 cl_open_prog("Shell的程式名稱","參數") ,
如果是多參數的話用 | (pipe) 來分隔.

以範例來說, 我是呼叫"記事本" (notepad) ,
然後檔案的位置在本機的 C:\TIPTOP\xxxxx.TXT ,
加上:

LET status = cl_open_prog("notepad","C:\\TIPTOP\\xxxxx.TXT")

這樣就完成啦~~~試試看吧~~~

2011年2月28日

多角貿易拋轉多倉儲批出貨收貨入庫單的問題

應該都知道出貨單可以多倉儲批出貨吧~
但收貨和入庫單是否可以多倉儲批呢?
當然是不行啦~ 只有出貨才能多筆倉儲批的數量合併成出貨單的同一項次.
所以拋轉到收貨單時變成了倉儲批的欄位是空白的. (那多角貿易就不能確保批號一致了)

問題來了, 這樣多角貿易不就不能用多倉儲批出貨了嗎?
難道要在出貨單一筆一筆 key 要出貨的資訊 ?
如果是鼎新的標準程式, 這是必然的, 必須出貨單產生多項才能避免此問題發生.
因為出貨單的項次和拋轉後的收貨入庫單項次是鎖死的. 必須要一致.
唉~

不過我們可以做以下的修改, 修改 saxmp900.4gl 的程式,
多抓 ogc_file ,並項次能夠是依 ogc_file 排序來自動編號, 這樣不就好了嗎?

1. 首先需要增加抓取 ogc_file 的資訊, 並只在中斷點的時候才做拆多倉儲批控管.

 2. 再來就是自動編號和產生多倉儲批的資訊囉~

3. 試拋看看吧. 看似很難其實很簡單吧.

要注意喔~ 修改確認段時, 就要注意取消確認段, 當然拋轉的程式也要注意拋轉還原囉~
所以記得也要改拋轉還原的程式啦~ 不然標準程式可是會拋轉還原失敗的.

2011年2月22日

請採購部門費用預算管控機制

相信每一家公司都是以營利為目的是吧?
不止要開源-增加訂單和出貨量,節流-控制部門的花費也是必要的管理手段.

如何讓 TIPTOP 實現公司部門費用的預算管理機制呢?
其實只是把功能打開就可以用囉~~
不過最重要的還是: 請購人員需要知道購買何種商品或是服務,
需要入到那一個費用的"會計科目",
入錯費用或是隨意輸入的話,當然就沒有管控的意義啦~

再來就是預算是以"年"為單位,
所以跨年度的預算的請購單, 當然最好是重 key 囉~ (有寫入年度的欄位就不能再續用了.)

如何開啟預算的呢?

1. 先匯入部門預算的資料. (相信應該原本就有在維護了吧~)

2. 會計科目開啟部門預算的控管.

3. 再來就是針對單別來做預算的功能開啟.

4. 之後就是各單位請購單, 記得在單身要維護部門的預算資料囉~~

PS : 部門費用預算的管制, 流程上會有一些程序上的問題,
       盡量能夠保有管控的機制才有意義.

2011年2月21日

如何查詢 TIPTOP 系統的所有欄位的內容和定義

我們在維護 TIPTOP 程式的時候, 會發現 SQL 指令要查詢那一個欄位.
用 p_zta 實在是不方便, 工作效率也不佳.

TIPTOP 在資料庫有紀錄欄位定義的 Table ,
以後只要查詢這一個 Table 就好啦~ 就可以快速查到你要的欄位定義和內容了.

範例參考 :
select * from ds.gaq_file
where gaq02 = '0'   --語言別
and gaq01 like '%ima%'   --Table 的代號
order by 1

是不是就方便許多了呢?

依不同國家的使用者設定不同時區

因 TIPTOP 系統是屬於 Clinet-Server 的架構, 如圖所示 :

也就是說, 所有的使用者端都是連線到伺服端裡面來執行程式,
伺服端執行完成後, 再把執行的結果的畫面傳回到使用者端,
所以 TIPTOP 登入的時間也就不是使用者本機的設定了,
而是 TIPTOP 主機 User profile 的設定.

要如何針對使用者讓顯示的時間是正確的呢?
很簡單, 只要針對 user 在 .profile 檔裡,
加入一行 export TZ=GST+8 就可以了 (以美國西岸為例) ,
再看時區為何來調整要加減多少.

但要注意喔~ .profile 檔不能是 link 的 file , 不然就所有使用者全部跟著改啦~
所以 .profile 檔要先移除 ln 再重新建立.

2011年2月17日

TIPTOP 主機定期備份 Oracle 資料 & TIPTOP 程式, 備份篇

相信 TIPTOP 主機的備份, 大多還是都存在 /u1/backup 目錄裡面,
而且只放一週的資料而已吧~~備份資料還有包含在正式區的測試資料庫...等。
再加上 TIPTOP GP 5.x 開始, 報表轉為 Crysal Report ,
需另外新增一台 IIS Web Service 的 CR 報表伺服器,
備份資料變的分散無法集中,再加上 Linux 沒有開啟 Samba 的服務,  (也比較安全一點)
備份上更是難以管理和紀錄.

好加在還有 FTP 的功能,提供資料上傳和下載的工具將資料移轉到另一台主機.
方便的做法當然是利用 CR 主機的 IIS 服務, 另外再加掛 ftp server 的功能囉~~
這樣備份就變的輕鬆而完整啦~~

TIPTOPGP 主機 --------經由 ftp-------->  CR 主機 ----------> 磁帶或遠端儲存媒體.
 (tar 程式 + exp Oracle DB)              (cr 報表檔)          (可以利用 rar 進行壓縮)

隨著時代不斷的進步,硬碟容量也比以前大很多囉,所以備份到硬碟也是可行的方法之一.
以下就是我的備份方式.皆用排程的方式來自動執行.省時又省力.

1. 上傳 ftp 的指令

2. 自動備份 Oracle 的匯出指令,首先要載入環境變數,讓排程會自動執行

3. 備份資料,可以排除一些 patch 和比較沒有用的資料檔, 節省備份時間和空間

4. 再來就是設定工作排程囉~~用 root 帳號登入後, 執行 crontab -e 來設定排程作業,
    範例說明是設定為早上 7 點自動執行.

5. 再補充一個 rar 的指令,讓資料能夠壓縮起來,資料庫的檔案大小可是差異很大的喔~~~
    可以壓縮大概 80% 的容量...100 MB 壓縮起來剩 20 MB 的磁碟空間大小.

當然囉~~市面上也有很多備份工具可以提供完整的 solution, 不過經濟又實惠的作法也是值得參考的.


2011年2月1日

如何用一個 SQL 來查 BOM -- 遞迴查詢

常常在設計連結資料庫程式的時候, 階層式架構的 Table 大致上都是母子在同一行的樣式來設計,                

資料庫 Table 是容易設計,不過呢? 要把所有的階層展開時,程式就不容易寫,且執行效能也低落,
其實 SQL 是可以做遞迴查詢的,不但不用寫程式一直 WHILE 跑迴圈 , 而且執行效率更快.

以下是 TIPTOP 5.x 的多階 BOM 的 Oracle 範例:

select level,bmb02,bmb01,bmb03,bmb04,bmb05 from bmb_file,bma_file,ima_file
where (bmb05 > sysdate or bmb05 is null)
  and (bmb04 < sysdate or bmb04 is null)
  and bma01 = bmb01 and bmaacti = 'Y'
  and bma01 = ima01
connect by  bmb01 = prior bmb03 and (bmb05 > sysdate or bmb05 is null) and (bmb04 < sysdate or bmb04 is null) and bmaacti = 'Y'
start with ima01 = '料件編號' and (bmb05 > sysdate or bmb05 is null) and (bmb04 < sysdate or bmb04 is null) and bmaacti = 'Y'

抓取最新的 BOM , 有生失效日的判斷 , 重點是還有階層數喔~~
可以試試看.

再提供一些相關的指令:
LEVEL:階數
SYS_CONNECT_BY_PATH(欄位,符號):可以列出整個路徑出來,符號用 -> 會比較清楚
CONNECT_BY_ISLEAF:可以判斷是不是最底層
CONNECT_BY_ROOT(欄位):顯示最上層的資料欄位
CONNECT_BY_ISCYCLE:判斷是否有迴圈
NOCYCLE:加在 CONNECT BY 後面有迴圈的就不繼續往下,可配合 CONNECT_BY_ISCYCLE 使用

2011年1月18日

同步不同 DB 的 Table -- 設定/取消 Oracle 的 Synonym 連結

公司有時需要每一個資料庫的 Table 都參考到 ds 或是母公司的資料庫,
像是權限管理預設就是 zx_file、zy_file、zw_file 都參考 ds 的資料庫,

因此要如何設定 Synonym 呢??

1. 先把原本的 table 刪除
    drop table xxx_file;

2. 再建立 synonym
    CREATE OR replace synonym DBUSER.xxx_file for ds.xxx_file;

那如果是要取消 synonym 呢??

1. 先把原本的 synonym 取消
    drop synonym  DBUSER.xxx_file;

2. 再把 table 建立回來,再加上設定為 PUBILC 可以讓其他 user 存取
    (使用 DB table 複製的功能會比較快)
    create table DBUSER.xxx_file as select * from ds.xxx_file where rownum = 1;
    delete DBUSER.xxx_file;
    grant all on sfa_file to public;

2011年1月1日

Crystal Report 在 IE 8 跳頁會錯亂

當多個 CR 報表產出顯示在 IE 8 時, 任一報表按下一頁,
結果會發現怎麼 A 報表下一頁會接到 B 報表 ??
原來是因為 IE 8 的核心預設是會共同 Frame 的關係.

共同 Frame 好處,記憶體的耗用會比較低 (還記得之前的 KKMAN,類似的作法),
不過現在電腦都 1G , 2G 以上的 RAM 了, 對 IE 差不多只需 30~40 MB 的記憶體,已經相當足夠了,因此可以把 Frame 區分開來.

加入 Register 到電腦後,重新開機即可生效.

把下面文字的部份,儲存成 xxx.reg ,再執行.

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"FrameMerging"="0"

2010年12月15日

查出所有 TIPTOP 使用者的所有程式權限清單

公司可能有規定需要定期去檢視 TIPTOP 系統權限是否設定正確.
因此提供 SQL 指令把所有人員的 TIPTOP 系統權限清單列示出來,
就方便各主管去檢視囉~~

參考以下指令 :
select zx01,zx02,zx03,zx04,'','',zxw04,gaz03,zxw05 from zx_file,zxw_file,gaz_file
where zx01 = zxw01
and zxw03 = 2
and zxw04 = gaz01(+)
and (gaz02 = 0 or gaz02 is null)
union
select zx01,zx02,zx03,zx04,zy01,zw02,zy02,gaz03,zy03 from zx_file,zxw_file,zw_file,zy_file,gaz_file
where zx01 = zxw01
and zxw03 = 1
and zxw04 = zy01
and zxw04 = zw01
and zy02 = gaz01(+)
and (gaz02 = 0 or gaz02 is null)
order by 1,5

2010年12月1日

職委會在 TIPTOP 如何建置 ?? 多帳別設定.

相信每一間公司都有職委會慰勞大家在辛苦的工作能放鬆一下心情,
不過職委會是現金流入流出制的會計原則,
一般只會在總帳切傳票做流水帳記錄,
新增一個資料庫區分 BU 反而顯的殺雞用牛刀的感覺,
可以試試看 TIPTOP 5.x 版以上的多帳別的功能,
輕輕鬆鬆就可以達成囉~~沒事跟會計人員泡茶聊天吧~~

步驟:
1. agli101 帳別資料維護, 新增福委會帳別.

2.agli102 科目資料明細維護,加入職委會所需的會計科目.

3.重點來了,如何讓會計人員可以輸入傳票呢??
   在 p_zz 加入新程式, 記得要帶參數,以範例職委會帳別是 02

4.之後就有專屬於職委會的傳票作業囉~~~所有報表也可以輸入帳別 02 即可以執行.

簡單吧~~

2010年11月25日

新進 IT 人員的 TIPTOP 系統帳號設定

公司應該很少 TIPTOP 系統從頭到尾都交由一個人負責吧~~
ERP 系統算起來也是一套大型的系統.
因此當新增 IT 幫手的時候, 權限要如何設定才比較好呢?
又可以避免非 IT 人員隨意的存取 TIPTOP 檔案或是資料.

記得要先把 TiptopGP 主機的 ftp 登入帳號設限喔~~只能允許 IT 人員 FTP 登入而已.
修改 /etc/vsftpd/vsftpd.conf 加上兩行設定
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
新增文字檔, 並將 IT 人員帳號加入 /etc/vsftpd/user_list 檔案中.

加入 IT 人員的 TIPTOP 維護帳號步驟如下 :

1. 新增 Linux 帳號和 Tiptop 帳號 (p_zx).

2. 加入 FTP 登入的權限
     編輯 /etc/vsftpd/user_list

3. 加入 oracle group 的權限
      usermod -G dba USER_NAME
4. 置換 .profile 檔
      不是用 cp /u1/usr/tiptop/.profile . 的指令來蓋掉喔~~
      如果有設 link .profile 檔案的話..就出包啦~~
      所以要先執行 rm .profile , 把 .proifle 的 ln 刪掉.
      再來就是 cp /u1/usr/tiptop/.profile . 才會有專屬於 IT 人員此帳號的 .profile

5. 最後就是 vsftpd 重啟囉~~
     /etc/init.d/vsftpd restart

2010年11月20日

將 TIPTOP CR 主機虛擬化, 安裝篇

自從 TIPTOP GP 5.x 版開始, 報表顯示改由 CR 主機 IIS Web Service 來提供,
並由 Client 端 IE 來呈現.
但是當 CR 主機故障重置, 或是想要充份利用 CR 主機的資源, 虛擬化當然是最好的囉~~~
因為 IIS Application Pool 預設 .Net Framework 是提供實際記憶體的 60% 為最大值,
所以就算你的記憶體裝的再怎麼大,實際利用的還是有限啦~~ (可以手動改為比例)

以下就是 CR 主機的安裝步驟 :

1. 安裝 Windows Server 2008 R2 (只要有 IIS 的 OS 即可)

2. 安裝 IIS 和 .Net Framework (加上 ASP .Net的功能)
    原理 : TIPTOP GP 在網址上加密 (編譯) , 然後由 ASP .Net 解密 (組譯) ,
              再傳給 CR ActiveX 告訴 CR 是那一個模版、那一個 temp table (權限管控).

3. 安裝 Oracle Client, 並設定 Net Manager . (需要是 32 位元的)

4. 安裝 Crystal Report . (鼎新有附光碟片)
    這裡要小心喔,要自訂安裝, 記得要安裝 資料存取\ADO.Net 的功能,
    不然可是會顯示 .Net Framework 找不到 CR ActiveX 的元件的錯誤訊息.

5. 設定 IIS (鼎新有做一個批次檔,執行就可以了)
     5.1 複製 topprod 目錄.
     5.2 複製 crystalpreortviewers115 目錄.
     5.3 建立虛擬目錄 topprod 到指定磁碟位置.
     5.4 設定 topprod 為應用程式集區.
     5.5 設定 topprod 為 Framework 2.0
     5.6 設定應用程式集區 crap1,crap2…
     5.7 將 topprod 資料夾權限設定為 IUSER可讀取,背景作業才可寄附件。

6.設定印表機的所有需要用到的紙張格式、大小。

很簡單吧~~也可以玩玩 Windows Server 的 NLB 的功能, 分散 CR 報表伺服器的負載囉~~