2009-07-28

合併表格欄位抓取技巧

在SQL時常會用到table join,
例如table A與table B join,
我們要table A全部的欄位和table B部分的欄位,
可以在select後面接上 A.*
這樣即可抓到全部table A的欄位,
不需要在一個一個打出 table A 的FieldName。
select A.*,B.field1,B.field2
from TABLEA A,TABLEB B
where A.Key=B.Key

2009-07-18

清除 MS SQL 2008 交易記錄

之前的清除方式已無法使用,
BACKUP 這個指令在2008已被停用,
目前找的到解決方法如下
DBCC SHRINKFILE (log_filename,size)
注意:需先將資料庫的模式改為-簡單

DBCC SHRINKFILE (ERP_log,2)
將交易記錄檔的大小壓縮到指定的大小

MircosoftTechNet-DBCC SHRINKFILE

2009-06-22

使用 sp_help 查詢資料表相關資訊

在Microsoft SQL Server Management Studio嫌一個一個去點設計
來看table的schema的話,可以藉由sp_help的語法直接查詢
sp_help TabeName
sp_help Prod

2009-04-10

取消 Windows 檔案總管的影片預覽功能

當硬碟中存在許說影片時,開啟檔案總管會自動顯示預覽畫面,
造成電腦loading大增,造成反應過慢,用下列指令可將此功能關閉!

關閉XP預覽功能:於執行輸入 regsvr32 /u shmedia.dll
開啟XP預覽功能:於執行輸入 regsvr32 shmedia.dll

2009-02-05

去除MS SQL欄位中空白

在擷取資料的時候,有時因為使用者輸入錯誤,
可能造成資料欄位中有空白的資料,造成程式比對錯誤,
MS SQL只提供LTrim(去除左邊空白)、RTrim(去除左邊空白),
若要同時去除左右兩邊的空白話可使用REPLACE(欄位,' ',''),
將欄位中的空白部分全部取代成空值。
select REPLACE(PnameD,' ','')
from Prod

2008-12-31

QRReport 列印連續報表

因為許多的單據都是用點陣式印表機(Ex EPSON 2080C..),
且紙張都是用連續報表紙中一刀
但因為QRReport對NT的作業系統支援有點問題,無法預設Report的size,
所以既使原先的設定都正常,但列印出來仍會用格式跑掉的情況,

下面列出解決辦法:
1.於OS中的印表機和傳真畫面中點選右鍵
2.點選伺服器內容
3.建立新格式
4.根據報表紙的長寬輸入(一般為24.40cm*27.94cm)
5.格式名稱"連續報表紙"-存檔
6.將點陣式印表機設為預設
7.將印表機內的列印喜好設定裝置設定值紙張格式都設為"連續報表紙"
8.QRReport中的Page Size設定為Default,不可為Custom

2008-12-25

DBGrid中顯示Memo屬性欄位

若資料庫中欄位的資料型態設為Memo、NVarChar(MAX)....類似欄位
當欲撈取資料顯示於DBGrid中時,則該欄位皆顯示為(MEMO)

解決方法:
一、可以藉由SQL的資料型態型態轉換改變該欄位資料型態-cast
cast(column as NVarChar)

二、於Delphi中QueryField的事件作轉換-GetText
procedure TFSTK205.Query_SearchMemoGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  inherited;
 Text := Sender.AsString;
end;

2008-12-24

查詢MS SQL Server中表格已使用空間

若要查詢Server中表格已使用空間可用下列語法
sp_spaceused TableName
若無輸入 TableName 的話,則會傳回整個資料庫的空間使用狀況

sp_spaceused Prod

2008-12-15

當Lookup Field遇上NULL

當Query 中建立Lookup的欄位,欲參照的欄位為NULL時,
則會跳出 "無法識別的錯誤" 的錯誤訊息,
此時將Query中該Lookup的欄位lookupcache屬性設為True,即可解決!

利用 SQL Convert轉換日期格式

Select CONVERT(varchar(100), GETDATE(), 0)-->05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1)-->05/16/06
Select CONVERT(varchar(100), GETDATE(), 2)-->06.05.16
Select CONVERT(varchar(100), GETDATE(), 3)-->16/05/06
Select CONVERT(varchar(100), GETDATE(), 4)-->16.05.06
Select CONVERT(varchar(100), GETDATE(), 5)-->16-05-06
Select CONVERT(varchar(100), GETDATE(), 6)-->16 05 06
Select CONVERT(varchar(100), GETDATE(), 7)-->05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8)-->10:57:46
Select CONVERT(varchar(100), GETDATE(), 9)-->05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10)-->05-16-06
Select CONVERT(varchar(100), GETDATE(), 11)-->06/05/16
Select CONVERT(varchar(100), GETDATE(), 12)-->060516
Select CONVERT(varchar(100), GETDATE(), 13)-->16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14)-->10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20)-->2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21)-->2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22)-->05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23)-->2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24)-->10:57:47
Select CONVERT(varchar(100), GETDATE(), 25)-->2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100)-->05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101)-->05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102)-->2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103)-->16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104)-->16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105)-->16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106)-->16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107)-->05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108)-->10:57:49
Select CONVERT(varchar(100), GETDATE(), 109)-->05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110)-->05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111)-->2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112)-->20060516
Select CONVERT(varchar(100), GETDATE(), 113)-->16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114)-->10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120)-->2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121)-->2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126)-->2006-05-16T10:57:49.827