2011/09/01

SQL Pretty Printer:好用的 SQL Formatter 工具

目前使用 SSMS,不論是2005還是2008,都沒有SQL Formatter功能,往往看到長得天荒地老的一行SQL,總是要費盡心力地來無盡的ENTER ENTER ENTER ENTER......

在網路上找了找,有個方便的工具:Instant SQL Formatter
線上格式化SQL工具,還蠻方便的,但並不支援UNICODE,所以出現非英文語時就會出現「???」,還真的是麻煩...
中文亂碼的畫面
後來才發現,它有單機版本,名稱叫:SQL Pretty Printer
有提供 Desktop version, Add-In for SSMS, Add-In for VS or API
API就是利用網路連結到Instant SQL Formatter來處理。所以重點還是在前三項

因為我不只是用MS SQL,所以下載了Desktop Version來測試,以下就是展示畫面:
未格式化時的SQL
格式化後的SQL

更棒的是,這個版本就支援UNICODE了!

工作上經常會先將 T-SQL 測到沒有問題後,再謄到 Delphi 中,此時會進行字串相加的串連工作,然而這工作如果文字少還算簡單,如果量大時,難免會出現漏打的情形,這時 SQL Pretty Printer 也支援 SQL 指令碼轉成其它如 C#、Pascal 相容的字串相加程式碼:

SQL Pretty Printer 有將 SQL 組成其它語言字串相加的功能

價格

SQL Pretty Printer 是付費軟體,一個LICENSE $50,但為你省下的時間絕對超過 $50 的價值!

向你推薦!


General SQL Parser for VCL 簡介

最近這一陣子大量在Delphi存取MS SQL,對於SQL指令的解析及輸入的繁瑣實在是頭痛。

比方說:
SELECT a.name,
       b.id,
       c.class
FROM   a
       JOIN b
         ON a.name = b.name
            AND a.money > 100
       JOIN c
         ON c.x > a.y
WHERE  a.address NOT IN (SELECT *
                         FROM   xtable
                                JOIN ytable
                                  ON xtable.id <> ytable.id



這樣的語法,如果要輸入到Delphi裡,對coding人員來說,一定是場惡夢,更不要說那些複雜到見鬼的SQL指令了,所以我們常會這樣打:

str := 'SELECT A.NAME, B.ID, C.CLASS FROM A JOIN B ON A.NAME = B.NAME AND A.MONEY > 100 JOIN C ON C.X > A.Y WHERE A.ADDRESS NOT IN (SELECT * FROM XTABLE JOIN YTABLE ON XTABLE.ID <> YTABLE.ID'

中間完全不間斷………

要不就是認命地自己斷行,結果中間多打或少打一個字,也得等到執行時期才抓得到錯誤…

這時候就會覺得JQuery或LINQ真是好物啊!

在這邊介紹一個好物:General SQL Parser VCL Version

它算是一個外掛的CLASS,利用USES的方式引入到專案中即可使用
目前還在深入摸索中,所以我們先借用它內附的DEMO吧!
咦!出錯了!
上面的畫面可以看到我們KEY入的SQL有錯誤,也很明白的指出是缺少了「)」

這時我們再補上後執行,就會出現正確的結果了
正解!
當然,不會只是滿足於現有的Check syntax,所以我們還可以使用pretty print!
不只是單純的Memo,還可以搭配Rich Text
另外,還可以編成各語言的傳入字串:
剛剛的一行SQL轉成Delphi String型態,超方便!

但是這套工具價值不斐

2011/08/26

[轉]flex4.5中布局元素与布局约束的用法

其實 Flex 4.0 也可以參考使用。
以下是轉載資料。

來源:flex4.5中布局元素与布局约束的用法

在对容器元素布局与容器布局约束时,经常会用到horizontalAlign、verticalAlign和horizontalCenter、verticalCenter这两组对象,尤其是在spark中如果遇到可以同时设置这两组对象的容器时(如HGroup,VGroup)会有种混乱的感觉。
因此我们最好弄清它们的作用和用法
1、horizontalAlign、verticalAlign:
这一组对象是容器的属性,用来设置容器内的元素在水平和垂直方向的对齐方式,所以操作的对象是容器内的元素。在HGroup,VGroup和中存在这两个属性,但Group、Panel 和Application中没有这两个属性。
2、horizontalCenter、verticalCenter:
这一组对象是容器的样式,用来设置约束容器本身在父级容器中的位置,从组件(容器本身)中心到锚点目标(父级容器)的内容区域中心的距离,所以操作的对象是容器本身。在HGroup,VGroup,Panel 和Application中都存在这组样式。
需要注意的是,这组样式仅在 Canvas 容器中的组件上,或在 Panel 或 Application 容器(layout 属性设置为 absolute)中的组件上使用时才发挥作用。也就是说如果在spark中还必须保证Application的layout属性设置为absolute,即在spark中保留Application的layout属性为默认或设置为




<s:layout>
    <s:BasicLayout/>
</s:layout>



否则horizontalCenter、verticalCenter的样式设置将无效。
下面为一个测试例子:




<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="600" minHeight="400">
    <s:layout>
        <s:BasicLayout/>
    </s:layout>
    <s:VGroup width="50%" height="50%" horizontalAlign="center" verticalAlign="middle" horizontalCenter="0" verticalCenter="0">
        <s:Label text="label"/>
        <s:Button label="button"/>
    </s:VGroup>
    <s:Group width="20%" height="20%" horizontalCenter="0" verticalCenter="100">
        <s:Button label="g button"/>
    </s:Group>
</s:Application>

2011/08/16

Owner vs. Parent in Delphi Applications

Owner vs. Parent in Delphi Applications

很有意思的一段,在搜尋Panel裡所有的元件時,很有幫助:
for ii := 0 to Panel1.ControlCount - 1 do

   Panel1.Controls[ii].Visible := false;

2011/08/15

Tony's Blog: 寫程式的好習慣

Tony's Blog: 寫程式的好習慣: "photo by Graeme's Pix 每個程式設計師都有一些寫程式的習慣,有好的也有不好的,多看看一些別人的習慣,好的可以學習,不好的可以改進。以下我只有擷取原文部份的內容做翻譯,方便日後再次閱讀。星號表示我自己的一些想法。 5個寫程式的好習慣 (5 Good Pr..."

2011/08/13

[轉] Code Formatting in Flash Builder

資料來源:Code Formatting in Flash Builder


Follow these steps to set up automatic code formatting within flash builder.
Note that this is specific to your workspace so you should store the file somewhere on
your system and become familiar with the steps to initialize these tools.
The install process is the same as anyone installing plugins on Flash Builder.
If you are familiar with this process feel free to just utilize the links to the
software below.
Install Flex Formatter:

2011/08/11

你應該立即停止使用Delphi的十大趣味理由


1. Delphi makes it too easy to write good programs which leads to a decline in programmer billable hours.
使用Delphi寫程式真是太容易了,讓寫程式的工時減少了
Delphi讓寫出優質程式這回事變得太容易了,以至於讓程式設計師平白喪失了許多可資計費的時數