2016年7月31日 星期日

轉印印表機碳帶的選擇 Choose Right Formula & Format.

最近為配合客戶在產品上標籤的需求,包裝單位為配合設計單位的要求,試印不少的標籤模版供客戶選擇,也因此衍生許多內部管理運作的問題
簡單來說,任何產品專案的推動會動員到各相關單位的協助與配合,但當專業度不足時,官腔式的應對,絕對是造成專案達成的礙石. 怎說呢? 就如何主題的目的,當包裝單位只會買自已"習慣"的耗材又無法開出物料規格時! 又當採購/總務單位及資訊單位對物料產品規格又不熟悉時! 只會造成模版試了又試, 機器設備買錯或買貴了, 及PM對客戶溝通後再協商與妥協地修改模版,形成永無止境的產品開發折磨.
言歸正傳,標籤列印機有直熱與轉熱式打印機構兩種方式,通常都是兩者兼用,但也有單一形式.事實上兩者者原理相同,均是打印機構用熱處理來完成打印的目的,差別是打印目的材料的不同,直熱式就是打印在熱敏紙上,常見在小七發票的列印方式,它的特性就是怕熱,也經不起時間的催殘,久了印字就不見,所以在標籤的列印上,絕不會看見它的使用,只會用在方便列印的環境上,常見的就是統一發票.
轉印式打印則可長時間保留印字,也不怕光,就跟雷射印表機或影印機般,可長久保留且印字品質佳,常用在標籤的使用,尤其是條碼的打印.
它也是靠熱處理將碳帶上的色膜轉印在打印目標的表面上,所以打印質地的差異就與碳帶的選擇有關,這也是"專業"上的差異
我有個很深的體悟,就是規格的設定,常在嘴邊講的SPEC.身為個工程師若SPEC也搞不清那就"了然"了,以轉印碳帶而言,除了尺寸與機器打印規格外,什麼是WAX,WAX/RESIN,RESIN包裝工程師一定要瞭解與掌握,如何選擇適合的碳帶似乎是最基本的知識.

Ref. http://www.satoeurope.com/uk/products/labels-ribbons.aspx
       http://barcode-labels.com/products/thermal-transfer-ribbons/

3 type of Ribbons
Wax
Wax/Resin
Resin


Scratch/Chemical
Heat Resistance
Label Stock Compatibility Typical Applications
Wax  Poor Versatile; typically coated paper Short term; shipping labels, compliance labeling
Wax/Resin
Good Versatile; typically coated paper or coated synthetics Bin location labels, horticulture tags, healthcare labels
Resin
Great Polyester, polyimide, polypropylene, polyethylene Chemical drum labels, circuit board labels, agency recognized labels

Choose Right Formula & Format.


2016年6月14日 星期二

擷取SQL Server資料到Excel工作表上

Private Sub CommandButton1_Click()
Worksheets("工作表1").Select '清除工作表1資料
  Cells.Select
   Selection.Delete Shift:=xlUP
   Range("A1").Select

Dim cnnConnect As Object
Dim rstRecordset As Object
  Columns("A:C").Select
  Range("A1").Activate
  Selection.Delete Shift:=xlToLeft
set cnnConnect = CreateObject("ADODB.connection")
set rstRecordset = CreateObject("ADODB.Recordset")

cnnConnect.Open "Provider=SQLOLEDB;" & _  '建立資料庫連結
  "Data Source = DBS\sql_server;" & _
  "User ID=XXXX;Password=XXXX;"

rstRecordset.Open _
   Source:="select item,serial,dat from XXX-database", _
   ActiveConnection:=cnnConnect


With ActiveSheet.QueryTables.Add( _
    Connection:=rstRecordset, _
    Destination:=Range("A1"))
.Name = "Contact List"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False

End With

Range("A1").Value = "項次"
Range("B1").Value = "序號"
Range("C1").Value = "日期時間"

ActiveWorkbook.Worksheets("工作表1").QueryTables(1).Sort.SortFields.Clear
ActiveWorkbook.Worksheets("工作表1").QueryTables(1).Sort.SortFields.Add Key:= _
Range("A2:A500"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal

With ActiveWorkbook.Worksheets("工作表1").QueryTables(1).Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

MsgBox "OK"

End Sub

2016年6月13日 星期一

不動產買賣查詢-Excel VBA

Excel VBA是一個很好用的程式設計工具,它的物件不外乎就是Application;Workbooks,Sheets 及Chart,利用巨集的方式執行副程式來達成數據的收集,篩選,分析等功能.這次是利用內政部不動產交易實價查詢服務網http://lvr.land.moi.gov.tw/來做"類大數據"分析的練習.

Sub selects()
 x = InputBox("請輸入關鍵字!!")
    For i = 2 To Sheets.Count '防止查詢已存在的名稱而產生錯誤
        If x = Sheets(i).Name Then
            MsgBox "工作表已存在請先刪除!!"
            Exit Sub
            'Application.DisplayAlerts = False '或者自動覆蓋更新
            'Sheets(i).Delete
            'Application.DisplayAlerts = True
            Exit For
        End If
    Next

    If x = "" Then '無填入訊息警示
        MsgBox "請務必輸入資料!!"
        Exit Sub
    End If

    Range("C1").Select '游標放C1

    selection.AutoFilter  '篩選
    r = Range("A1").End(xlDown).Row
    ActiveSheet.Range("$A$1:$L$" & r).AutoFilter Field:=3, Criteria1:="=*" & x & "*"

    If Range("A1").End(xlDown).Row = 65536 Then   '無結果
        MsgBox "查無資料!!"
        selection.AutoFilter
        Exit Sub
    End If

    Range("A1").Select  '複製
    Range(selection, selection.End(xlToRight)).Select
    Range(selection, selection.End(xlDown)).Select
    selection.Copy

    Sheets.Add After:=Sheets(Sheets.Count)  '新增工作表
    Sheets(Sheets.Count).Name = x

    Range("A1").Select  '貼上
    ActiveSheet.Paste

    selection.Columns.AutoFit  '自動調整欄寬

    Range("A1").Select

    Sheets(1).Select  '切回原工作表
    Application.CutCopyMode = False

    selection.AutoFilter '取消
    Range("A1").Select

End Sub

接著可到服務網去下載 lvr_landxls.zip套用測試了


2016年5月31日 星期二

文件管理編碼原則的迷思與盲從

    在職場中常會口中ISO,嘴邊ISO的講這字串,觀念上它就是標準,也的確是如此!
其實它都是以ISO9000品質管理為基礎延伸之管理標準,而ISO正是這個組織的縮寫(國際化標準組織:International Organization for Standardization),當它再加上環保項目,就成了ISO14000;加入食品安全,就成了ISO22000;與醫療器材相關,就是ISO13485;其主要的綱要原則是一樣的,只是焦聚物不同.所以幾乎不會看到食品廠有ISO22000認證管理系統又會有ISO9000,因為ISO22000就包含ISO9000的核心,實無必要多花輔導認證的金錢!
在品質管理系統最重要的就是文件管理,如何管理好像很簡單,但實際瞭解且做好的單位是少之又少,大部份企業只當做應付營運需求的工具罷了!怎講呢? 其實僅要知道其文件管理編碼狀況,即可清楚看出在這品管系統下,輔導認證單位營利及企業執行盲從的兩方心態.
    文件管理簡要的分類,可為四階結構,常為一階手冊(精神口號);二階程序(準則);三階作業指導(方法);及四階-最底層的表單所構築的系統,其環環相扣.好的文管,可由其編碼窺之,它沒固定的標準,會因產業之差異,隨之調整與改變,但不變的是原則的掌握,這也是難的地方,因為企業都會運用ERP系統管理應收付及倉儲管理,但當系統已運行的狀況下,不是說改就改的,資訊的延續性及調整,當大資料庫時就會是件難過的事!
    所以不只是文件之管理,整個組織的編碼原則,牽動整個資料的串接與管理,這就是它的迷思. 怎麼解決呢?除了一開始就要搞好外? 不然就是要全部翻新了.
    話外題: 一定要分四階文件嗎? 其實不然,切忌只會COPY,當工司規模小是,程序書與指導書的分野就不用那麼清楚,但當組織規模龐大時,就不能這樣亂搞了,不然只會變成因管理而管理,間接人員會花很多時間在維護這貴森森的文件系統;另外亦可從編碼的方式來看管理者用不用心,ISO9000文件樣版中,一階會用QM;Quality Manual在當作縮寫,二階為QP;Quality Procedure,三階為WI;Work Instruction,四階為FM;Form為代表,我們可以延用這精神,但只照抄,其編碼原則又無辨識度時,只會被當做笑柄.

2016年5月28日 星期六

MongoDB學習02

wmic os get caption
查看WIN OS的版本
wmic os get osarchitecture
查看WIN的位元版本

>net stop MongoDB
(or >mongod.exe --remove)
MongoDB 服務正在停止
MongoDB 服務已經成功停止
>echo logpath=d:\data\log\mongod.log > d:\mongodb\mongod.cfg
>mongod --config d:\mongodb\mongod.cfg --install
>net start MongoDB
MongoDB 服務已經啟動成功

sc.exe create MongoDB binPath= "C:\mongodb\bin\mongod.exe --service --config=\"C:\mongodb\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

sc.exe delete MongoDB

常態分佈Normal Distribution的定義

    常態分佈又稱高斯分佈Gaussian Distribution,要進行統計前要先確認這些變項中數值的分佈情況,標準的常態分佈是以平均值mean為中心,標準差standard deviation;SD為座標軸所繪出之分佈,型狀似對稱之鐘形.其中可能是瘦形或寬形或是不對稱之偏倚形,其偏移的形態又與眾數mode;中位數median與平均值相關,理想的常態分佈為mode=median=mean(symmetrical),當然其變異量variability即差距range,變異數variance,標準差及變異係數coefficient of variance;CV越小越好.

如何檢測常態分佈及常態分佈的測試
1.中央趨勢central tendency,即非常對稱的分佈(mode=median=mean),若非對稱的分佈,則須考量其偏態skewness及峰度kurtosis
2.四分位數間距interquartile rang,IQR:IQR=Q3-Q1,通常用標準差與IQR/1.35來做比較,SD=IQR/1.35為常態分佈;SD>IQR/1.35,則為重尾;SD<IQR/1.35,則為輕尾
3.常態分佈的測試會以樣品數來判斷,少於50則看Shapiro-Wilk的W值;大於50則看Kolomogorov的D值,無論W值或D值,其虛無假設H0中,若p<0.05則推翻H0,表非常態分佈;p>0.05則接受H0,表常態分佈.因此在生物統計中當p<0.05時為非常態分佈即其為顯著差異之統計結果.
    但在生產線上的統計需求則不是需要其具有顯著之差異,而是藉由標準差之掌握,來控制生產品質之要求及精進,所以需要的是其常態分佈性的分析.

常態分佈與標準差之關係圖


2016年5月25日 星期三

抽樣數量大小 Sample Size Calculator

FGMP中對於抽樣數量的決定,實在是很簡單,就直接參照衛福部食藥署公告的食品衛生檢驗項目暨抽樣數量表就可以很清楚地跟隨與執行.
以統計與品保而言,可不是那麼輕鬆就可掌握.不過參考這個網站 http://www.surveysystem.com/sscalc.htm 可很簡單地計算出採樣樣品數量



2016年5月6日 星期五

MongoDB 學習01

NoSQL筆記記錄

MongoDB服務停止與啟動 for windows
cmd: net stop MongoDB
cmd: net start MongoDB

系統最高權限設置
1.先切到admin DB
cmd: mongod

MongoDB shell version: 3.2.5
connecting to: test
> use admin

>db.createUser(
   {
       user:"xxUserNamexx",
       pwd:"xx1234xx",
       roles:
        [
           {
            role:"userAdminAnyDatabase",
            db:"admin"
           }
        ]
   }
  )

身份驗證
>db.auth('xxUserNamexx','xx1234xx')

DB切換
>use XXX

ref. https://docs.mongodb.com/manual/reference/method/db.createUser/

admin的role
readAnyDatabase > 讀取所有資料庫
readWriteAnyDatabase > 讀寫所有資料庫
userAdminAnyDatabase > 管理所有資料庫使用者
dbAdminAnyDatabase > 所有資料庫的管理者
root > 最高權限

2016年3月29日 星期二

EXCEL每月第X週來表示欄位方法 3W2:三月第二週

WEEKNUM(serial_number,[return_type]) 這函數的功能是表示這一年的週數目
但若我要以每個月的週數表示,則需要formula來達成
目的: 1W1 達示1月的第一週
我會這樣做:
1.顯示月份 MONTH(serial_number)
2.加字串"W"表示週序
3.配合  WEEKNUM(serial_number,21) 當日之週序減掉當月1號的週序WEEKNUM(DATE(YEAR(serial_number),MONTH(serial_number),1),21), 因為會減到自己所以必需加1
結果如下:
=WEEKNUM(serial_number,21)-WEEKNUM(DATE(YEAR(serial_number),MONTH(serial_number),1),21)+1
其中須注意的是return_type的設定
1表示週日為每週的第一天,2則表示週一為第一天,
若要設定其他日為起始日,則以週日啟始之1再加上日序1~7,例如週一為週日為始的第2日,設定為12; 週6為第7日,設定為17
但若以週一為起始日,則以週一啟始之2,再加上日序,如上述例子,我就設為21

CarpeDiem

 seize the day