新建置的ERP AP 設備,即然發現到列印出來的報表,中文字全部變成?
(由資料庫中抓取到的資料,只要是含有中文字的,就會呈現?,而原本報表中表現資料的抬頭說明文字,即便是中文字也是可以正常顯示。)
這問題造成的主因是:設備使用語法的環境設定不正確 !!
(調整如下即可排除)
以前這名的主人,會說 Perton 是 普通(台語)。 信主後,Perton 是主の殿與教會,他已不再和以前一樣,舊事已過,今日已成新造之人。 定睛在主的榮面上,遠重於人話語上的小信及自我抵毁。
新建置的ERP AP 設備,即然發現到列印出來的報表,中文字全部變成?
(由資料庫中抓取到的資料,只要是含有中文字的,就會呈現?,而原本報表中表現資料的抬頭說明文字,即便是中文字也是可以正常顯示。)
這問題造成的主因是:設備使用語法的環境設定不正確 !!
(調整如下即可排除)
一、物件導向的原則
所有的變數和方法,包括 Main 方法,也就是應用程式的進入點 (Entry Point),都封裝在類別定義之內。
類別可能直接從一個父類別繼承,不過可以實作任何數目的介面。覆寫父類別中之虛擬方法的方法,都需要用 override 關鍵字做為避免意外重新定義的方式。
在 C# 中,結構 (Struct) 就像輕量的類別;是一種能夠實作介面,卻不支援繼承的堆疊配置型別。
二、C# 如何運行?
圖片來源:http://msdn.microsoft.com/zh-tw/library/z1zx9t92(v=vs.80).aspx
日常生活中,常常聽到卡債的新聞,更嚴重的,則是輪為卡奴的命運。
因為時有所聞,而且不發生在個人的周遭朋友之間,就自然而然的,不以為意。(自掃門前雪 !!)
但命運不可能是永遠位在高峰,總有低落的時期。事情總是有可能被你自己遇見,還是了解一下吧。
話說,陳先生在銀行的信用卡分期利率是千分之5,他想著千分之5,一萬元利息才50元,不算貴;是可以考慮辦分期買些3C產品來玩玩。
於是,他就購置一萬元的物品,並分12期攤還。結果,他卻支付 300多元的利息,相當於 300/10000 = 3%。
怎麼會由 千分之5 (0.5%) 變成 3% ??
請注意:你是辦分期,不是一次付清,所以每次到期時,就要再以該期未支付清的本金數據,來計算該次的利息。
所以,利息的支付總共有 12次,只不過是每期的剩餘本金越來越少,相對的利息是少了些!!
若是,以概算的方式計算:分 12期,每期 50元利息,12 * 50 = 600元,約 6%。
6% 你還可以接受,也有能力輕鬆支付,那你才去考慮辦分期付款;
否則,就聰明點,再找找那裏有 分期0利率 的好康,才下手。
千萬不要成為卡債一族 !!
你知道將下面的命令放在瀏覽器的網址中,會有什麼效果?
http://chart.apis.google.com/chart?cht=gv&chl=graph{a--b--c--g;b--Perton;b--d--g;a--g}
** 中文字,目前無法使用
參考資料:
原本已在工作環境中,運行多年的一個 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秒的按鈕作業,很高興能看到這樣的結果。
就如 教學相長 般,具有的相同意義:施比受更有福。
寫這程式的過程,個人也學到一些新的技巧,摘要如下:
學習 XML 與 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"?> |
XSL | <xsl:stylesheet version="2.0" |
XSL V2.0 XML (自訂 Namespace) | <?xml-stylesheet type="text/xsl" href="配搭的XSL檔案.xsl"?> |
XSL (自訂 Namespace) | <xsl:stylesheet version="2.0" |
My-Company.com 依實務需要加以變更。
個人使用 Altova XMLSpy 2012 版本,配合 XSL 在體現 XML 文件時,發現中文字有部份亂碼,
不知該如何排解?
** 使用 該軟體的 XSL Transfermation (F10) 的功能。
呈現出不正常的結果
其運作的過程中,出現的下列幾個錯誤訊息:
為了解問題所在;改在 IIS 下,重新瀏覽該檔案,則發現到一點問題也沒有。
(密訣:直接在 IIS 中,設定一個可瀏覽的虛擬目錄,再去瀏覽該目錄下的檔案,即可。)
要得知資料表的結構訊息,可以用 sp_columns 'Table_Name' 這是在 Query Analyzer 中運行。
若是要在 程式中 來取得相關表結構訊息,則要配合 syscolumns 、sysobjects 或是 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 欄位中。但該欄位是以數字值來表示。
該如何得知該數字的含義?
事實上,相關資料是存放在 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 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
'------------------------------------------------
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: ?>
看下程式碼,就會明白
<!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 領域後,就知道可以應用 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 瀏覽器觀看,則正常。(** 有 提醒 訊息)
難道,產生的文件檔案一定要由程式中,自動加入"內縮"的空白字元?
針對這疑惑,終於找到好的解決方法。
只要在 存檔 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 文件 publisher.xml
$dom->save('publisher.xml');
?>
日前,在整理 PHP Plug-ins 資料,再次遇到"一堆"超連結的資料清單。
才讓我想到,在 Excel 環境中,要如何去 快速 處理超連結的問題;另外未防日後健忘,就順手做下此一筆記。
Excel 環境中,要 快速 處理超連結的問題,有二:
步驟:
問題二:為一批清單資料,設定相對於每一項目的超連結
(希望為顯示文字 Col A 的每一項目,設定其各別的超連結 Col B)
C1 = HYPERLINK(B1, A1)
在學習 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, ' ');
// 設定 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);
卻產生下面的中文亂碼情形 !!
心中真是 ⅩⅩ○○…
明明同樣的程式,之前是可以正常運作了,怎會今天就停擺?
心有不干,不把問題找出來,那會心安?
於是,重新再從資料庫、字碼的設定及抓資料的程式碼存檔等方面找起,一切多符合先前所列的規則。
最後,只能比較不可正常運行及可正常運行程式檔案的大小及內容了
結果發現到 不可正常運行 與 可正常運行 的檔案,有差異。
不可正常運行的檔案會比可正常運行的檔案多出 3 Bytes
有的這樣的發現,就好辦了;接下來就是 Hex 的比對。
不可正常運作:
哦,這下明白了。
EF BB BF 這三碼不就是 Unicode 的 BOM 嗎?(可參考文章)
補充說明:
要去除多餘的 3 Bytes 資料,可以使用 PSPad 工具程式開啟該檔案,重新設定檔案的格式並存檔,即可解決問題。
至于,為什麼會產生 3個多餘的字元,就只能等以後有空再查證了。
願這篇文章能對你有所助益 !! ( 神:願你平安 )
很高興,在 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 該指令無效 !!)
此時,心想這樣應該一切順利了。不料,程式可以運行,但果結並確不符理想。
怎會這樣 ?? 後來想到,MSSQL Server 當時建置的時候,是選定 Chinese_Taiwan_Stroke & Binary,會不會和內碼有關?
所以,就修正的 HTML 的字碼值
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
想要將每天必做的工作,加以排程化處理,是一個突然間的念頭。
可能是每天的常態性工作吧,所以才不以為意。
說到這兒,回憶起偶而會對 隔壁單位 的同事說:常態性的工作若是可以調整成電腦處理,而不去做,那麼作死自己也沒有人會可憐你 !!
沒想到,這事也落在自個的身上,真該自省了。
事情是這樣了,
每天一定要做 前天 資料庫的備份工作。而這備份工作也早已經寫成批次檔案,只要每天一上工,去點擊它 運行之。
說到這,大伙一定想即然是電腦做,點擊後不就沒事了 ??
事實上,每次的備份工作約要從 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
原本有此相關文件,
但發覺有欠缺,再增補之。
要修改 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"
在解析這一問題前,先來看下列兩圖示,注意紅線框中的內容格式。
一個是 相對似 路徑表示,一個是實體路徑的表示方式。
若是,對 實體路徑的檔案(ex5-11.php) 來運行,
** 此時,系統沒有任何反應或是提示 !!
要解決這一問題,首先要對 專案 PHP 或是 專案下的子目錄,做 Refresh
再來,關閉已開啟的檔案 ex5-11.php,再重新開啟一次。
注意:抬頭文字已經和先前的內容不同。
這時,再運行該檔案,就會正常了。
需做下列步驟:
點選 子目錄 XW10125,按滑鼠右鍵 選 Refresh
新引入的文件夾 ch15 內,有8個檔案:ex15-1.php ~ ex15-8.php
開啟 ex15-1.php 檔案,執行:
Run >> Run as >> PHP Web Page
(** 若是 上圖中的內容不對,可以直接修改它,再執行。或是對 Run Configuration 做修正。)
安裝好 AppServ 套件後,電腦中就會設置有 MySQL 做為 PHP 程式使用的資料庫,並且有 MySQL Command Line Client (DOS 命令行) 環境,可以用來存取 MySQL 中的資料。
在使用
show databases;
use DB_name;
show tables;
select * from Table_name;
輸入指令:set names big5; (繁體中文)、set names gbk; (簡體中文)
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. |
(\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 程式,從功能表
Help > Install New Software
選定 Word with: 右方的按鍵 Add,在新視窗中,補上下列訊息:
Name : PyDev
Location : http://pydev.org/updates
按下 OK 鍵後,原本的 Install 視窗會有 Pending 字樣產生,等待一段時間後,視窗中央部份會展開如下圖所示,
請勾選 PyDev for Eclipes 項目
按下 Next ,
接受程式使用條款
系統做安裝的動作
重新啟動 Eclipse
哈哈,完成安裝作業了 !!
Eclipse 是著名跨平台的自由集成開發環境(IDE)。最初主要用來Java語言開發;目前亦有人通過外掛程式使其作為C++、Python、PHP等其他語言的開發工具。
Eclipse最初是由IBM公司開發,2001年11月貢獻給開源社區,現在它由非營利軟體供應商聯盟Eclipse基金會(Eclipse Foundation)管理。
Eclipse有專門用來開發PHP程式的工具:PHP Development Tools
可由 http://www.eclipse.org/pdt/ 下載。
若要使用 Eclipse 建置程式檔案,希望以 utf-8 格式存檔時,需做下列環境的調整:(默認是 ANSI 格式, encoding MS950)
之前,曾經寫下 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
跨資料庫抓資料的語法,就變成了
SELECT *
FROM LOCAL.Northwind.dbo.Categories