<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1557414552566667876</id><updated>2024-11-05T18:48:00.176-08:00</updated><category term="as400"/><category term="talend"/><category term="waveMaker"/><category term="block"/><category term="db2"/><category term="workflow"/><title type='text'>sonny 註記</title><subtitle type='html'>只是留下怕忘掉的</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-1890554613190555604</id><published>2011-12-07T22:49:00.001-08:00</published><updated>2011-12-11T23:17:00.169-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="waveMaker"/><title type='text'>wavemaker-grid</title><content type='html'>&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilR2pTNMputmuAtADIpUPcerONZ0rpeNzoBJgSHJDZkn96IcLuAlMaA_zO0Lf1lyTFKtdC57MJHTefJH2aUyuvuJAskUTjRP6qjxyWTgeGSySMqKh38pD4NjnUolj1lzYVudqUt98zBLlV/s1600/wavemaker+grid.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;139&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilR2pTNMputmuAtADIpUPcerONZ0rpeNzoBJgSHJDZkn96IcLuAlMaA_zO0Lf1lyTFKtdC57MJHTefJH2aUyuvuJAskUTjRP6qjxyWTgeGSySMqKh38pD4NjnUolj1lzYVudqUt98zBLlV/s320/wavemaker+grid.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
grid 是網頁設計上必要的元件，很可惜 wavemaker 中的grid 無法如 extjs 中的friendly 但是對一個內部表單系統 他應該可以滿足大多數對ajax 架構上的需求&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;
&lt;u&gt;&lt;b&gt;基本設定:&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&amp;nbsp;&amp;nbsp; 對grid 設定 主要 是 dataSet 的部分決定 相關欄位，官方幾乎都是 使用 liveVariale 換句話說對官方來說 只要從 資料庫帶出相關資訊就可以 使用，但是對企業系統，我們遇到的幾乎要 &#39;不能跳&#39;與同一頁完成所有的事 我還是使用 Type 跟 Variable&amp;nbsp; 進行&lt;br /&gt;
&amp;nbsp; 其設定方式 可以看 官網 :&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
對api 有的 就不須在此 說明&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;相關event&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; grid :&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;code&gt; GridClick: function(inSender, evt, selectedItem, rowId, fieldId, rowNode, cellNode){&lt;br /&gt;
var myselect = inSender.getCell(inSender.getSelectedIndex(), &#39;customField&#39;); selectedItem.getData().empid   ==&amp;gt;取 empid 的值&lt;br /&gt;
} &lt;/code&gt; &lt;br /&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&amp;nbsp; row:&lt;/li&gt;
&lt;/ul&gt;
&lt;code&gt;&lt;br /&gt;
ComButClick: function(inSender) {&lt;br /&gt;
// 如使用 inSender  不如就 直接使用 對datagrid 已經有 的api&lt;br /&gt;
var selrow = this.inComGrid.getSelectedIndex();&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; cell &amp;nbsp; :&lt;/li&gt;
&lt;/ul&gt;
&lt;code&gt;&lt;br /&gt;
CellDblClick: function(inSender, evt, selectedItem, rowId, fieldId, rowNode, cellNode) {&lt;br /&gt;
var mydata = selectedItem.getData(); // 僅可抓到 view 的物件&lt;br /&gt;
var userid = mydata.attperson;&lt;br /&gt;
var filename =  mydata.attfilename;&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;格式相關 : &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;將顏色與致行改變&lt;/li&gt;
&lt;/ul&gt;
&lt;code&gt;&lt;br /&gt;
dojoGrid1NodeFormat: function( inValue, rowId, cellId, cellField, cellObj, rowObj) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #274e13;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;cellObj.customStyle&lt;/span&gt;s&lt;/span&gt;.push(&quot;background: #808080;color:yellow;font-size:10pt;&quot;); &lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;輸入跟輸出轉值:&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;code&gt;&lt;br /&gt;
Grid1ButtonFormat: function( inValue, rowId, cellId, cellField, cellObj, rowObj){&lt;br /&gt;
if (rowObj.node== this.approveformVar.data.currentNode){ return &#39;現有簽核&#39;; }&lt;br /&gt;
else{&amp;nbsp;&amp;nbsp; return inValue;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/code&gt; &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;放置圖片&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;code&gt;&lt;br /&gt;
dojoGrid1NodeFormat: function( inValue, rowId, cellId, cellField, cellObj, rowObj){&lt;br /&gt;
reutrn &#39;&amp;lt;img src =&quot;resources/images/att.png&quot; height=&quot;16&quot;&amp;gt;&#39; &lt;br /&gt;
} &lt;/code&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;tooltip&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
須於 start 加入:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
dojo.require(&quot;dijit.Tooltip&quot;);&lt;br /&gt;
dojo.connect(this.dojoGrid1.dojoObj, &quot;onCellMouseOver&quot;,this, &#39;showTooltip&#39;);&lt;br /&gt;
dojo.connect(this.dojoGrid1.dojoObj, &quot;onCellMouseOut&quot;,this, &#39;hideTooltip&#39;); &lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
製作 showToolTip &lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
showTooltip :function(e) {&lt;br /&gt;
var msg;&lt;br /&gt;
if (e.rowIndex &amp;lt; 0) {    msg = e.cell.name;  }&lt;br /&gt;
else {&lt;br /&gt;
var item = e.grid.getItem(e.rowIndex);&lt;br /&gt;
         var cellfiled= e.cell.field;//對欄位名進行讀取&lt;br /&gt;
if (cellfiled== &#39;mycomment&#39; || cellfiled== &#39;mysuggest&#39;)&lt;br /&gt;
msg = e.grid.store.getValue(item, e.cell.field);&amp;nbsp; //對欄位值進行讀取&lt;br /&gt;
else if (cellfiled== &#39;customField&#39;){&lt;br /&gt;
var myatt =  e.grid.store.getValue(item, &#39;attfilename&#39;);&lt;br /&gt;
var paper =e.grid.store.getValue(item, &#39;attpaper&#39;);&lt;br /&gt;
if (myatt.length &amp;gt;0 || paper.length &amp;gt;0)&lt;br /&gt;
msg =&#39;&#39;;&lt;br /&gt;
if (myatt.length &amp;gt;0)&lt;br /&gt;
msg+=&#39;附件:&#39;+myatt+&#39;&lt;br /&gt;
&#39;;&lt;br /&gt;
if (paper.length &amp;gt;0)&lt;br /&gt;
msg+=&#39;紙本:&#39;+paper+&#39;\n&#39;;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (msg) {&lt;br /&gt;
dijit.showTooltip(msg, e.cellNode); //會產生在後面&lt;br /&gt;
//dijit.showTooltip(msg, e.cellNode, [&quot;below&quot;, &quot;above&quot;, &quot;after&quot;, &quot;before&quot;]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&amp;nbsp; 製作 hideTooltip  &lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
hideTooltip : function(e) {&lt;br /&gt;
dijit.hideTooltip(e.cellNode);&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;
&lt;u&gt;&lt;b&gt;特殊需求:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;動態隱藏欄位:&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;/ul&gt;
&lt;code&gt;&lt;br /&gt;
this.dojoGrid1.dojoObj.layout.setColumnVisibility(8, false); &lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;雙擊下載檔案: &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
基本上建議 使用 flashUpload , 並製作 download (String page name) 的功能&lt;br /&gt;
在 ServiceeVariable 中 勾選 download ，所以於設定 update&amp;nbsp; 時 系統會自動 帶入&lt;br /&gt;
但 如裝在 Window2003 可能會有 亂碼問題 ，所以 必須進行 檔案名稱轉型 其程式&lt;br /&gt;
如下:&amp;nbsp; &lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
returnname = new String(returnname.getBytes(&quot;big5&quot;), &quot;ISO-8859-1&quot;);&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;相關連結 : &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; wavemaker&lt;/li&gt;
&lt;/ul&gt;
&lt;a href=&quot;http://dev.wavemaker.com/wiki/bin/DataGrid&quot; target=&quot;_blank&quot;&gt;datagrid&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; dojo&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;a href=&quot;http://dojotoolkit.org/reference-guide/dojox/grid/DataGrid.html&quot; target=&quot;_blank&quot;&gt;dojox.grid. dataGrid&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://dojoapi-mirror.devs.nu/jsdoc/dijit/1.2/dijit.showTooltip&quot; target=&quot;_blank&quot;&gt;tooltip&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/1890554613190555604/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/12/wavemaker-grid.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/1890554613190555604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/1890554613190555604'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/12/wavemaker-grid.html' title='wavemaker-grid'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilR2pTNMputmuAtADIpUPcerONZ0rpeNzoBJgSHJDZkn96IcLuAlMaA_zO0Lf1lyTFKtdC57MJHTefJH2aUyuvuJAskUTjRP6qjxyWTgeGSySMqKh38pD4NjnUolj1lzYVudqUt98zBLlV/s72-c/wavemaker+grid.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-6142926178631850834</id><published>2011-11-06T01:58:00.000-07:00</published><updated>2011-12-11T23:18:19.224-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="talend"/><title type='text'>(宇宏)Talend工具說明</title><content type='html'>&lt;div id=&quot;__ss_10044826&quot; style=&quot;width: 425px;&quot;&gt;
&lt;b style=&quot;display: block; margin: 12px 0 4px;&quot;&gt;對裕隆汽車經銷商 做 的半小時說明&lt;/b&gt;&lt;b style=&quot;display: block; margin: 12px 0pt 4px;&quot;&gt;主要對工具 與 資料庫運用的說明 &amp;nbsp;&lt;/b&gt;&lt;b style=&quot;display: block; margin: 12px 0pt 4px;&quot;&gt; &lt;/b&gt;&lt;br /&gt;
&lt;b style=&quot;display: block; margin: 12px 0pt 4px;&quot;&gt; &lt;/b&gt;&lt;b style=&quot;display: block; margin: 12px 0pt 4px;&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/sonnychen/talend-10044826&quot; target=&quot;_blank&quot; title=&quot;(宇宏)Talend工具說明&quot;&gt;(宇宏)Talend工具說明&lt;/a&gt;&lt;/b&gt; &lt;iframe frameborder=&quot;0&quot; height=&quot;355&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://www.slideshare.net/slideshow/embed_code/10044826&quot; width=&quot;425&quot;&gt;&lt;/iframe&gt; &lt;br /&gt;
&lt;div style=&quot;padding: 5px 0 12px;&quot;&gt;
View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/sonnychen&quot; target=&quot;_blank&quot;&gt;Sonny Chen&lt;/a&gt; &lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/6142926178631850834/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/11/talend.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/6142926178631850834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/6142926178631850834'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/11/talend.html' title='(宇宏)Talend工具說明'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-2029136760819243899</id><published>2011-09-03T23:11:00.000-07:00</published><updated>2011-09-03T23:11:55.144-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="waveMaker"/><title type='text'>waveMaker- 基礎javasctript架構-物件variable(1)</title><content type='html'>wavemaker 在資料、畫面傳遞上使用variable 來設計相關函數，因此搞懂 variable 是對資料運用上相當重要的其架構如下&lt;br /&gt;
&amp;nbsp;================================================&lt;br /&gt;
wm.Variable 父項目為 wm.Component&lt;br /&gt;
wm.Service父項目為 wm.Component&lt;br /&gt;
&lt;br /&gt;
wm.JavaService 父項目為 wm.ServerComponent&lt;br /&gt;
wm.WebService&quot;父項目為 wm.JavaService&lt;br /&gt;
&lt;br /&gt;
wm.ServiceInput&quot;父項目為 wm.Variable &lt;br /&gt;
wm.LiveVariable&quot; 父項目為wm.ServiceVariable&lt;br /&gt;
wm.ServiceVariable 包含 [wm.Variable, wm.ServiceCall]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
wm.JsonRpcService父項目為 wm.Service&lt;br /&gt;
wm.FunctionService&quot;父項目 wm.Service&lt;br /&gt;
wm.NavigationService父項目為 wm.Service&lt;br /&gt;
==================================================&lt;br /&gt;
wm 提供多樣的javascript 結構基本上跟java 類似 所以要了解 wm&amp;nbsp; 可由class 架構中取得&lt;br /&gt;
其中&amp;nbsp; wm.Object 提供所有物間之 源頭 ，wm.Component 提供基本connect 與plug-in 機制&lt;br /&gt;
以下為基本&lt;br /&gt;
==================================================&lt;br /&gt;
&lt;b&gt;wm.Object:提供物件value 與 prop 的設定&lt;/b&gt;&lt;br /&gt;
toString() ==&amp;gt;return物件型態&lt;br /&gt;
getProp: function(inPropertyName)&amp;nbsp; ==&amp;gt; 讀取屬性&lt;br /&gt;
setProp: function(inProp, inValue) &lt;br /&gt;
getValue: function(inName)&lt;br /&gt;
setValue: function(inName, inValue) &lt;br /&gt;
===================================================&lt;br /&gt;
&lt;b&gt;wm.Component :提供 如dojo.connect 機制&lt;/b&gt;&lt;br /&gt;
connect()&lt;br /&gt;
connectOnce(sourceObj, sourceMethod, targetObj, targetMethod)&lt;br /&gt;
connectEvents (inObject, inEvents)&lt;br /&gt;
disconnectEvent(inEvent)&lt;br /&gt;
subscribe()&lt;br /&gt;
unsubscribe(subname)&lt;br /&gt;
valueChanged (inProp, inValue)&lt;br /&gt;
createComponent((inName, inType, inProps, inEvents, inChildren, inOwner) &lt;br /&gt;
makeEvents(inEvents, inComponent)&lt;br /&gt;
readComponents(inComponents)&lt;br /&gt;
startTimerWithName(timerName, componentName)&lt;br /&gt;
stopTimerWithName: function(timerName, componentName) &lt;br /&gt;
startTimer: function(timerName)&lt;br /&gt;
stopTimer: function(timerName, addToComponentLog)&lt;br /&gt;
subtractTimerWithName: function(timerName, componentName,time)&lt;br /&gt;
=============================================== &lt;br /&gt;
&lt;b&gt;wm.Service可執行姓並可拿到 result 的物件&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;getNamesList: function()&lt;br /&gt;
add: function(inService)&lt;br /&gt;
getNamesList: function()&lt;br /&gt;
forEach: function(inFunction) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; clear: function()&lt;br /&gt;
getService: function(inName, hideFromClient)&lt;br /&gt;
onResult: function(inResult)&lt;br /&gt;
onError: function(inError)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; getOperation: function(inOperation)&lt;br /&gt;
&amp;nbsp;result&lt;br /&gt;
&amp;nbsp;error&lt;br /&gt;
getOperationsList&lt;br /&gt;
==============================================&lt;br /&gt;
&lt;b&gt;wm.Variable : 提供畫面中存取的關鍵&lt;/b&gt;&lt;br /&gt;
json&lt;br /&gt;
wmTypesChanged: function()&lt;br /&gt;
setType: function(inType, noNotify)&lt;br /&gt;
typeChanged: function(inType)&lt;br /&gt;
setJson: function(inJson)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;hasList: function()&lt;br /&gt;
&amp;nbsp;listDataProperties: function()&lt;br /&gt;
&amp;nbsp;beginUpdate: function() ==&amp;gt; buffer 操作&lt;br /&gt;
endUpdate: function()&lt;br /&gt;
&amp;nbsp;isUpdating: function()&lt;br /&gt;
clearData: function()&lt;br /&gt;
setData: function(inData)&lt;br /&gt;
getData: function()&lt;br /&gt;
getCount: function()&lt;br /&gt;
getItem: function(inIndex) &lt;br /&gt;
getItemData: function(inIndex)&lt;br /&gt;
setCursor: function(inCursor)&lt;br /&gt;
setNext: function()&lt;br /&gt;
setPrevious: function()&lt;br /&gt;
setFirst: function() &lt;br /&gt;
setLast: function()&lt;br /&gt;
addItem: function(inData, inIndex)&lt;br /&gt;
getItemIndex: function(inVariable) &lt;br /&gt;
dataChanged: function()&lt;br /&gt;
&amp;nbsp;dataValueChanged: function(inProp, inValue) &lt;br /&gt;
valueChanged: function(inProp, inValue)&lt;br /&gt;
setDataSet: function(inDataSet)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lazyLoadData: function(inPropName, inVariable) &lt;br /&gt;
setLiveView: function(inLiveView) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; getViewType: function()&lt;br /&gt;
getViewFields: function()&lt;br /&gt;
getViewListFields: function()&lt;br /&gt;
============================&lt;br /&gt;
待續----------</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/2029136760819243899/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/09/wavemaker-javasctript-variable1.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/2029136760819243899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/2029136760819243899'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/09/wavemaker-javasctript-variable1.html' title='waveMaker- 基礎javasctript架構-物件variable(1)'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-3810139371988469054</id><published>2011-09-03T01:44:00.000-07:00</published><updated>2011-09-03T01:44:22.026-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="waveMaker"/><title type='text'>waveMaker- wm.base.Control</title><content type='html'>wm.base.Control 是處理wavemaker 中editor所有之 parent 物件&lt;br /&gt;
其包含[wm.Component, wm.Bounds]，並且除一些如widith 、hight 之屬性&lt;br /&gt;
&amp;nbsp;並且包含下列功能&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
addWidget( inWidget)&lt;br /&gt;
&amp;nbsp;getParentBox()&lt;br /&gt;
updateBounds() &lt;br /&gt;
boundsResized()&lt;br /&gt;
padBorderMarginChanged()&lt;br /&gt;
isReflowEnabled()&lt;br /&gt;
setFlex(inFlex) &lt;br /&gt;
getScrollMargins()&lt;br /&gt;
listProperties()&lt;br /&gt;
adjustChildProps(inCtor, inProps)&lt;br /&gt;
removeWidget(inWidget)&lt;br /&gt;
setName (inName)&lt;br /&gt;
getUniqueName(inName)&lt;br /&gt;
updateId()&lt;br /&gt;
isAncestorHiddenLayer()&lt;br /&gt;
&amp;nbsp;setDomNode(inDomNode)&lt;br /&gt;
loaded() &lt;br /&gt;
destroy()&lt;br /&gt;
postInit()&lt;br /&gt;
addUserClass(inClass, inNodeName)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/3810139371988469054/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/09/wavemaker-wmbasecontrol.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/3810139371988469054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/3810139371988469054'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/09/wavemaker-wmbasecontrol.html' title='waveMaker- wm.base.Control'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-1459101780858789355</id><published>2011-06-04T11:27:00.000-07:00</published><updated>2011-12-11T23:17:16.636-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="as400"/><title type='text'>Java with AS400&#39;s Spooled File</title><content type='html'>&lt;b&gt;Introduction&lt;/b&gt;, &lt;br /&gt;
Jtopen develop the solution for AS400 access, that included System/File and database access. This page shows some successful information for using SpooledFile.&lt;br /&gt;
SpooledFile is AS400&amp;nbsp; implenets for output file, that including RPG/CL usage.&lt;br /&gt;
Jtopen can using 2 type of access, one is single file, another is using list. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Single file access, the stage for using &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;System connection : AS400()&lt;/li&gt;
&lt;li&gt;Setup OutputQueue:&amp;nbsp; &lt;/li&gt;
&lt;li&gt;setup&amp;nbsp; Spooled fille&amp;nbsp; &lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;System Connection&lt;/b&gt; :&lt;br /&gt;
&amp;nbsp;&amp;nbsp; the stage for conneciton as folow:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;new AS400 : pass: system user id password.&lt;/li&gt;
&lt;li&gt; Service : PRINT, FILE &lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Setup OutputQueue&lt;/b&gt;&lt;br /&gt;
OutputQueue identify output query , the cnstructor is&amp;nbsp; &lt;code&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;   OutputQueue(AS400 system, String queueName)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;as default if the Command does not set any output attribue : queuename could set as &lt;span style=&quot;color: red;&quot;&gt;/QSYS.LIB/QUSRSYS.LIB/QPRINT.OUTQ&lt;/span&gt;&lt;/code&gt;  &lt;br /&gt;
&lt;br /&gt;
Setup SpooledFile&lt;br /&gt;
&lt;code&gt;SpooledFile( &lt;br /&gt;
AS400 system,&lt;br /&gt;
String spoolfiename,&lt;br /&gt;
int jobnumber,&lt;br /&gt;
String jobname,&lt;br /&gt;
String jobUser,&lt;br /&gt;
String jobnumber); &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS400&amp;nbsp;system,&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; String spoolfiename,&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int jobnumber,&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String jobname,&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String jobUser,&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String jobnumber);&lt;/code&gt; &lt;br /&gt;
then using&lt;br /&gt;
&lt;code&gt;&lt;b&gt;copy&lt;/b&gt;(OutputQueue&amp;nbsp;outputQueue)&lt;/code&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;code&gt;&lt;b&gt;move&lt;/b&gt;(SpooledFile&amp;nbsp;targetSpooledFile)&lt;/code&gt;  &lt;br /&gt;
&amp;nbsp; to make to java Stream type&lt;br /&gt;
&lt;br /&gt;
Possible Source as following:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Ad_-GsPOwfEoRONcMMqsrlE9K842kZwj30umdRBExS1bJ6mUwhl0PrFs6NXsM2PafJ7x7evJI8COyzs8TRo8SmpyG2BBZZLLKormnXZhZ_I6KWuZ0lwjPwXzMa3k2A4bcphGtzC_2xT_/s1600/singleFilesSpoolFile.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;281&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Ad_-GsPOwfEoRONcMMqsrlE9K842kZwj30umdRBExS1bJ6mUwhl0PrFs6NXsM2PafJ7x7evJI8COyzs8TRo8SmpyG2BBZZLLKormnXZhZ_I6KWuZ0lwjPwXzMa3k2A4bcphGtzC_2xT_/s640/singleFilesSpoolFile.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;MutiFileAccess&lt;/b&gt;&lt;br /&gt;
Muti-File, in JTopen , recommend use &lt;b&gt;SpooledFileList&lt;/b&gt;() then it can access by &lt;b&gt;QueueFileter &lt;/b&gt;and Enumeration , read and send output file possible using PrintObjectTransformedInputStream to read .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Possible Solution :&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In some statement, using FTP can solve the same effect, However, using Command call and read file doing the same time, it should solve some trouble &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Reference:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
JTOpen: &lt;a href=&quot;http://jt400.sourceforge.net/&quot;&gt;http://jt400.sourceforge.net/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/1459101780858789355/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/06/java-with-as400s-spooled-file.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/1459101780858789355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/1459101780858789355'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/06/java-with-as400s-spooled-file.html' title='Java with AS400&#39;s Spooled File'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Ad_-GsPOwfEoRONcMMqsrlE9K842kZwj30umdRBExS1bJ6mUwhl0PrFs6NXsM2PafJ7x7evJI8COyzs8TRo8SmpyG2BBZZLLKormnXZhZ_I6KWuZ0lwjPwXzMa3k2A4bcphGtzC_2xT_/s72-c/singleFilesSpoolFile.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-2127469458102793153</id><published>2011-05-06T08:17:00.000-07:00</published><updated>2011-12-11T22:53:53.549-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="as400"/><title type='text'>AS400 上 SYSIBM.COLUMNS 的 View</title><content type='html'>最近 在調整 AS400 到 不同資料庫 發覺 有幾隻View 是可以 值得觀察的 首先&lt;br /&gt;
&amp;nbsp;如果 使用 SYSIBM.COLUMNS&lt;br /&gt;
===================================== &lt;br /&gt;
select &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLE_SCHEMA,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLE_NAME,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COLUMN_NAME,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATA_TYPE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_NULLABLE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHARACTER_MAXIMUM_LENGTH,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMERIC_SCALE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMERIC_PRECISION,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COLUMN_DEFAULT,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHARACTER_SET_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;from SYSIBM.COLUMNS&lt;br /&gt;
&amp;nbsp;===================================== &lt;br /&gt;
&lt;br /&gt;
可帶出想要的 create table 所需的資訊，那就可以動 建table 在不同資料庫上啦</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/2127469458102793153/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/05/as400-sysibmcolumns-view.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/2127469458102793153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/2127469458102793153'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/05/as400-sysibmcolumns-view.html' title='AS400 上 SYSIBM.COLUMNS 的 View'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-6621633590212966772</id><published>2011-05-06T03:47:00.000-07:00</published><updated>2011-12-11T22:54:25.270-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="talend"/><title type='text'>talend 放置資料於globalMap 與 context</title><content type='html'>Talend Open Studio對異質整合的功用是一件值得學習的方式，只是tool 本身有太多需要程式定義的方法，如globalMap, context 幾乎是值得研究的地方&lt;br /&gt;
&lt;br /&gt;
globalMap 的用法&lt;br /&gt;
&amp;nbsp; globalMap 是畫在&amp;nbsp; Job 所生成的 物件暫純區 所有 有用到的 拖拉元件都會有對應&lt;br /&gt;
&lt;br /&gt;
如使用 tLoop_1 會產生 一個相關的globalMap 中的&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tLoop_1_CURRENT_VALUE&amp;nbsp; 與 tLoop_1_CURRENT_ITERATION&lt;br /&gt;
其讀取方式&amp;nbsp; 可用&amp;nbsp; globalMap.get(&quot;tLoop_1_CURRENT_VALUE&quot;)拿到 相對應的object&lt;br /&gt;
當然 其他有其他的&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
context&lt;br /&gt;
是定義內部暫純區&lt;br /&gt;
如使用於 tJavaFlex 我就可以 放&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.put(&quot;mydates&quot;,mydates);&lt;br /&gt;
之後用的地方可以使用此conext.get(&quot;mydates&quot;) 讀取此物件</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/6621633590212966772/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/05/talend-globalmap-context.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/6621633590212966772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/6621633590212966772'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/05/talend-globalmap-context.html' title='talend 放置資料於globalMap 與 context'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-5473166437067495916</id><published>2011-05-01T18:06:00.000-07:00</published><updated>2011-12-11T23:15:57.043-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="workflow"/><title type='text'>流程規劃淺見</title><content type='html'>流程系統一般都規劃為資訊管理系統的核心，一般所見可分為三個部分&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;業務流程(Business Flow)&lt;/li&gt;
&lt;li&gt;系統整合(EIP)&lt;/li&gt;
&lt;li&gt;人事簽核(Human Task)&lt;/li&gt;
&lt;/ol&gt;
現在流程產品大多包含前兩項，並且將簽核部分以串/會簽模式進行規劃，所以在規畫的建議&lt;br /&gt;
大多使用者可了解，但是在運作上，流程的待處理(todo list)又是一項艱鉅的工程更不用提 流程版本，人事異動與流程異動，掉單處理 是現有產品面都有所欠缺的。&lt;br /&gt;
&lt;br /&gt;
經過多次流程規劃的見解，我還是建議以下方向:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;以主副流程形式規劃&lt;/li&gt;
&lt;li&gt;主流程以業務流程為依歸&lt;/li&gt;
&lt;li&gt;人事簽核建議以Rule Engine 形式進行&lt;/li&gt;
&lt;li&gt;系統規劃建議以同步與非同步為流程異動要素&lt;/li&gt;
&lt;li&gt; 系統整合面的需求在實務上要小心資料所屬的問題 &lt;/li&gt;
&lt;/ol&gt;
在系統代處理規劃，建議確認方針如下&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;追蹤還是代辦&lt;/li&gt;
&lt;li&gt;逾時通知(上班日與否)&lt;/li&gt;
&lt;li&gt;系統異常通知&lt;/li&gt;
&lt;/ul&gt;
至於人事異動那就要配合規劃上是否需要對流程版本需控管，有時候未完成項目跑舊流程但須新人事，有時又要舊版本舊人事。</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/5473166437067495916/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/05/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/5473166437067495916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/5473166437067495916'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/05/blog-post.html' title='流程規劃淺見'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-1175881409248031238</id><published>2011-04-07T23:26:00.000-07:00</published><updated>2011-12-11T22:54:45.845-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="as400"/><title type='text'>AS400 SQL 錯誤 對照 與 解籤法(廟公說有成功的)</title><content type='html'>&lt;h3 id=&quot;SQL0551&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;SQL0551&amp;nbsp;&amp;nbsp; ==&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 id=&quot;SQL0551&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; 權限問題 &lt;/span&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;h3 id=&quot;SQL0551&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;使用者沒權限&amp;nbsp; 一般都是 journal的問題 &lt;/span&gt;(建議 不要用jounnal 管控除非你很懂 AS400 的管理)&lt;/h3&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 class=&quot;title&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;SQL 0104&amp;nbsp;&amp;nbsp; ==&amp;gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class=&quot;title&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 欄位tokern 的問題(SQL 語法 寫錯 要先檢查 是不是 自己的問題會 show 在 error log 上)&lt;/span&gt;&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;&lt;ol&gt;
&lt;li&gt;&lt;h1 class=&quot;title&quot;&gt;
&amp;nbsp;&lt;span style=&quot;font-size: small;&quot;&gt;如使用新增table(create table) 中有 varchar 型態 檢查 是否為大寫 (改為 VARCHAR)&amp;nbsp; &lt;/span&gt;&lt;/h1&gt;
&lt;/li&gt;
&lt;li&gt;&lt;h1 class=&quot;title&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;查詢指令 檢查 是不是 &quot;, &quot; 沒加 (select 指令有問題)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class=&quot;title&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class=&quot;title&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 class=&quot;title&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;SQL0913N ==&amp;gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class=&quot;title&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;死鎖或逾時&lt;/span&gt;&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;&lt;h1 style=&quot;padding-bottom: 0pt;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;需要將 使用者剃除 好像沒有sql 的解法 需要用 AS400 Client Access&lt;/span&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1 style=&quot;padding-bottom: 0pt;&quot;&gt;
 &lt;span style=&quot;font-size: small;&quot;&gt;SQL0952==&amp;gt; &lt;/span&gt;&lt;/h1&gt;
&lt;h1 style=&quot;padding-bottom: 0pt;&quot;&gt;
 &lt;span style=&quot;font-size: small;&quot;&gt;試過&lt;/span&gt;&lt;/h1&gt;
&lt;h1 style=&quot;padding-bottom: 0pt;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt; alter table &amp;lt;table&amp;gt; alter column &amp;lt;col&amp;gt; set data type numberic(8,2)&lt;/span&gt;&lt;/h1&gt;
&lt;h1 style=&quot;padding-bottom: 0pt;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; 因 alter 只有 varchar 可以ok 其他 會有問題&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 style=&quot;padding-bottom: 0pt;&quot;&gt;
 &lt;/h1&gt;
&lt;h1 style=&quot;font-weight: normal; padding-bottom: 0pt;&quot;&gt;
&amp;nbsp;&lt;/h1&gt;
&lt;h1 class=&quot;title&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 class=&quot;title&quot;&gt;
&lt;br /&gt;
&lt;/h1&gt;
&lt;h3 id=&quot;SQL0551&quot;&gt;
&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;SQL0551&quot;&gt;
&lt;br /&gt;
&lt;/h3&gt;</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/1175881409248031238/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/04/as400-sql.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/1175881409248031238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/1175881409248031238'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/04/as400-sql.html' title='AS400 SQL 錯誤 對照 與 解籤法(廟公說有成功的)'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-6866748764302331963</id><published>2011-04-07T19:44:00.000-07:00</published><updated>2011-12-11T22:55:12.831-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="db2"/><title type='text'>db2 Function - timestamp 問題</title><content type='html'>一直以來 db2 可使用的 內建 function 真的 有些奇怪&lt;br /&gt;
在 版本 9.5 可以 run 的 在 9.1 有時 真的 需要保佑 ，&lt;br /&gt;
其中 對 TimeStamp 的 運行 會有不是一般人可理解的地方&lt;br /&gt;
下方funcion 是多次運用的紀錄:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;COALESCE:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
主要是將 NULL 轉成其他 所以 類似於oracle 的NVL 內容&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
發生錯誤的 SQL CODE=180&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COALESCE(欄位值, &#39;&#39;)&amp;nbsp;&amp;nbsp; 是不會成功的&lt;br /&gt;
要修正成 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COALESCE( 欄位值,&#39;1000-01-01-00.00.00.000000&#39;) &lt;br /&gt;
其中 第二個是需要 timestamp 格式才可以&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CHAR&lt;/b&gt;&lt;br /&gt;
將值變成想要的格式 但是 跟to_char 不同&lt;br /&gt;
用法 如&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CHAR(col, fomat) &lt;br /&gt;
fomat 可用的&lt;br /&gt;
date&amp;nbsp; &lt;br /&gt;
&amp;nbsp;ISO:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;2005-12-31&lt;br /&gt;
USA:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;12/31/2005&lt;br /&gt;
EUR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;31.12.2005&lt;br /&gt;
JIS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;2005-11-30&lt;br /&gt;
LOCAL &amp;nbsp; ==&amp;gt; 看你的 設定&lt;br /&gt;
time&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;ISO:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;19.42.21&lt;br /&gt;
USA:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;19:42:21&lt;br /&gt;
&lt;br /&gt;
EUR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;19.42.21&lt;br /&gt;
JIS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt;19.42.21&lt;br /&gt;
LOCAL &amp;nbsp; ==&amp;gt; 看你的 設定&lt;br /&gt;
timestamp&lt;br /&gt;
抱歉 只能用&amp;nbsp; ISO&lt;br /&gt;
char(current timestamp) ==&amp;gt; 2005-11-30-19.42.21.873002&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;VARCHAR_FORMAT or TO_CHAR&lt;/b&gt;&lt;br /&gt;
(9.1 to_char 會work 9.5 varchar_format 比較理想)&lt;br /&gt;
就是 oracle 中的 to_char 只是 比較好玩&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; TO_CHAR(col,fomat)&lt;br /&gt;
其中 fomat&lt;br /&gt;
有試過&lt;br /&gt;
&#39;YYYY-MM-DD HH24:MI:SS&#39;&lt;br /&gt;
&quot;YYYY-MM-DD HH:MM:SS&quot;&lt;br /&gt;
如&lt;br /&gt;
,VARCHAR_FORMAT(ts1,&#39;YYYY-MM-DD HH24:MI:SS&#39;) &lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
TO_DATE&amp;nbsp;(string_expression_r_r,&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&#39;YYY-MM-DD&amp;nbsp;HH24:MI:SS&#39;&lt;/span&gt;) &lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/6866748764302331963/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/04/db2-function-timestamp.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/6866748764302331963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/6866748764302331963'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/04/db2-function-timestamp.html' title='db2 Function - timestamp 問題'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-2423068296660271499</id><published>2011-04-06T09:22:00.000-07:00</published><updated>2011-12-11T23:16:30.925-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="block"/><title type='text'>簡單的 網路阻擋器Port Blocker</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
最近有個客戶(學校科室) 要一個簡單但對網路安全設定工具，因為學校是一個半開放式的環境因為學校的所有IP 是互通的 ，科室系統是一個 Client-Server 軟體 換句話說只要有學生知道它們的IP， Server 就有被攻擊的危險，基於上列需求 我開始 對google 大神 進行膜拜，本來我以為找個 FireWall 就可以交差，但是 找半天，我發覺可能這種東西不值得做，大家都希望包含 病毒掃瞄 或 更高層的硬體與狀態監控 。換句話說 做得好複雜。&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
綜觀上列問題，我要找的軟體須包含&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;簡單設定(因為老師們 是 僅有使用知識 但沒有IT 知識)。&lt;/li&gt;
&lt;li&gt;要獨立於window(因為老師說那個太基本) &lt;/li&gt;
&lt;li&gt;須可以 對單一IP 進行開放&lt;/li&gt;
&lt;li&gt;需可對單一Port進行阻擋。&lt;/li&gt;
&lt;li&gt;操作需要很簡單(最多三部完成設定)&lt;/li&gt;
&lt;/ol&gt;
找半天後 我推薦 Emsa Port Blocker&lt;br /&gt;
其資訊如下&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Name: Port Blocker &lt;/li&gt;
&lt;li&gt;License :Free&lt;/li&gt;
&lt;li&gt;OS :Window&lt;/li&gt;
&lt;li&gt;URL: &lt;a href=&quot;http://www.e-systems.ro/download.htm&quot;&gt;http://www.e-systems.ro/download.htm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
當你download 完後 就可以 啟動&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSeq3_y1XPtT-kk9YIZ_2PVsI0fQaDSq69bgINsooJ0d6oDaZ8mcRVtBVF83gV_9av6tA__u6nApx77cpX1Ywb8UROZ4iLSgGQbkWLBN627ZWIdddHhZy14qddfsrYWBcHbCr7ZYac1vUM/s1600/active.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSeq3_y1XPtT-kk9YIZ_2PVsI0fQaDSq69bgINsooJ0d6oDaZ8mcRVtBVF83gV_9av6tA__u6nApx77cpX1Ywb8UROZ4iLSgGQbkWLBN627ZWIdddHhZy14qddfsrYWBcHbCr7ZYac1vUM/s200/active.jpg&quot; width=&quot;160&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
可點選 Get Free Action....&lt;br /&gt;
並且會打開Browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
點選 Port Blocker&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiukDMaeM9ho5Evi-T_SD6KcjXzhLX1HVHL04M4YfFdPYtkGSS4lIw6nZmQ0fV55-hayMAIfUOG6grjzbacsdnLeXqy7ALjJWV63kIMxCNgufANkNvfWKGyt4e5w7EDFjYHd69vTqMGd7vi/s1600/reg1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiukDMaeM9ho5Evi-T_SD6KcjXzhLX1HVHL04M4YfFdPYtkGSS4lIw6nZmQ0fV55-hayMAIfUOG6grjzbacsdnLeXqy7ALjJWV63kIMxCNgufANkNvfWKGyt4e5w7EDFjYHd69vTqMGd7vi/s320/reg1.jpg&quot; width=&quot;182&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDN908dI44A8z7vXAr8qd8OZsFAWfnsMjptUuAf-VIHzPzWvzSxeYK-zgL7n3n0_8zr3EfQJS5uxfE9wvYvANWgIa5k3jDurNlRjSAJjsofOtHeDNA23iEngw95H6UsiWcI_NluhMFbJi7/s1600/allowip.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt; &lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjbOsWX-bf9HqtHH_dN4SfBmLj3KVfv2b8GGPq7qY1Veo70XEd_bRaPG37F9_xS-RUt_ZNKYlLtIEkgDawXbxB8VZ-fclcU90d0AGCkfU0GKUsSNN9IlxTUojHbAhrjywtw1T1vx336Sc6/s1600/reg2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;57&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjbOsWX-bf9HqtHH_dN4SfBmLj3KVfv2b8GGPq7qY1Veo70XEd_bRaPG37F9_xS-RUt_ZNKYlLtIEkgDawXbxB8VZ-fclcU90d0AGCkfU0GKUsSNN9IlxTUojHbAhrjywtw1T1vx336Sc6/s320/reg2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDN908dI44A8z7vXAr8qd8OZsFAWfnsMjptUuAf-VIHzPzWvzSxeYK-zgL7n3n0_8zr3EfQJS5uxfE9wvYvANWgIa5k3jDurNlRjSAJjsofOtHeDNA23iEngw95H6UsiWcI_NluhMFbJi7/s1600/allowip.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDN908dI44A8z7vXAr8qd8OZsFAWfnsMjptUuAf-VIHzPzWvzSxeYK-zgL7n3n0_8zr3EfQJS5uxfE9wvYvANWgIa5k3jDurNlRjSAJjsofOtHeDNA23iEngw95H6UsiWcI_NluhMFbJi7/s1600/allowip.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt; &lt;/a&gt;點選 Activate product here&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
這個時候你就可拿到 code : 如下圖&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMOpKGxlqu90Amf7iVV2katKBQKlZ-I5X-TVDuCcJYrjYWVhaiqyDimHUItB9DuXphTyioetMFx9TL7beZHZdSbCVzqmaOe_vtYLqiENZeziStlnJkScF-W9EQyT2lMRqdEHqztjolaa8m/s1600/reg3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;67&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMOpKGxlqu90Amf7iVV2katKBQKlZ-I5X-TVDuCcJYrjYWVhaiqyDimHUItB9DuXphTyioetMFx9TL7beZHZdSbCVzqmaOe_vtYLqiENZeziStlnJkScF-W9EQyT2lMRqdEHqztjolaa8m/s320/reg3.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp;設定順序:&lt;br /&gt;
1. Blocked Local Ports&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCWGFKGb0O0csDDp_gZDfj1-c1AIqPZ72_HQqFqcSESa6aVVOZUTPrNU9LWAWTzRx3IW2yLUFmnUJIFKOYkvETN2n6w8IspPYx8jGiX8xYX-T1RuX8QIeXVVoMNyK9SRmBKSlLhkcAomSq/s1600/blocklocal.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCWGFKGb0O0csDDp_gZDfj1-c1AIqPZ72_HQqFqcSESa6aVVOZUTPrNU9LWAWTzRx3IW2yLUFmnUJIFKOYkvETN2n6w8IspPYx8jGiX8xYX-T1RuX8QIeXVVoMNyK9SRmBKSlLhkcAomSq/s320/blocklocal.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
2. Allowed IP Address&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCWGFKGb0O0csDDp_gZDfj1-c1AIqPZ72_HQqFqcSESa6aVVOZUTPrNU9LWAWTzRx3IW2yLUFmnUJIFKOYkvETN2n6w8IspPYx8jGiX8xYX-T1RuX8QIeXVVoMNyK9SRmBKSlLhkcAomSq/s1600/blocklocal.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCWGFKGb0O0csDDp_gZDfj1-c1AIqPZ72_HQqFqcSESa6aVVOZUTPrNU9LWAWTzRx3IW2yLUFmnUJIFKOYkvETN2n6w8IspPYx8jGiX8xYX-T1RuX8QIeXVVoMNyK9SRmBKSlLhkcAomSq/s320/blocklocal.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
設定完成 。 &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjbOsWX-bf9HqtHH_dN4SfBmLj3KVfv2b8GGPq7qY1Veo70XEd_bRaPG37F9_xS-RUt_ZNKYlLtIEkgDawXbxB8VZ-fclcU90d0AGCkfU0GKUsSNN9IlxTUojHbAhrjywtw1T1vx336Sc6/s1600/reg2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/2423068296660271499/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/04/port-blocker.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/2423068296660271499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/2423068296660271499'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/04/port-blocker.html' title='簡單的 網路阻擋器Port Blocker'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSeq3_y1XPtT-kk9YIZ_2PVsI0fQaDSq69bgINsooJ0d6oDaZ8mcRVtBVF83gV_9av6tA__u6nApx77cpX1Ywb8UROZ4iLSgGQbkWLBN627ZWIdddHhZy14qddfsrYWBcHbCr7ZYac1vUM/s72-c/active.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-3606642922728308716</id><published>2011-03-19T02:10:00.000-07:00</published><updated>2011-12-11T22:55:31.166-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="talend"/><title type='text'>整合工具 -Talend</title><content type='html'>Talend 他是一套系統整合用的工具，在專案的運用上不管是資料庫，檔案，系統連結&lt;br /&gt;
有其高竿的元件使用&lt;br /&gt;
&lt;br /&gt;
他的 License 一般都是 Apache License 所以 不太需要 有其他的 Payment 只要學與用&lt;br /&gt;
減少很多在 資料整合與 訊息交換上的 一堆麻煩。&lt;br /&gt;
&lt;br /&gt;
它存在 java 與 perl 的程式產生器 所以 只要懂Java 與 eclipse 上手還算簡單，&lt;br /&gt;
在 資料庫 建置上 我建議 下列 步驟&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;建立連結&lt;/li&gt;
&lt;li&gt;建立 metadata&lt;/li&gt;
&lt;li&gt;建置 Job&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
在檔案整合上建議下列步驟&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;建置metadata&lt;/li&gt;
&lt;li&gt; 建置Job&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;&lt;/ol&gt;
&amp;lt;有空再寫&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/3606642922728308716/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/03/talend.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/3606642922728308716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/3606642922728308716'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/03/talend.html' title='整合工具 -Talend'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1557414552566667876.post-1220945020205481344</id><published>2011-03-19T00:37:00.000-07:00</published><updated>2011-12-11T22:55:50.472-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="as400"/><title type='text'>AS400 跟Java - 基本資料</title><content type='html'>DB2 跟 AS400 是都是在偉大的 Blue Company所創造的系統，他的可用度與其設定法則&lt;br /&gt;
有跟一般開放系統又不一致，所以在限定的範圍與多樣需求的現實需求上，IBM產生出&lt;br /&gt;
一些它特有的方式，並且配合開放的Java 使用 產生出不一樣的做法，在經過專案的歷練下後整理出下列項目，&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;AS400 與 資料庫 對照 &lt;/li&gt;
&lt;li&gt;系統連結設定&lt;/li&gt;
&lt;li&gt;SQL Function&lt;/li&gt;
&lt;li&gt; CCSID 的轉換&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;&amp;nbsp;AS400 與 資料庫 對照 &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;在 AS400 跟資料庫 的名詞對照 如下&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Table &amp;nbsp; = Physical file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; View =Non-keyed logical file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Index Keyed= logical file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Column =Field&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Row=Record&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Schema Library=&amp;nbsp; collection&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Log=&amp;nbsp; Journal&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Isolation level Commitment = control level &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;系統連結設定&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;&lt;/b&gt; 1. Driver:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 一般系統連結在&lt;b&gt;JDBC 的&lt;/b&gt;規範 可使用 Jtopen 其網址(http://jt400.sourceforge.net/)一般使用的規範須以下列格式&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 需使用 的 jar: &lt;tt&gt;jt400.jar&lt;/tt&gt; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The class name to register is &lt;b&gt;com.ibm.as400.access.AS400JDBCDriver&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt; URL :&lt;b&gt; jdbc:as400://ip;name1=value1;name2=value2;...&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;&amp;nbsp; 2. URL 的設定參數&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 設定參數 將決定&amp;nbsp; AS400 的型態 並且在連結上的特性 其中包含幾個項目:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (根據 http://www.i5tools-eu-download.net/reference/jtopen/6.6/com/ibm/as400/access/doc-files/JDBCProperties.html)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;設定 有使用&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;;libraries=cshr1;prompt=false;char.encoding=UTF-8&lt;/b&gt;&lt;br /&gt;
但是 在連結 CCSID =65535 的欄位 需要將該欄位 進行調整&lt;br /&gt;
如設為 ccsid =937 有時候 會解決此問題&lt;br /&gt;
ccsid=&amp;lt;ccsid code&amp;gt;&lt;br /&gt;
convert _ccsid_65535=yes|no&lt;br /&gt;
一般 &lt;br /&gt;
prompt&amp;nbsp; &lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=1557414552566667876&amp;amp;postID=1220945020205481344&quot; name=&quot;databasename&quot;&gt;database        name&quot; &amp;nbsp;&amp;nbsp; *SYSBAS&lt;/a&gt;&lt;br /&gt;
libraries *LIBL&lt;br /&gt;
package ccsid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dafault ==&amp;gt; 13488(UTF16)&lt;br /&gt;
translate hex&amp;nbsp; =false&amp;nbsp; 一般僅在使用 binary 型態的欄位使用&lt;br /&gt;
欄位設定 &lt;br /&gt;
date format&amp;nbsp; ==&amp;gt; &lt;br /&gt;
date separator&lt;br /&gt;
decimal separator&lt;br /&gt;
naming &amp;nbsp; ==&amp;gt; sql ==&amp;gt; &lt;code&gt;&lt;var&gt;schema&lt;/var&gt;.&lt;var&gt;table&amp;nbsp; system==&amp;gt; &lt;/var&gt;&lt;/code&gt;&lt;code&gt;&lt;var&gt;schema&lt;/var&gt;/&lt;var&gt;table&lt;/var&gt;&lt;/code&gt;&lt;br /&gt;
time format&lt;br /&gt;
time separator &lt;br /&gt;
ccsid=&amp;lt;ccsid code&amp;gt; and convert _ccsid_65535=yes|no&lt;br /&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;
bidi string type&amp;nbsp; ==&amp;gt;http://www.i5tools-eu-download.net/reference/jtopen/6.6/com/ibm/as400/access/BidiStringType.html#navbar_top&lt;/h3&gt;
&lt;h3&gt;
translate binary&amp;nbsp; ==&amp;gt;  BINARY and VARBINARY fields to char and varchar&lt;/h3&gt;
&lt;b&gt;SQL Function&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;日期相關&lt;/b&gt;&lt;br /&gt;
&lt;table&gt;&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Function&lt;/th&gt; &lt;th&gt;Description&lt;/th&gt; &lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;CURDATE()&lt;br /&gt;
CURTIME()&lt;/td&gt; &lt;td&gt;Returns the system&#39;s current date/time.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;DATE(D)&lt;br /&gt;
DATE(T)&lt;/td&gt; &lt;td&gt;Converts a string representation of a date/time into into a&lt;br /&gt;
date/time value.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;DAY(D)&lt;/td&gt; &lt;td&gt;Returns the day(1-31) from the date D.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;WEEK(D)&lt;/td&gt; &lt;td&gt;Returns the week (1-54) from the date D.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;MONTH(D)&lt;/td&gt; &lt;td&gt;Returns the month (1-12) from the date D.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;YEAR(D)&lt;/td&gt; &lt;td&gt;Returns the year from the date D.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;DAYOFWEEK(D)&lt;/td&gt; &lt;td&gt;Returns the week day (1-7) from the date D where 1 is Sunday.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;DAYOFWEEK_ISO(D)&lt;/td&gt; &lt;td&gt;Returns the week day (1-7) from the date D where 1 is Monday.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;DAYOFYEAR(D)&lt;/td&gt; &lt;td&gt;Returns the number of the day, in a year (1-366).&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;HOUR(T)&lt;/td&gt; &lt;td&gt;Returns the hour (0-24) from the time T.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;MINUTE(T)&lt;/td&gt; &lt;td&gt;Returns the minute from the time T.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;SECOND(T)&lt;/td&gt; &lt;td&gt;Returns the second from the time T.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;MICROSECOND(T)&lt;/td&gt; &lt;td&gt;Returns the microsecond from the time&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;String 相關&lt;/b&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;CHAR(N)&lt;/td&gt; &lt;td&gt;Returns the the string representation of the &lt;br /&gt;
number N.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;CHAR_LENGTH(S)&lt;/td&gt; &lt;td&gt;Returns the length of a string.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;CONCAT(S1, S2)&lt;/td&gt; &lt;td&gt;Concatenates S1 with S2.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;SUBSTR(S, I, L)&lt;/td&gt; &lt;td&gt;Returns a substring of S, starting at index I of lenght L.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;LOWER(S)&lt;/td&gt; &lt;td&gt;Returns the lowercase representation of S.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;UPPER(S)&lt;/td&gt; &lt;td&gt;Returns the uppercase representation of S.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;TRIM(S)&lt;/td&gt; &lt;td&gt;Removes spaces from the beggining and and of S.&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;RTRIM(S)&lt;br /&gt;
LTRIM(S)&lt;/td&gt; &lt;td&gt;Removes spaces at the begging (right) or end (left) of S.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;lt;未完待續&amp;gt; &lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://sonnystn.blogspot.com/feeds/1220945020205481344/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://sonnystn.blogspot.com/2011/03/as400-java.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/1220945020205481344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1557414552566667876/posts/default/1220945020205481344'/><link rel='alternate' type='text/html' href='http://sonnystn.blogspot.com/2011/03/as400-java.html' title='AS400 跟Java - 基本資料'/><author><name>sonny@bolgger</name><uri>http://www.blogger.com/profile/09083415251949093442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>