顯示具有 TIPTOP 標籤的文章。 顯示所有文章
顯示具有 TIPTOP 標籤的文章。 顯示所有文章

2011年12月29日 星期四

TIPTOP 用戶要有升級 Genero 版本的權利

鼎新如是說,所購買的 Genero 其實不含升級的費用,也就是說目前的版本 你不可能升級

也就是說 Oracle 的版本也不能升級 (Genero中會設定支援的 Oracle 版本)

其實只要設備足夠,是有辦法自行升級的....

但是還要進一步做完整的測試  確認 TIPTOP 的穩定度

新的版本從哪邊拿? http://www.4js.com/en/download/test-drive  註冊完就能下載

run Genero at Ubuntu

官方的說法是 支援  Redhat, SUSE

http://www.4js.com/online_documentation/fjs-gep-2.32.24-manual-install-html/?path=fjs-gep-2.32.24-manual-install

其實 也能在 ubuntu 執行


trim 字串的範例


main
   define a string
   define b varchar(20)

  let a="1234567890"

  display a
  let b=ccl_trim(a)
  display b

  let b='  09876543  '
  let a=ccl_trim(b)
  display a

  let a="    abcde"
  display ccl_trim(a)

end main

function ccl_trim(p_str)
define p_str string
define l_str base.StringBuffer
   let l_str=base.StringBuffer.create()
   call l_str.append(p_str)
   call l_str.trim()
   return l_str.tostring()
end function

2011年7月28日 星期四

TIPTOP 的報表好伴侶- Smart Query

TIPTOP 的報表委外客製幾乎都是10小時起跳,因為  Crystal Report 報表的版面設計很花時間。推薦使用 SmartQuery 來設計相關報表,這樣會有甚麼好處呢?

1.部分User不輸入資料,只是單純的報表查詢 。所以,不需要浪費 TIPTOP的 License 數量(=Genero License + TIPTOP  License)

2.SmqrtQuery 報表設計工具,做報表超級快的,開發速度至少會是 Ctystal Report 報表開發的兩倍以上速度


後記: 8/24-8/25 上完 SmartQuery 的進階課程之後,才發現,這報表的功能之強大超出我原先的想像,可是目前跟TIPTOP有SSO (Single SingOn) 整合上的問題,我已經把意見提供給講師,今天還會發個正式的郵件詳細說明,如果這個整合功能做到,那麼廢除 Crystal Report 主機只是早晚的問題。



相關資料請參考 http://www.lcnet.com.tw/KnowHow.htm

有興趣可以直接找 Vincent ,他的服務很好,可以提供協助進行測試及提供報價的服務


蘇憲寧 Vincent 台北市忠孝東路550819F2 02-27260885#227 Mobile: 0937-472068
聯銓資訊科技有限公司 Smart eVision Information Technology Inc. http://www.lcnet.com.tw/global/

2011年5月27日 星期五

2011年5月26日 星期四

客戶簽收客製

鼎新 IFRS 好德科技經驗分享中,該公司主管說,他們認列應收帳款,中國大陸有設定+45天,會自動認列。

我們早就做到了,還可以分地區別來設定參數控制。

單一BU 對同一客戶有不同的收款條件的客製

昨天去參加鼎新IFRS 其他公司的經驗分享。聽完該公司主管的說明,我只想說,你們碰到的問題,我都開發處理完成了。我們做到的,比你們碰到的多很多。

他們其中一個問題是,如果不同BU 有不同的收款條件要如何處理?
我們是同一BU ,不同產品線有不同的收款條件,都做完了。















2011年5月2日 星期一

TIPTOP License 保護

寫得很爛耶,計算 Genero 的數量也就算了,還去算 gbq_file 的數量做甚麼?
gbq_file 如有意外斷線就死在上面了。



可是這些是在哪邊計算呢?江湖一點訣,一分鐘就可以把原理講完。


2011年4月26日 星期二

TIPTOP License 計算的 bug

A.使用  fglWrt -a info users 可以查到 Genero 的 License

B.使用 exe2 p_go 可以查看TIPTOP License 數量

當 B 的數量大於 A的數量,這是不可能的事嗎?
其實是 ...Jack 來看 Rose 啦~XD~














產中的 bug --Darren 教你來解。把 gbq_file 清光就可以了

這還有其他地方在計算 TIPTOP License 嗎?
當然有 ~XD~
可以客製嗎? ~當然能~

2011年4月22日 星期五

Oracle 建 view Genero / TIPTOP 程式抓不到 oracle view 的資料

我不知道有沒有人問過 該開發公司這樣的問題?

至少我們就有,詢問該公司客服,客服的回覆是,目前 GP 5.1 的版本做不到
我不知道該公司客服的答案是從那裡來的? 至少 我們第一任客服是這樣跟我們說

江湖一點訣,乖,Darren 無私的教你

用  TIPTOP 在 Oracle 建 view 記得,除了 你要抓資料的 db 要建 view 之外,'ds'  那邊也要建 view,建立完成之後,記得要執行

r.s2 ds

然後程式就抓得到你建的 view 了

有沒有...xxx 的感覺













取得 TIPTOP 目前 Genero 開發工具的相關資訊

fpi -V

ftp -l

2011年4月19日 星期二

g_user 的記錄不夠詳細?

有人覺得 g_user 記錄不夠明確嗎?

沒關係 照過來~~~~

年月日/時間, 還有 用那個 windows 帳號,在哪一台電腦登入,用那個 tiptop帳號 通通一清二楚。

source code 出售~


TIPTOP/ Genero 4gl 直接抓取 中央銀行 每日收盤匯率資料

不需要用到 java 直接寫 4gl 抓取

中央銀行的收盤匯率網址
http://www.cbc.gov.tw/lp.asp?CtNode=645&CtUnit=308&BaseDSD=32&mp=1









程式的執行畫面








海關三旬匯率?








我怎麼知道有沒有成功?





2011年1月12日 星期三

[轉] oracle的文本导入、导出技巧(参照informix的load,unload)

資料來源: http://www.wangchao.net.cn/bbsdetail_1417714.html

在使用oracle时,总觉得oracle的导入,导出没有informix的load,unload好用,没办法,只能参照网上朋友的思路和informix的实现,写了几个脚本,希望各位高手指点:
  =============================================
  工具用法:
  unload.sh
  Usage: unload.sh userid/passwd[@oraclesid] [tabname]
  注释:
  如果不加’@oraclesid’,则用当前环境变量ORACLE_SID。
  如果不加tabname参数,则处理该用户下的所有表,生成’表名.unl’文件。
  如果加tabname参数,则单独处理该表,生成’表名.unl’文件。
  load.sh
  Usage: load.sh userid/passwd[@oraclesid] [tabname]
  注释:
  如果不加’@oraclesid’,则用当前环境变量ORACLE_SID。
  如果不加tabname参数,则装载该用户下的所有表,必须存在’表名.unl’
  文件。
  如果加tabname参数,则单独处理该表,必须存在’表名.unl’文件。
  =============================================
  具体实现:
  unload.sh
  利用spool的功能,将表中的数据导出到对应的文本中。
  load.sh
  利用sql*load的功能,将文本中的数据导入到表中。
  控制文件是自动生成的,使用者不需要知道格式
  执行sqlload的脚本也是自动生成
  generate_control_file.sh
  生成控制文件
  generate_execute_shell.sh
  生成执行脚本
  =============================================
  代码说明
  oad.sh
  #!/usr/bin/ksh
  ################################################################################
  #
  # 模块: load.sh
  #
  # 描述: 根据一个数据库或表名来装载对应的数据文件
  #
  # 参数 1 = 用户名/密码[@实例名]
  # 参数 2 = 表名(可选)
  #
  # 作者 Bing He
  #
  # 修改记录
  # 日期 修改人 修改描述
  #
  # 09/23/2003 Bing He 开始编写
  #
  ################################################################################
  lv_temp1="wk.test1"
  f_get_tables()
  {
  rm -f ${lv_temp1}
  sqlplus ${userid} <<! >/dev/null
  set colsep $sep;
  set echo off;
  set feedback off;
  set heading off;
  set pagesize 0;
  set linesize 1000;
  set numwidth 12;
  set termout off;
  set trimout on;
  set trimspool on;
  spool ${lv_temp1};
  select table_name from user_tables;
  spool off;
  exit
  !
  if [ "$?" -ne 0 ]
  then
  echo "Error:sqlplus ${userid} error in load for ${userid} !"
  echo "please check userid and passwd or oracle_sid."
  exit
  fi
  if [ -f ${lv_temp1} ]
  then
  lv_tables=`cat ${lv_temp1} |grep -v "^SQL>" | tr -d ' '`
  else
  echo "Error:${lv_temp1} file not found!"
  exit
  fi
  rm -f ${lv_temp1}
  }
  ################################################################################
  ## 主程序入口
  lv_no=$#
  case ${lv_no} in
  1
  userid=$1
  f_get_tables;
  ;;
  2
  userid=$1
  lv_tables=$2
  ;;
  *
  echo "Usage: $0 <userid/passwd[@connection]> <table_name>"
  exit
  ;;
  esac
  for lv_table in ${lv_tables}
  do
  if [ ! -f ${lv_table}.unl ]
  then
  echo "Error:${lv_table}.unl file not found!"
  else
  generate_control_file.sh ${userid} ${lv_table}
  generate_execute_shell.sh ${userid} ${lv_table}
  sh load_${lv_table}.sh
  rm -f ${lv_table}.ctl
  rm -f load_${lv_table}.sh
  fi
  done
  ################################################################################
  unload.sh
  #!/usr/bin/ksh
  ################################################################################
  #
  # 模块: unload.sh
  #
  # 描述: 根据一个数据库或表名来卸载数据并生成对应的数据文件
  #
  # 参数 1 = 用户名/密码[@实例名]
  # 参数 2 = 表名(可选)
  #
  # 作者 Bing He
  #
  # 修改记录
  # 日期 修改人 修改描述
  #
  # 09/23/2003 Bing He 开始编写
  #
  ################################################################################
  lv_sep='|' # --分隔符,可以修改成自己想要的分隔符,如'|'
  lv_temp1="unload.temp1"
  f_get_tables()
  {
  rm -f ${lv_temp1}
  sqlplus ${userid} <<! >/dev/null
  set colsep ${lv_sep};
  set echo off;
  set feedback off;
  set heading off;
  set pagesize 0;
  set linesize 1000;
  set numwidth 12;
  set termout off;
  set trimout on;
  set trimspool on;
  spool ${lv_temp1};
  select table_name from user_tables;
  spool off;
  exit
  !
  if [ "$?" -ne 0 ] ; then
  echo "sqlplus $userid error in get table name <"$?">!!"
  echo "please check userid and passwd or database."
  exit
  fi
  if [ -f ${lv_temp1} ]
  then
  lv_tables=`cat ${lv_temp1} |grep -v "^SQL>" | tr -d ' '`
  else
  echo "Error:${lv_temp1} file not found!"
  exit
  fi
  rm -f ${lv_temp1}
  }
  ################################################################
  ## 主程序入口
  lv_no=$#
  case ${lv_no} in
  1
  userid=$1
  f_get_tables;
  ;;
  2
  userid=$1
  lv_tables=$2
  ;;
  *
  echo "Usage: $0 <userid/passwd[@connection]> <table_name>"
  exit
  ;;
  esac
  ################################################################
  ################################################################
  ## 执行下载操作
  for table in ${lv_tables}
  do
  rm -f lv_$table.txt
  sqlplus ${userid} <<! >/dev/null
  set colsep ${lv_sep};
  set echo off;
  set feedback off;
  set heading off;
  set pagesize 0;
  set linesize 1000;
  set numwidth 12;
  set termout off;
  set trimout on;
  set trimspool on;
  spool lv_$table.txt;
  select * from $table;
  spool off;
  !
  if [ "$?" -ne 0 ]
  then
  echo "error:sqlplus $userid error in unload table $table!!"
  echo "please check userid and passwd or database."
  exit
  fi
  if [ -f lv_$table.txt ]
  then
  cat lv_$table.txt | grep -v "^SQL>"|sed -e "s/ *$//g"|sed "s/$/\|/g"|sed -e "s/ *\|/\|/g" >${table}.unl
  if [[ `grep "ORA-" $table.unl` = "" ]]; then
  echo "unload table ${table}....\t\t\t\t\t ok"
  else
  cat ${table}.unl
  err="$err ${table}"
  fi
  else
  echo $0 error
  fi
  rm -f lv_$table.txt
  done
  ################################################################
  ################################################################
  ## 结束操作
  if [[ "X$err" = "X" ]];then
  echo "Unload Complete!,Thank you!"
  else
  echo "Unload Table $err error, please check it!"
  fi
  ################################################################
  generate_control_file.sh
  #!/usr/bin/ksh
  ################################################################################
  #
  # 模块: generate_control_file.sh
  #
  # 描述: 根据一个表名生成该表的控制文件
  #
  # 参数 1 = 用户名/密码[@实例名]
  # 参数 2 = 表名
  #
  # 作者 Bing He
  #
  # 修改记录
  # 日期 修改人 修改描述
  #
  # 09/23/2003 Bing He 开始编写
  #
  ################################################################################
  ################################################################################
  ## 主程序入口
  if [ ! $# -eq 2 ]
  then
  echo "Usage: $0 <userid/passwd[@connection]> <table_name>"
  exit
  else
  userid=$1
  table=$2
  fi
  ################################################################################
  ################################################################################
  ## 执行下载操作
  lv_temp="wk_${table}.test"
  lv_temp1="wk_${table}.test1"
  lv_temp2="wk_${table}.test2"
  lv_control="${table}.ctl"
  sqlplus ${userid} <<! >/dev/null
  spool ${lv_temp};
  desc ${table}
  spool off;
  exit
  !
  if [ "$?" -ne 0 ]
  then
  echo "Error:sqlplus ${userid} error in generate control file for table ${table} !"
  echo "please check userid and passwd or oracle_sid."
  exit
  fi
  if [ -f ${lv_temp} ]
  then
  cat ${lv_temp}|grep -v "^SQL>" |grep -v " Name " |grep -v " -------" |awk '{print $1}' > ${lv_temp1}
  lv_line_num=`cat ${lv_temp1} | wc -l`
  lv_line_num=`expr ${lv_line_num} - 2`
  lv_index=0
  rm -f ${lv_temp2}
  for lineinfo in `cat ${lv_temp1}`
  do
  if [ ${lv_index} -eq ${lv_line_num} ]
  then
  echo "${lineinfo}" >> ${lv_temp2}
  else
  echo "${lineinfo}," >> ${lv_temp2}
  lv_index=`expr ${lv_index} + 1`
  fi
  done
  else
  echo "$0 error :not find ${lv_temp} file."
  exit
  fi
  lv_str="LOAD DATA INFILE '${table}.unl' BADFILE 'bad_${table}.bad' APPEND INTO TABLE ${table} FIELDS TERMINATEd BY "|""
  echo ${lv_str} > ${lv_control}
  echo "(" >> ${lv_control}
  cat ${lv_temp2} >> ${lv_control}
  echo ")" >> ${lv_control}
  rm -f ${lv_temp}
  rm -f ${lv_temp1}
  rm -f ${lv_temp2}
  ################################################################################
  generate_execute_shell.sh
  #!/usr/bin/ksh
  ################################################################################
  #
  # 模块: generate_execute_shell.sh
  #
  # 描述: 根据一个表名生成该表的装载脚本
  #
  # 参数 1 = 用户名/密码[@实例名]
  # 参数 2 = 表名
  #
  # 作者 Bing He
  #
  # 修改记录
  # 日期 修改人 修改描述
  #
  # 09/23/2003 Bing He 开始编写
  #
  ################################################################################
  ################################################################################
  ## 主程序入口
  if [ ! $# -eq 2 ]
  then
  echo "Usage: $0 <userid/passwd[@connection]> <table_name>"
  exit
  else
  userid=$1
  table=$2
  fi
  ################################################################################
  ################################################################################
  ## 局部变量定义区域
  lv_rows=10000
  lv_bindsize=8192000
  lv_readsize=8192000
  ################################################################################
  ################################################################################
  ## 生成执行脚本文件
  echo "sqlldr ${userid} control=${table}.ctl rows=${lv_rows} bindsize=${lv_bindsize} readsize=${lv_readsize} log=log_${table}.log bad=bad_${table}.bad direct=true" > load_${table}.sh
  ###############################################################################