ERP報表,中文字變成?

新建置的ERP AP 設備,即然發現到列印出來的報表,中文字全部變成?
(由資料庫中抓取到的資料,只要是含有中文字的,就會呈現?,而原本報表中表現資料的抬頭說明文字,即便是中文字也是可以正常顯示。)

2730_001 

 

這問題造成的主因是:設備使用語法的環境設定不正確 !!
(調整如下即可排除)

Taiwan

使用C# .NET Framework 程式設計前的基礎知識

一、物件導向的原則

  • 封裝 (Encapsulation)
  • 繼承 (Inheritance)
  • 多型 (Polymorphism)

所有的變數和方法,包括 Main 方法,也就是應用程式的進入點 (Entry Point),都封裝在類別定義之內。
類別可能直接從一個父類別繼承,不過可以實作任何數目的介面。覆寫父類別中之虛擬方法的方法,都需要用 override 關鍵字做為避免意外重新定義的方式。
在 C# 中,結構 (Struct) 就像輕量的類別;是一種能夠實作介面,卻不支援繼承的堆疊配置型別。

二、C# 如何運行?

從 C# 原始程式碼到電腦執行
圖片來源:http://msdn.microsoft.com/zh-tw/library/z1zx9t92(v=vs.80).aspx

手機條碼 - 為地球環境盡點力

談到手機條碼,可能知道的人不多,更不用說要如何用它,來為地球生態與環保工作,盡點個人的力量。
有聽說政府在推廣 電子發票 ?
你有在用 ?
拿到紙本發票的安全感,會不會因為改用電子發票,而變了不安全呢?
每期紙本發票的對獎,是不是花費掉你不少時間?可不可以更有效率點?
中獎後,要怎麼去領獎?

這些疑問,想必是你我心中的一個結吧 !!
若是能解開這個結,改用電子發票,不就是順理成章的事情;
當然為地球環保盡點個人心力,也就水到渠成。

讓我們一起來使用 手機條碼 !!
  1. 拿起你的智慧手機,下載安裝財政部App - 雲端發票精靈
    用法介紹:
                    http://www.soft4fun.net/ipad-iphone/雲端發票精靈.htm
                    http://www.einvoice.nat.gov.tw  (財政部電子發票網)
  2. 實際使用雲端發票精靈 -
       掃瞄有條碼的發票
       手工登入傳統統一發票的資料
  3. 申請 手機條碼 (Ref : 流程圖),做為你電子發票的儲存區域(也就是共通性載具) 手機條碼使用流程圖
  4. 驗證後,列印出條碼標籤,並黏貼在隨身物品之上,日後購物時,就可以請商家掃瞄 手機條碼,
    產生 電子發票,不再索取 紙本發票 了。
    image
手機條碼: /1O3ICJQ , Email: pertonchang@gmail.com

信用卡分期玩不得

日常生活中,常常聽到卡債的新聞,更嚴重的,則是輪為卡奴的命運。

因為時有所聞,而且不發生在個人的周遭朋友之間,就自然而然的,不以為意。(自掃門前雪 !!)

但命運不可能是永遠位在高峰,總有低落的時期。事情總是有可能被你自己遇見,還是了解一下吧。

話說,陳先生在銀行的信用卡分期利率是千分之5他想著千分之5,一萬元利息才50元,不算貴;是可以考慮辦分期買些3C產品來玩玩。
於是,他就購置一萬元的物品,並分12期攤還。結果,他卻支付 300多元的利息,相當於 300/10000 = 3%。

怎麼會由  千分之5 (0.5%) 變成 3% ??

讓我們來看下這張表
分期費用知多少

請注意:你是辦分期,不是一次付清,所以每次到期時,就要再以該期未支付清的本金數據,來計算該次的利息。

所以,利息的支付總共有 12次,只不過是每期的剩餘本金越來越少,相對的利息是少了些!!


若是,以概算的方式計算:分 12期,每期 50元利息,12 * 50 = 600元,約 6%。
6% 你還可以接受,也有能力輕鬆支付,那你才去考慮辦分期付款;
否則,就聰明點,再找找那裏有 分期0利率 的好康,才下手。

千萬不要成為卡債一族 !!

LaTeX 中文字使用上的問題

在 Windows 環境下,配合 Chrome 瀏覽器,使用 ShareLaTeX 程式在撰寫文章。
發現到只要一用到中文字,就會無法正常呈現出來。
例如:
----------------------------------------------------------
\documentclass{article}
\usepackage[utf8]{inputenc}
\title{42}
\author{張天輝}           % 這行中文字會無法顯示出來
\date{June 2012}
\begin{document}
\maketitle
\section{Introduction}
\end{document}
-----------------------------------------------------------
Google 一下後,發現到有一套件 CJK 可用。
LaTeX 上有個套件,叫做 CJK(Chinese/Japanese/Korean),是個德國人寫的。
這個套件的主要目的就是解決中日韓的字型問題。
-----------------------------------------------------------
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[encapsulated]{CJK}
\begin{CJK}{UTF8}{bsmi}                    % 開始 CJK 環境,設定編碼,設定字體
\title{42}
\author{張天輝}
\date{June 2011}
\begin{document}
\maketitle
\section{Introduction}
\end{CJK}
\end{document}
-----------------------------------------------------------

奇怪的資料庫問題

原本已在工作環境中,運行多年的一個 SQL 程式,日前卻莫名其妙的無法正常運作。(查不出資料來)

原來的 SQL 程式:
SELECT a.cu_no,a.sa_ivno,a.sa_date,a.od_id,a.sa_amt,a.ie_user,a.ie_lymd,a.od_satyp,b.cu_snam,a.cu_ar
FROM TableA a
INNER JOIN TableB b ON a.cu_sale=b.cu_sale
WHERE sa_date<=getdate()-1 and sa_amt>0 and
sa_ivno NOT IN (SELECT sa_invoice FROM TableC)
ORDER BY sa_date,cu_no,sa_ivno;

經過多方的查找,才找到真正問題的原由;主因是資料數據含有 Null
如果只單純修正含 Null 值的資料,就只能改正現在的問題;但日後若是再發生 Null 情形,也會再產生查不到資料的現象。

所以需要重新修正原程式,以避免日後再發生 Null 的情形。
新修正程式如下:
SELECT a.cu_no,a.sa_ivno,a.sa_date,a.od_id,a.sa_amt,a.ie_user,a.ie_lymd,a.od_satyp,b.cu_snam,a.cu_ar
FROM TableA a
INNER JOIN TableB b ON a.cu_sale=b.cu_sale
WHERE sa_date<=getdate()-1 and sa_amt>0 and
not exists(select 1 from TableC c (nolock) where a.sa_ivno=c.sa_invoice)
ORDER BY sa_date,cu_no,sa_ivno;

情緒的鏡子 閱讀心得

在主的良善美意中,如同世人所說的因緣際會下,在這個星期中即然一口氣讀完的”情緒的鏡子”。
心裏想著,這絕不是平常的我可以做到了;因為看電腦專業書籍我在行,其他則不是。

愛家文化事業基金會出版,林凱沁著作, ISBN:9789868551343

本書借由作者本身的經歷,引領讀者自已進行一次個人生命的鏡射省思。

希望,這份讀後筆記能對 我周遭的親朋好友 或是重要他人,有所助益。
願恩典、榮耀與感恩歸給 愛我們的神,願閱讀此書的人,能從中得著幫助。

  • 表象的行為,不一定就是真實的情緒信息。
  • 『所謂健康就是一段不斷痊癒的過程』--心理醫師派克 
  • 憂鬱症常常源自本身情緒的錯誤解讀
  • 許多人迷失在情緒的迷宮中,誤解了自己的情緒信息,也錯待了身邊親密的人。
  • 正確解讀情緒,是治療憂鬱的良方。
  • 面對情緒病毒,知識是最好的良藥。
  • 情緒病毒並不可怕,因為最的情緒醫生,就是自己。

書中提及『 與心對話』的議題,可參考以下的資料:
情緒的鏡子.mm

說出心中的情畫 閱讀摘要

在一次學習教程中,聽到「語言圖像」這專業術語,當時對它是迷朦不清。

直到看到「說出心中的情畫」一書後,才知道「語言圖像」的用處及優點,
願藉這文本讓大家也能了解到溝通的另一門徑。

說出心中的情畫
愛家文化事業基金會出版,張元 譯, ISBN:9579824312
原著:The langage of love, Gary Smalley & John Trent 

作者舉出眾多例子來說明夫妻、親子間的溝通,如何應用「語言圖像」來改善。
當然,如何建置出「語言圖像」的七大步驟,穩固婚姻橋樑的四大柱子,
並提供的 101精選生活語言圖像 來強化讀者的圖像建構能力,都能在書中一覽無疑。

希望,這份讀後筆記能對 我周遭的親朋好友 或是重要他人,有所助益。
願恩典、榮耀與感恩歸給 愛我們的神,願閱讀此書的人,能從中得著幫助。

  • 在同一年齡上,男孩發出的是「聲音」;女孩說出的是「字句」。

書中提及的議題,可參考以下的資料:
說出心中的情畫.mm

施比受更有福

上週,在一次與同事的談天中,才得知另一同事在工作上有些困擾,因為要依據一份源頭文件的內容,再重建產生一份文件。而這份文件產生的時間常常要花費她一天左右的時間。

聽到這樣的情況,一時興起,就試著去了解這文件的產生流程及注意事項。沒想到,兩份文件都是 Excel 檔案,一看這情形,心想可能幫她一個忙:寫個程式好幫她簡化作業時間。

以前,做過 資料庫 轉資料到 Excel,也做過 Excel 轉資料到 資料庫;現在,要從 Excel 寫資料到 Excel 去,可是第一次這樣做。
不知,是不是能如願 !!

嘗試的一些用法後,終於完成的程式撰寫工作,並已交給該負責同事使用。真好,一天的時間改換成 30秒的按鈕作業,很高興能看到這樣的結果。

 

就如 教學相長 般,具有的相同意義:施比受更有福。
寫這程式的過程,個人也學到一些新的技巧,摘要如下:

  • 為VBA程式碼設定密碼保護機制
  • 直接使用 Workbooks.Add 產生的"新 Excel" 檔案,一般會以 Book1, Book2 … 來命名(與使用者操作時的環境有關),在程式資料交換過程中,無法有效被控制使用;要改用 Set Wk = Workbooks.Add,Windows(Wk.Name).Activate
  • 動態陣列的使用:Dim DynArray(),ReDim DynArray(1 To intCntMaterial, 5)     '車型, 件號, 版本, 數量, 取用件號
  • '設定視窗凍結,Range("A2").Select,ActiveWindow.FreezePanes = True
  • 另存新檔:ActiveWorkbook.SaveAs 或是 Wk.SaveAs

當 XML 遇到 XSL 及各類瀏覽器所產生的火花 !!

學習 XML 與 XSL 整合應用,已經有一段很長的日子。
之前,一直是以看看的心態在學它,所以,原理、語法及資料的呈現顯示,這只"看看"而已。沒有做太多的琢磨。

近來,工作上有所需要,且需實作以體現相關的結果來,才再次拿書作戰。這一戰才知問題多多 !!

  1. 事隔多年,各家瀏覽器的版本及功能,功能都已有大躍進。
  2. 要在瀏覽器上呈現資料,即然也不同;有的可以用拖拉帶入,有的則不可以,反需要用網頁伺服器的方式才行。
    也就是說,要用網頁方式來運行;如在 IIS 中,設定一個可瀏覽的虛擬目錄,再去瀏覽該目錄下的檔案。
  3. XSL 的 版本及指令語句的配合,也要相一致。

 

綜合上述摘要,結論如下:(2012/07/20 提記)

Google Chrome 20.0.1132.57 網頁伺服器呈現資料,XSL V1.0 不可用
Internet Explore 6.0.2900.5512 可拖拉,XSL V1.0, V2.0 均可用
Mozilla FireFox 12.0 可拖拉,XSL V2.0 均可用
   
XSL V1.0               XML <?xml-stylesheet type="text/xsl" href="配搭的XSL檔案.xsl"?>
                             XSL <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
   
XSL V2.0               XML

<?xml-stylesheet type="text/xsl" href="配搭的XSL檔案.xsl"?>
<RootElementName
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

                             XSL

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi ="http://www.w3.org/2000/10/XMLSchema-instance">

XSL V2.0               XML
(自訂 Namespace)

<?xml-stylesheet type="text/xsl" href="配搭的XSL檔案.xsl"?>
<RootElementName
xmlns=http://My-Company.com/namespace
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://My-Company.com/namespace">

                             XSL
(自訂 Namespace)

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi ="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:my=http://My-Company.com/namespace>

My-Company.com 依實務需要加以變更。

配合 XSL 體現含中文字的 XML會有亂碼?

個人使用 Altova XMLSpy 2012 版本,配合 XSL 在體現 XML 文件時,發現中文字有部份亂碼,
不知該如何排解?
** 使用 該軟體的 XSL Transfermation (F10) 的功能。

呈現出不正常的結果

image

其運作的過程中,出現的下列幾個錯誤訊息:

image

image

為了解問題所在;改在 IIS 下,重新瀏覽該檔案,則發現到一點問題也沒有。
(密訣:直接在 IIS 中,設定一個可瀏覽的虛擬目錄,再去瀏覽該目錄下的檔案,即可。)

image

要如何取得 MS-SQL 資料表的結構訊息?

要得知資料表的結構訊息,可以用 sp_columns 'Table_Name'   這是在 Query Analyzer 中運行。

若是要在 程式中 來取得相關表結構訊息,則要配合 syscolumnssysobjects 或是 syscolumns 及object_id()。

方法一:
select  a.*  from syscolumns a
left join sysobjects b on a.id=b.id
where b.name='Table_Name'

方法二:
select * from syscolumns where id=object_id('Table_Name')

其中有些欄位意義如下:
name  : 欄位的名稱
xtype  : 用以表示欄位的資料型態,可參考文章:SQL 系統資料表 syscolumns 的 xtype 數據意義?
length : 表示該欄位的寬度

SQL 系統資料表 syscolumns 的 xtype 數據意義?

SQL 系統資料表 syscolumns 記錄得資料庫中,所有被建置的資料表最重的訊息。
諸如:欄位名稱、寛度、資料型態…等。

其中,用以表示欄位的資料型態,是被呈現在 xtype 欄位中。但該欄位是以數字值來表示。
該如何得知該數字的含義?

事實上,相關資料是存放在 systypes 資料表中。

select * from systypes
order by xtype

------------------------------------------------------------
34    image
35    text
36    uniqueidentifier
48    tinyint
52    smallint
56    int
58    smalldatetime
59    real
60    money
61    datetime
62    float
98    sql_variant
99    ntext
104    bit
106    decimal
108    numeric
122    smallmoney
127    bigint
165    varbinary
167    varchar
173    binary
175    char
189    timestamp
231    sysname
231    nvarchar
239    nchar
------------------------------------------------------------

Windows installer error, Error Code : 2869

在 Windows 7 下,安裝一 *.msi 程式,運行時卻產生錯誤:2869.

這問題要如何排除?

Google 一下,得到一文章:
http://social.msdn.microsoft.com/Forums/en-US/windowsgeneraldevelopmentissues/thread/c1326233-3f10-4d98-96a7-4a22e5eeaa2d/

提到,先建置一 vbs 檔案,以修正環境的設定值。其方法如下:
1. 建置 NoImpersonate.vbs (本文的後端會詳述內容)
2. 運行 VBS。
    cscript NoImpersonate.vbs <msi-file>
    ex: cscript NoImpersonate.vbs "Lorom ERP Develop Setup.msi"
3. 再重新執行一次 MSI。

check this link : http://msdn2.microsoft.com/en-us/library/aa368069.aspx

NoImpersonate.vbs 程式碼,條列
'------------------------------------------------
Option Explicit
'' Constant values from Windows Installer
Const msiOpenDatabaseModeTransact = 1
Const msiViewModifyInsert = 1
Const msiViewModifyUpdate = 2
Const msiViewModifyAssign = 3
Const msiViewModifyReplace = 4
Const msiViewModifyDelete = 6
Const msidbCustomActionTypeInScript = &H00000400
Const msidbCustomActionTypeNoImpersonate = &H00000800

Dim databaseFile
Dim installer : Set installer = Nothing
Dim database : Set database = Nothing
Dim sql
Dim View, Record
Dim openMode : openMode = msiOpenDatabaseModeTransact
On Error Resume Next

Call Main()

Sub Main()
   If WScript.Arguments.Length <> 1 Then
      Fail("Usage is: cscript " & WScript.ScriptName & " [msi file]")
   End If
   databaseFile = WScript.Arguments(0)
   'WScript.Echo(WScript.ScriptName & ": operating on file '" & databaseFile & "'")
   '' Instantiate Windows Installer object
   Set installer = WScript.CreateObject("WindowsInstaller.Installer") : CheckError
   '' Open the MSI database
   Set database = installer.OpenDatabase(databaseFile, openMode) : CheckError
   Proc1 : CheckError
   'Proc2 : CheckError
   If openMode = msiOpenDatabaseModeTransact Then
      database.Commit
   End If
   WScript.Quit 0
End Sub

Sub Proc1()
   '' 1. problem: CustomActions in Vista have to run with NoImpersonate
   sql = "SELECT `Action`, `Type`, `Source`, `Target` FROM `CustomAction`"
   Set View = database.OpenView(sql) : CheckError
   View.Execute : CheckError
   Do
      Set Record = View.Fetch
      If Record Is Nothing Then Exit Do
      'typeVal = Record.IntegerData(2)
      If (Record.IntegerData(2) And msidbCustomActionTypeInScript) <> 0 Then
         'WScript.Echo "Here 1, Type=" & Record.IntegerData(2)
         Record.IntegerData(2) = Record.IntegerData(2) Or msidbCustomActionTypeNoImpersonate
         'WScript.Echo "Here 2, Type=" & Record.IntegerData(2)
         View.Modify msiViewModifyReplace, Record : CheckError
      End If
   Loop
   View.Close
End Sub

Sub Proc2()
   '' 2. problem: explicit format User-Errors, otherwise they are not visible in Vista, the User just sees Error 2869
   sql = "INSERT INTO `Error` (`Error`, `Message`) VALUES (1001, 'Error [1]: [2]')"
   Set View = database.OpenView(sql) : CheckError
   WScript.Echo "Here 2"
   View.Execute : CheckError
   WScript.Echo "Here 3"
   View.Close
End Sub

Sub CheckError
   Dim message, errRec
   If Err = 0 Then Exit Sub
   message = Err.Source & " " & Hex(Err) & ": " & Err.Description
   If Not installer Is Nothing Then
      Set errRec = installer.LastErrorRecord
      If Not errRec Is Nothing Then message = message & vbLf & errRec.FormatText
   End If
   Fail message
End Sub

Sub Fail(message)
   Wscript.Echo message
   Wscript.Quit 2
End Sub
'------------------------------------------------

Code snippet 工具程式的使用範例

   1: <?php



   2: //$host = "localhost";



   3: $host = "instance19216.db.xeround.com";



   4: $port = "12784";



   5: $db    = "school";



   6: $user    = "perton";



   7: $pass    = "12345";



   8:  



   9: //$conn = mysql_pconnect("mysql:host='instance19216.db.xeround.com:12784';dbname=$db", $user, $pass);



  10: $conn = mysql_pconnect("instance19216.db.xeround.com:12784","perton","12345");



  11:   if (!$conn)



  12:     die('Could not connect: ' . mysql_error());


  13:   mysql_select_db("school");



  14:  



  15:  



  16: $sql = "SELECT * FROM student";



  17: $q     = $conn->query($sql) or die("failed!");



  18:  



  19: while($r = $q->fetch(PDO::FETCH_ASSOC)){



  20:   echo $r['name'] . "<br />";



  21: }



  22: ?>


將 saveXML() 的內容呈現在螢幕上

看下程式碼,就會明白

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ex19-2</title>
</head>
<?php
$dom = new DOMDocument('1.0', 'utf8');

// 建立根元素 <companies>
$root = $dom->createElement('companies');
$root = $dom->appendChild($root);

// ----------------------------------
// 建立新的 <company> 節點
$company = $dom->createElement("company");
$root->appendChild($company);

// 建立 <company> 節點的子節點 <name>
$name = $dom->createElement("name");
$name->nodeValue = "松崗資訊股份有限公司";
$company->insertBefore($name, $company->firstChild);
// 建立 <company> 節點的子節點 <short>
$short = $dom->createElement("short");
$short->nodeValue = "松崗圖書";
$company->appendChild($short);

// ----------------------------------
// 建立新的 <company> 節點
$company = $dom->createElement("company");
$root->appendChild($company);

// 建立 <company> 節點的子節點 <name>
$name = $dom->createElement("name");
$name->nodeValue = "樂榮工業股份有限公司";
$company->insertBefore($name, $company->firstChild);
// 建立 <company> 節點的子節點 <short>
$short = $dom->createElement("short");
$short->nodeValue = "樂榮工業";
$company->appendChild($short);

// 會讓 xml 文件以有換行、內縮效果
$dom->formatOutput = true;

// 將 xml 內容,呈現在螢幕上
echo "<xmp>" . $dom->saveXML() . "</xmp>";

// 儲存 XML 文件 publisher.xml
$dom->save('publisher.xml');
?>
</body>
</html>

程式效果,如下:

<?xml version="1.0" encoding="utf8"?>


<companies>


  <company>


    <name>松崗資訊股份有限公司</name>


    <short>松崗圖書</short>


  </company>


  <company>


    <name>樂榮工業股份有限公司</name>


    <short>樂榮工業</short>


  </company>


</companies>


 


產生 XML 檔案曾遇到過的疑惑

從接觸到 XML 領域後,就知道可以應用 DOM 來產生 XML 文件檔案。
而且,幾乎提到產生 XML 檔案的書籍,也都會提到下列相似的程式碼(以 PHP 為範例)

<?php
$dom = new DOMDocument('1.0', 'utf8');

$root = $dom->createElement('companies');      // 建立根元素 <companies>
$root = $dom->appendChild($root);

// 建立新的 <company> 節點
$company = $dom->createElement("company");
$root->appendChild($company);

// 建立 <company> 節點的子節點 <name>
$name = $dom->createElement("name");
$name->nodeValue = "清松資訊股份有限公司";
$company->insertBefore($name, $company->firstChild);

$short = $dom->createElement("short");
$short->nodeValue = "清松圖書";
$company->appendChild($short);

// 儲存 XML 文件 publisher.xml
$dom->save('publisher.xml');
?>

上述程式碼,會產生如下結果:
<?xml version="1.0" encoding="utf8"?>
<companies><company><name>清松資訊股份有限公司</name><short>清松圖書</short></company></companies>

但是,使用 Chrome 瀏覽器觀看,則正常。(** 有 提醒 訊息)
image

難道,產生的文件檔案一定要由程式中,自動加入"內縮"的空白字元?

針對這疑惑,終於找到好的解決方法。

只要在 存檔 save() 之前,加一指令即可改善。

// 會讓 xml 文件以有換行、內縮效果
$dom->formatOutput = true;

新修正的程式碼:

<?php
$dom = new DOMDocument('1.0', 'utf8');

$root = $dom->createElement('companies');      // 建立根元素 <companies>
$root = $dom->appendChild($root);

// 建立新的 <company> 節點
$company = $dom->createElement("company");
$root->appendChild($company);

// 建立 <company> 節點的子節點 <name>
$name = $dom->createElement("name");
$name->nodeValue = "清松資訊股份有限公司";
$company->insertBefore($name, $company->firstChild);

$short = $dom->createElement("short");
$short->nodeValue = "清松圖書";
$company->appendChild($short);

// 會讓 xml 文件以有換行、內縮效果
$dom->formatOutput = true;

// 儲存 XML 文件 publisher.xml
$dom->save('publisher.xml');
?>

上述程式碼,會產生如下結果:
<?xml version="1.0" encoding="utf8"?>
<companies>
  <company>
    <name>清松資訊股份有限公司</name>
    <short>清松圖書</short>
  </company>
</companies>

Remote Connection Error !! (2)

記得以前曾作過記錄,連接遠端電腦時,發生”網路提供者都不接受的網路路徑”錯誤。
當時的答案是 勾選 File and Printer Sharing for Microsoft Networks 功能。

不料,今天卻發生同樣的錯誤,但 File and Printer Sharing for Microsoft Networks 功能已涇被勾選,怎會這樣呢?

再次重啟 改變window防火牆設定(change Windows Firewall setting),
 image

image

image

原來,防火牆的進階設定,還有一個控制點。
把它 勾選 起來吧。

Android 命名趣聞

 

 image 可愛的小綠人
你是誰?

你是吃什麼長大?

據說,你家族成員都有吃 甜點 嗜好,是這樣嗎?

讓我們來看下你們的家族譜
image

HyperLink 超連結 功能在 Excel 上的應用技巧

日前,在整理 PHP Plug-ins 資料,再次遇到"一堆"超連結的資料清單。
才讓我想到,在 Excel 環境中,要如何去 快速 處理超連結的問題;另外未防日後健忘,就順手做下此一筆記。

Excel 環境中,要 快速 處理超連結的問題,有二:

  1. 快速移除即有的超連結設定
  2. 為一批清單資料,設定相對於每一項目的超連結

問題一:快速移除即有的超連結設定
image 今要移除每一項目的超連結

步驟:

  1. 在空白儲存格上鍵入 1,接著以滑鼠右鍵按一下此儲存格。
  2. 按一下快顯功能表上的 [複製]
  3. 按住 CTRL ,選取您想要停止的 超連結 項目,或區域的起首,並可配合 CTRL 逐一選取或者是 SHIFT 整區選取。
  4. 按一下 [編輯] 功能表上的 [選擇性貼上]
  5. [運算] 方塊中,按一下 [乘],接著按一下 [確定]

image

image

 

 問題二:為一批清單資料,設定相對於每一項目的超連結
              (希望為顯示文字 Col A 的每一項目,設定其各別的超連結 Col B)

image

C1 = HYPERLINK(B1, A1)

image

一次抓取 MSSQL 數據資料的意外

在學習 PHP & 使用 Eclipse 的過程中,曾記錄下一篇心得文章:PHP PDO 連接 MSSQL 資料庫遇見過的問題

依著那些自信,還以為日後抓取數據庫資料可能會一帆風順,不料短短一天,就破功了。 #$%#$%…

使用如下的程式碼:(截錄)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
<title>IEDB01-iepa00h</title>
</head>
<body>

<?php
try
{
    define(sp, '&nbsp;');
    // 設定 MSSQL 資料庫的 DSN
    $dsn = 'mssql:host=localhost;dbname=DB01;';
    $user = 'sa';
    $password = 'DB20120604';
    // 建立 PDO 物件
    $pdo = new PDO($dsn, $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

卻產生下面的中文亂碼情形 !!

image

心中真是 ⅩⅩ○○…
明明同樣的程式,之前是可以正常運作了,怎會今天就停擺?

心有不干,不把問題找出來,那會心安?
於是,重新再從資料庫字碼的設定及抓資料的程式碼存檔等方面找起,一切多符合先前所列的規則。
最後,只能比較不可正常運行及可正常運行程式檔案的大小內容

結果發現到 不可正常運行 與 可正常運行 的檔案,有差異。
不可正常運行的檔案會比可正常運行的檔案多出 3 Bytes

有的這樣的發現,就好辦了;接下來就是 Hex 的比對。
不可正常運作:
image

可正常運作:
image 

哦,這下明白了。

EF BB BF 這三碼不就是 Unicode 的 BOM 嗎?(可參考文章)

補充說明:
要去除多餘的 3 Bytes 資料,可以使用 PSPad 工具程式開啟該檔案,重新設定檔案的格式並存檔,即可解決問題。
image

至于,為什麼會產生 3個多餘的字元,就只能等以後有空再查證了。

願這篇文章能對你有所助益 !!  ( 神:願你平安 )

PHP PDO 連接 MSSQL 資料庫遇見過的問題

很高興,在 PHP 的學習過程中可以學到 PDO 的技巧。

根據書本中的範例,逐一建置 MySQL 的資料庫,並引入相關參考數據到資料表中;可以正常抓取到資料並顯示出來,這其中當然也包含有中文字。
[補充說明一下,範例中的資料庫字碼的設定及抓資料的程式碼存檔,都是以 UTF-8 處理。]

<?php
try
{
    // 設定 MySQL 資料庫的 DSN
    $dsn = 'mysql:host=localhost;dbname=ch18;';
    $user = 'daniel';
    $password = '123456';
    // 建立 PDO 物件
    $pdo = new PDO($dsn, $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // 設定 MySQL 資料庫的字元編碼
    $pdo->query('set character set utf8');

可能是試做很順利,所以就想到是不是也可以抓取現有使用的MSSQL資料庫?
於是,就改寫原本的程式碼:

首先,
先入有關 HTML 的相關標籤,在 <?php … ?> 之前,並在 ?> 之後,補入 </body></html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>IEDB01-iepa00h</title>
</head>
<body>

再來是修改讀取 MSSQL 的相關設定

// 設定 MSSQL 資料庫的 DSN
$dsn = 'mssql:host=localhost;dbname=DB01;';
$user = 'sa';
$password = 'DB20120604';

// 建立 PDO 物件
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

並將 設定 MySQL 資籿庫的字元編碼指令加以關閉 (對於 MSSQL 該指令無效 !!)

// 設定 資料庫的字元編碼
//$pdo->query('set character set utf8');

此時,心想這樣應該一切順利了。不料,程式可以運行,但果結並確不符理想。
image 

怎會這樣 ?? 後來想到,MSSQL Server 當時建置的時候,是選定 Chinese_Taiwan_Stroke & Binary,會不會和內碼有關?
所以,就修正的 HTML 的字碼值

<meta http-equiv="Content-Type" content="text/html; charset=big5" />
image

每天必要運行的工作,可以排程化?

想要將每天必做的工作,加以排程化處理,是一個突然間的念頭。
可能是每天的常態性工作吧,所以才不以為意。
說到這兒,回憶起偶而會對 隔壁單位 的同事說:常態性的工作若是可以調整成電腦處理,而不去做,那麼作死自己也沒有人會可憐你 !!

沒想到,這事也落在自個的身上,真該自省了。

事情是這樣了,
每天一定要做 前天 資料庫的備份工作。而這備份工作也早已經寫成批次檔案,只要每天一上工,去點擊它 運行之。
說到這,大伙一定想即然是電腦做,點擊後不就沒事了 ??
事實上,每次的備份工作約要從 09:00 ~ 11:30,如此長的工作時間,一定也會影響到同一時間公司同事使用網路頻寬的效率。

所以,想調整:
1. 在非上班時段,運行資料庫的備份,由電腦啟動排程管控
2. 改善備份的效率
3. 一上班,就可以測試備份資料庫的完整性,減化備份的工作。

依據上述的構想,
在原本每天執行備份的電腦上,設定工作排程機制,讓它每天運作 ScheduleBatch.bat 檔案;
而該程式就會呼叫 前一天 的備份批次檔:備份bak單檔批次檔_20120605.bat

ScheduleBatch.bat  ============= 程式內容
@echo off
echo wscript.echo dateadd("d", -1, date) > %tmp%\tmp.vbs

for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k

rem    if %m% LSS 9 set m=0%m%
rem    if %d% LSS 9 set d=0%d%

@echo on
echo 備份bak單檔批次檔_%y%%m%%d%.bat
=========================================

接下來,稍做批次檔運作指令的說明,
echo wscript.echo dateadd("d", -1, date) > %tmp%\tmp.vbs
使用 VBScript 功能,在電腦 %tmp% 的目錄中,產生 tmp.vbs,其內容是 wscript.echo dateadd("d", -1, date)

接下來是使用 cscript 來運行 tmp.vbs,分別得到 年、月、日 等三個變數 %y%、%m%、%d%
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k

最後,就是執行備份批次檔
echo 備份bak單檔批次檔_%y%%m%%d%.bat

Apache 虛擬目錄設定:補充說明

原本有此相關文件,
但發覺有欠缺,再增補之。

要修改 C:\AppServ\Apache2.2\conf 目錄中的 httpd.conf 檔案:
(每個虛擬目錄要設定各別的權限)

例如:要設定 虛擬目錄 files
Alias /files "D:/wwwroot/files"

<Directory "D:/wwwroot/files">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>


Alias /mp3 "D:/wwwroot/mp3" 

<Directory "D:/wwwroot/mp3">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>


Alias /SundayMessage "d:/SundayMessage"

<Directory "D:/SundayMessage">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

為何直接加入現有程式*.php到Eclipse專案中,可以開啟卻無法正常執行?(二)

在解析這一問題前,先來看下列兩圖示,注意紅線框中的內容格式。

image

image

一個是 相對似 路徑表示,一個是實體路徑的表示方式。

若是,對 實體路徑的檔案(ex5-11.php) 來運行,

image

** 此時,系統沒有任何反應或是提示 !!

要解決這一問題,首先要對 專案 PHP 或是 專案下的子目錄,做 Refresh
再來,關閉已開啟的檔案 ex5-11.php,再重新開啟一次。

注意:抬頭文字已經和先前的內容不同。

image

這時,再運行該檔案,就會正常了。

image

為何直接加入現有程式*.php到Eclipse專案中,可以開啟卻無法正常執行?

需做下列步驟:

  1. 對 子目錄,做 Refresh
  2. 必要時,各別對每一個*.php程式檔,做 Run Configuration 設定

image

點選 子目錄 XW10125,按滑鼠右鍵 選 Refresh

image

新引入的文件夾 ch15 內,有8個檔案:ex15-1.php ~ ex15-8.php

開啟 ex15-1.php 檔案,執行:

Run >> Run as >> PHP Web Page

image

(** 若是 上圖中的內容不對,可以直接修改它,再執行。或是對 Run Configuration 做修正。)

MySQL Command Line 中文資料呈現出亂碼的問題?

安裝好 AppServ 套件後,電腦中就會設置有 MySQL 做為 PHP 程式使用的資料庫,並且有 MySQL Command Line Client (DOS 命令行) 環境,可以用來存取 MySQL 中的資料。

image

在使用
show databases;
use DB_name;

show tables;
select * from Table_name;

image

輸入指令:set names big5; (繁體中文)、set names gbk; (簡體中文)

image

MySQL 命令行參數 (v6.0.4)

C:\Documents and Settings\perton>mysql -hlocalhost -uroot -p****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 6.0.4-alpha-community-log MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> \h

For information about MySQL products and services, visit:http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:http://dev.mysql.com/
To buy MySQL Network Support, training, or other products, visit:https://shop.mysql.com/

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'

? (\?) Synonym for `help'.
clear (\c) Clear command.
connect (\r) Reconnect to the server.
Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
NOTE: Takes the rest of the line as new delimiter.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
notee (\t) Don't write into outfile.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset.
Might be needed for processing binlog with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.

For server side help, type 'help contents'

mysql>

在 Eclipse 中,安裝 Python 插件功能

首先,啟動 Eclipse 程式,從功能表
Help > Install New Software

image

選定 Word with: 右方的按鍵 Add,在新視窗中,補上下列訊息:
Name : PyDev
Location : http://pydev.org/updates
image

按下 OK 鍵後,原本的 Install 視窗會有 Pending 字樣產生,等待一段時間後,視窗中央部份會展開如下圖所示,
請勾選 PyDev for Eclipes 項目

image

按下 Next ,

image 

image

接受程式使用條款

image

系統做安裝的動作

image

image

重新啟動 Eclipse

哈哈,完成安裝作業了 !!

開發 PHP 的好用工具:Eclipse

Eclipse 是著名跨平台的自由集成開發環境(IDE)。最初主要用來Java語言開發;目前亦有人通過外掛程式使其作為C++PythonPHP等其他語言的開發工具。

Eclipse最初是由IBM公司開發,2001年11月貢獻給開源社區,現在它由非營利軟體供應商聯盟Eclipse基金會(Eclipse Foundation)管理。

Eclipse有專門用來開發PHP程式的工具:PHP Development Tools
可由 http://www.eclipse.org/pdt/ 下載。

若要使用 Eclipse 建置程式檔案,希望以 utf-8 格式存檔時,需做下列環境的調整:(默認是 ANSI 格式, encoding MS950)

  1. Windows > Preferences > General > Content Types,
    set UTF-8 as the default encoding for all content types.
  2. Windows > Preferences > General > Workspaces,
    set "Text file encoding" to "Other : UTF-8".
  3. Windows > Preferences > Web > CSS Files > Encoding = UTF-8
  4. Windows > Preferences > Web > HTML Files > Encoding = UTF-8

統一編號演算示例

image

文字說明:
(一) 長度:共八位數,全部為數字。
(二) 計算公式
1、各數字分別乘以 1, 2, 1, 2, 1, 2, 4, 1
2、公式如下:
D1 D2 D3 D4 D5 D6 D7 D8
* 1    2    1    2    1    2    4    1 (第一列 * 第二列)

A1 B1 A2 B2 A3 B3 B4 A4  (Bx:相乘後的十位數)
+    C1       C2       C3 C4        (Cx:相乘後的個位數)

X1 X2 X3 X4 X5 X6 X7 X8 (Xx:相加後的十位數)
                                    Y7       (Yx:相加後的個位數)
Z1= X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8  或
Z1= X1 + X2 + X3 + X4 + X5 + X6 + Y7 + X8

3、當第 7 位數為 7 者,可取相加之倒數第二位取 0 及 1 來計算如 Z1 及 Z2 計算其和。
4、假如 Z1 或 Z2 能被 10 整除,則表示營利事業統一編號正確。

(三) 範例 ( 以 0 0 2 3 8 7 7 8 為例 )
0 0 2 3 8 7 7 8
*
1 2 1 2 1 2 4 1 (第一列 * 第二列)

0 0 2 6 8 1 2 8 (Bx:相乘後的十位數)
+             4 8   (Cx:相乘後的個位數)

0 0 2 6 8 5 1 8 (Xx:相加後的十位數)
                  0    (Yx:相加後的個位數)
Z1= 0+ 0+ 2+ 6+ 8+ 5+ 1+ 8 = 30 或
Z2= 0+ 0+ 2+ 6+ 8+ 5+ 0+ 8 = 29
因 30 能被 10 整除,故營利事利統一編號正確。

OpenDataSource 使用技巧及延伸

之前,曾經寫下 OpenDataSource 的用法;這方法一般來說,是夠使用了。
http://pertonchang.blogspot.com/search?q=OpenDataSource+

不過,當你使用的特殊字元來當密碼的一部份內容時,可能就會有問題。
==> 會抓不到資料.

再看下 OpenDataSource 的語法
SELECT   *
FROM OPENDATASOURCE(
     'SQLOLEDB',
     'Data Source=ServerName;User ID=MyUID;Password=MyPass'
          ).Northwind.dbo.Categories

記得用雙引號(")將特殊字元括住
SELECT   *
FROM OPENDATASOURCE(
     'SQLOLEDB',
     'Data Source=ServerName;User ID=MyUID;Password= "MyPass"'
          ).Northwind.dbo.Categories

另外,再介紹一個 Linked Server 的用法
如果你的環境有在 SQL Server ,Security / Linked Servers 中設定,例如:LOCAL
image
image
image

跨資料庫抓資料的語法,就變成了

SELECT   *
FROM LOCAL
.Northwind.dbo.Categories