[SQL]檢查資料是否只有英數字

 SELECT  COUNT( [shipno] )

  FROM [DKSS].[dbo].[fixcardshipno] where shipno like 'DB%' ----290524

  and shipno  like  '%[^A-z0-9]%'

[PB6.5]當window重複(相同名稱)又找不到在哪一個pbl時,查找方式

 1. 開啟brower




2. 找到要找的window按edit 開啟

3.點選save as 即可知道現在是哪一個pbl

4. 遇到重複的,因為只會顯示先被找到的這個,所以將已經找到的window搬到(save as)備份的pbl,例如:Zbak  (Z開頭基本會是最後面了)

5. 將原本想查找的,從原始的pbl刪除,在重複執行1-3步驟,即可知道相同名稱的pbl在哪裏


[PowerBuilder 6.5+SQL Adantage]PowerBuilder程式碼+SQL Adantage改變字體和大小

 

PowerBuilder程式碼改變字體和大小如下圖

 

本人是用微軟正黑+14號字,供大家參考,眼睛會舒服很多

 

一定要先打開一段code,按鈕才會出現!!!







[window]鍵盤快捷鍵

 紅色是個人常用的,供參考

[動作]

相容的裝置

F1

顯示說明

全部

F2

重新命名選取的項目

全部

F3

搜尋檔案或資料夾

全部

F10

啟動使用中之程式的功能表列

全部

Ctrl + A

選取文件或視窗中所有的項目

全部

Ctrl + C

複製選取的項目

全部

Ctrl + D

新增網頁至到您的最愛

全部

Ctrl + J

開啟下載管理員

全部

Ctrl + L

醒目提示網址列上的文字

全部

Ctrl + V

貼上選取的項目

全部

Ctrl + X

剪下選取的項目

全部

Ctrl + Z

復原動作

全部

Ctrl + Y

重做動作

全部

Ctrl + P

列印

全部

Ctrl + Esc

開啟 [開始] 選單

全部

Ctrl + 向右鍵

將游標移到下一個字的開頭

全部

Ctrl + 向左鍵

將游標移到上一個字的開頭

全部

Ctrl + 向下鍵

將游標移到下一個段落的開頭

全部

Ctrl + 向上鍵

將游標移到上一個段落的開頭

全部

Ctrl + Shift + 任一方向鍵

選取文字區塊

全部

Ctrl + 任一方向鍵 + 空白鍵

選取視窗中或桌面上的多個個別項目

全部

Ctrl + 滑鼠滾輪

變更桌面圖示的大小

全部

Ctrl + Alt + Tab

使用方向鍵在開啟的項目之間切換

全部

Ctrl + Shift + Esc

開啟工作管理員

全部

Alt

顯示選單列。 做好選擇後,選單列便會消失。

全部

Alt + Home

移至您的首頁

全部

Alt + C

檢視您的最愛、摘要和瀏覽歷程記錄

全部

Alt + F4

關閉使用中的項目,或結束使用中的程式

全部

Alt + 空白鍵

開啟使用中視窗的快速鍵功能表

全部

Alt + Tab

在開啟的程式之間切換

全部

Shift + Delete

刪除選取的項目,不先移至資源回收筒/永久刪除

全部

Shift + 任一方向鍵

選取視窗中或桌面上的多個項目,或選取文件內的文字

全部

Shift + F10

開啟選取的項目 (就像滑鼠右鍵) 的快速鍵選單

全部

Windows 標誌鍵

開啟 [開始] 功能表

全部

Windows 標誌鍵 + D

清除所有項目,並顯示桌面

全部

Windows 標誌鍵 + E

開啟 Windows 檔案總管

全部

Windows 標誌鍵 + F

尋找檔案或資料夾

全部

Windows 標誌鍵 + M

將所有視窗最小化

全部

Windows 標誌鍵 + 向下鍵

將視窗最小化

全部

Windows 標誌鍵 + 向上鍵

將視窗最大化

全部

Windows 標誌鍵 + L

鎖定電腦 (不使用 ctrl + alt + delete)

全部

Shift + Windows 標誌鍵 + M

復原全部最小化

全部

Windows 標誌鍵 + Tab

循環選取工作列按鈕

全部

Windows 標誌鍵 + F1

開啟說明

全部

[SSIS][Sybase]use ssis copy data from sybase db to other sybase db 中文轉碼問題[ODBC 目的地 [64]] 錯誤: 發生開放式資料庫連接 (ODBC) 錯誤。 state: 'ZZZZZ'. Native Error Code: 2402. [Sybase][ODBC Driver][Adaptive Server Enterprise]Error converting characters into server's character set. Some character(s) could not be converted.

當無法選1的setting請使用舊版2012 SSIS tool
1. 來源和目的請選擇ODBC連線(即使是SQLserver也是)
2. 注意:sybase中文為big5  950字碼頁,超過的字依然會轉換失敗
3. 請把"ODBC目的地"  換成 "ODBC Destination"(屬性中的元件描述和NAME)(中文換成英文)
4. ODBC Destination請用逐筆轉換







[sybase] tmp table範例

 SELECT 

row  = IDENTITY(8),   

vrv_yn   = CASE WHEN (SubString(prod_no, 1, 3) >= '251' AND SubString(prod_no, 1, 3) <= '254')          OR (SubString(prod_no, 1, 3) = '258') THEN 'y' ELSE 'n' END,   

seq_no   = '',   

apply_qty  = 0,   

order_qty  = 0,   

collect_amt  = 0,   

collect_amt1 = 0,   

apply_price  = 0,   *   

INTO #TB_TMP_WAY_E_PART  

FROM

(

SELECT 

part_no    = a.part_no,     

part_cname   = a.part_cname,     

prod_name   = f.prod_name,    

part_sno   = IsNull(c.part_sno, ''),     

useable_qty   = CAST((c.assign_qty - c.use_qty) AS int),     

deposit_real_qty = CAST(Sum(deposit_qty - sit_qty - snap_qty) AS int),    

step_yn    = a.step_yn,     

award_yn   = a.award_yn,     

prod_no    = a.prod_no     

FROM baf006  AS a     JOIN baf006b  AS b    ON a.part_no = b.part_no     AND b.way_yy = '2022'     

JOIN saf090s  AS c    ON b.part_sno = c.part_sno    

LEFT JOIN saf280 AS d    ON d.part_no = a.part_no     AND d.cust_no = '26019'     AND IsNull(d.cancel_date, '') = ''     AND d.store_comp = '2'     AND d.store_house = '12'     

LEFT JOIN baf005 AS f    ON f.prod_no = a.prod_no   

WHERE ('' = 'RHF40VVLT' OR a.part_no LIKE 'RHF40VVLT%')     

AND c.cust_no='26019' AND c.way_no='DA1021090001'     

AND a.part_no NOT IN ('')     

AND a.common_use_yn = 'Y'     

AND (SubString(a.prod_no, 1, 3) < '251' OR SubString(a.prod_no, 1, 3) > '254')     AND SubString(a.prod_no, 1, 3) != '258'    

AND SubString(a.prod_no, 1, 3) != '116'   

GROUP BY a.part_no, a.part_cname, a.prod_no, a.step_yn, a.award_yn, c.part_sno, c.assign_qty, c.use_qty, f.prod_name)

t1  

WHERE (SubString(prod_no, 1, 3) < '251' OR SubString(prod_no, 1, 3) > '254')   OR deposit_real_qty > 0 ORDER BY part_no     


SELECT * FROM #TB_TMP_WAY_E_PART  WHERE row > 0 * 100 AND row <= 0 * 100 + 100

[PB6.5] cursor範例

 declare curd_temp cursor for 

  select a.out_no, b.part_no, isnull(b.out_qty,0), isnull(b.out_qty,0) - isnull(b.turn_qty,0), b.seq_no

from lsf130 a, lsf130s b 

where 1 = 1

  and a.proj_no = :fs_proj

  and a.cust_no = :fs_cust

//   and a.out_date <= :fs_date

  and a.out_no  = b.out_no

  and isnull(rev_qty,0)   > 0

  and isnull(confirm_emp,'') <> ''

  and isnull(cancel_date,'') = ''

order by b.part_no, a.out_no;


open  curd_temp;

fetch curd_temp into :ls_out, :ls_part, :ld_out, :ld_turn, :ls_seq_old ;

do while sqlca.sqlcode = 0

ll_count = ll_count + 1

ls_seq_no  = string( long(ls_seq_no) + 1 ,'000')

tab_1.tabpage_1.dw_3.insertrow(0)

//   wf_get_seq_2()//   tab_1.tabpage_1.tab_2.tabpage_d2.dw_d2.setitem(ll_count, "auto_no", ls_auto_no)

   tab_1.tabpage_1.dw_3.setitem(ll_count, "seq_no", ls_seq_no)

   tab_1.tabpage_1.dw_3.setitem(ll_count, "turn_qty", ld_turn)

   tab_1.tabpage_1.dw_3.setitem(ll_count, "out_no", ls_out)

   tab_1.tabpage_1.dw_3.setitem(ll_count, "part_no", ls_part)

   tab_1.tabpage_1.dw_3.setitem(ll_count, "raw_qty", ld_out )

   tab_1.tabpage_1.dw_3.setitem(ll_count, "ls_pick", 'Y')

   tab_1.tabpage_1.dw_3.setitem(ll_count, "seq_old", ls_seq_old)

fetch curd_temp into :ls_out, :ls_part, :ld_out, :ld_turn, :ls_seq_old ;

loop 

close curd_temp;


[PB6.5]時間字串+亂數


int i 

i = rand(1000) //產生亂數

string ls_What_Time , i2

ls_What_Time = String(now(), "hhmmss") //產生時間的字串

i2=ls_What_Time+string(i)

[PB]暫存 Code 參考

window_function 取得row資訊後做迴圈運算

long   ll_count

string  ls_seq_no, ls_out, ls_part, ls_partnum, ls_card, ls_postal, ls_addr1, ls_addr2, ls_addr3

decimal ld_out, ld_turn


tab_1.tabpage_1.dw_4.Reset()//重新產生dw4之前先清除


long ll_dw3_count,ll_dw3_rowcount,ll_dw3_row

string ls_dw3_out,ls_dw3_part,ls_dw3_pick

ll_dw3_rowcount  = tab_1.tabpage_1.dw_3.rowcount()


ls_seq_no = '000'

ll_count = 0


declare curd_lsf200 cursor for 

  select a.part_no, a.part_num, a.card_no, a.out_no, a.postal, a.addr1, a.addr2, a.addr3

from lsf200 a

where 1 = 1

  and a.proj_no = :fs_proj

  and isnull(a.lsp170_yn,'N') <> 'Y'

order by a.part_no, a.out_no, a.card_no;


open  curd_lsf200;

fetch curd_lsf200 into :ls_part, :ls_partnum, :ls_card, :ls_out, :ls_postal, :ls_addr1, :ls_addr2, :ls_addr3 ;

do while sqlca.sqlcode = 0

ll_dw3_count = 1

do while ll_dw3_count <= ll_dw3_rowcount

ll_dw3_row = tab_1.tabpage_1.dw_3.GetRowFromRowId(ll_dw3_count)

ls_dw3_out = tab_1.tabpage_1.dw_3.getitemstring(ll_dw3_row,"out_no")

ls_dw3_part = tab_1.tabpage_1.dw_3.getitemstring(ll_dw3_row,"part_no")

ls_dw3_pick = tab_1.tabpage_1.dw_3.getitemstring(ll_dw3_row,"ls_pick")

if ls_dw3_pick = 'Y' and ls_dw3_out = ls_out and  ls_dw3_part = ls_part then

ll_count = ll_count + 1

ls_seq_no  = string( long(ls_seq_no) + 1 ,'000')

tab_1.tabpage_1.dw_4.insertrow(0)

tab_1.tabpage_1.dw_4.setitem(ll_count, "seq_no", ls_seq_no)

tab_1.tabpage_1.dw_4.setitem(ll_count, "part_no", ls_part)

tab_1.tabpage_1.dw_4.setitem(ll_count, "part_num", ls_partnum)

tab_1.tabpage_1.dw_4.setitem(ll_count, "card_no", ls_card)

tab_1.tabpage_1.dw_4.setitem(ll_count, "out_no", ls_out)

tab_1.tabpage_1.dw_4.setitem(ll_count, "postal", ls_postal)

tab_1.tabpage_1.dw_4.setitem(ll_count, "addr1", ls_addr1)

tab_1.tabpage_1.dw_4.setitem(ll_count, "addr2", ls_addr2)

tab_1.tabpage_1.dw_4.setitem(ll_count, "addr3", ls_addr3)

tab_1.tabpage_1.dw_4.setitem(ll_count, "ls_pick", 'Y')

end if

ll_dw3_count = ll_dw3_count+1

loop

fetch curd_lsf200 into :ls_part, :ls_partnum, :ls_card, :ls_out, :ls_postal, :ls_addr1, :ls_addr2, :ls_addr3 ;

loop 

close curd_lsf200;


return


buttenchecked

//IFITB00F-HD000000000860 新增條件:分公司別和部門別//業務員

//分公司

if dwo.name = "pb_comp" then

lstr.pc_cnt = 2

openwithparm( w_pick_company, lstr, gw_win )

lstr = Message.PowerObjectParm

if lstr.pc_cnt > 0 then

ls_code1 = lstr.ps_code1[1] 

tab_1.tabpage_1.dw_1.setitem( row, "comp_no",  ls_code1)

tab_1.tabpage_1.dw_1.setitem( row, "comp_name_a",   lstr.ps_code2[1]  )

tab_1.tabpage_1.dw_1.setcolumn("comp_no")

   else

tab_1.tabpage_1.dw_1.setfocus()

tab_1.tabpage_1.dw_1.setcolumn("comp_no")

   end if

tab_1.tabpage_1.dw_1.setfocus()

tab_1.tabpage_1.dw_1.setcolumn("comp_no")

goto buttonclicked_exit

end if


//部門別

if dwo.name = "pb_dept" then

lstr.pc_cnt = 2

openwithparm( w_pick_dept, lstr, gw_win )

lstr = Message.PowerObjectParm

// 有挑選資料

if lstr.pc_cnt > 0 then

ls_code1 = lstr.ps_code1[1]

tab_1.tabpage_1.dw_1.setitem(row, "dept_no", ls_code1)

   tab_1.tabpage_1.dw_1.setitem(row, "dept_name", lstr.ps_code2[1])

tab_1.tabpage_1.dw_1.setcolumn("dept_no")

else

tab_1.tabpage_1.dw_1.setfocus()

tab_1.tabpage_1.dw_1.setcolumn("dept_no")

   end if

tab_1.tabpage_1.dw_1.setfocus()

tab_1.tabpage_1.dw_1.setcolumn("dept_no")

goto buttonclicked_exit

end if

//業務員

IF dwo.name = "pb_emp" THEN  

lstr.pc_cnt = 1

lstr.ps_where="isnull(baf004.emp_yn,'N') = 'Y' and isnull(baf004.leave_date,'') = ''"

openwithparm( w_pick_emp, lstr, gw_win )

lstr = Message.PowerObjectParm

     IF lstr.pc_cnt > 0 THEN 

is_change = "Y"

   tab_1.tabpage_1.dw_1.setitem( row, "emp_id"   ,   lstr.ps_code1[1])

      tab_1.tabpage_1.dw_1.setitem( row, "emp_cname"  , lstr.ps_code2[1])

//    tab_1.tabpage_1.dw_1.setitem( row, "comp_no"  ,   lstr.ps_code3[1])

// tab_1.tabpage_1.dw_1.setitem( row, "comp_name_a", lstr.ps_code4[1])

//

//      tab_1.tabpage_1.dw_1.setitem( row, "dept_no"  ,   lstr.ps_code5[1])  

// tab_1.tabpage_1.dw_1.setitem( row, "dept_name",   lstr.ps_code6[1]) 

//debug

//err_msg(63,2,'@1'+lstr.ps_code1[1]+'AAA'+lstr.ps_code2[1]+'AAA'+lstr.ps_code3[1]+'AAA'+lstr.ps_code4[1]+'AAA'+lstr.ps_code5[1]+'AAA'+lstr.ps_code6[1]+'AAA'+lstr.ps_code7[1]+'AAA'+'@')

//is_err = 'Y'

  ELSE 

tab_1.tabpage_1.dw_1.setfocus()

tab_1.tabpage_1.dw_1.setcolumn("emp_no")

goto buttonclicked_exit

   END if

//tab_1.tabpage_1.dw_1.setcolumn("eng_emp")

//tab_1.tabpage_1.dw_1.setfocus()

goto buttonclicked_exit

END if

itemchange

//IFITB00F-HD000000000860 新增條件:分公司別和部門別//業務員

//分公司

case "comp_no"

//ls_compno ,ls_compnm 

ls_compno = tab_1.tabpage_1.dw_1.getitemstring(row,"comp_no")

select comp_name_a into :ls_compnm from pu_company where comp_no = :ls_compno     

using sqlca;

if ls_compnm <> ''

tab_1.tabpage_1.dw_1.setitem( row, "comp_name_a", ls_compnm  )

tab_1.tabpage_1.dw_1.setcolumn("comp_no")

   else

err_msg(2,2,"@@1" + "此~公~司~代~號~不~存~在~﹐請~重~新~輸~入~﹗ " + "@")

tab_1.tabpage_1.dw_1.setitem( row, "comp_no", ""  )

goto itemchanged_exit

   end if



//部門別 ls_deptno, ls_deptnm

case "dept_no"

   ls_deptno = tab_1.tabpage_1.dw_1.getitemstring(row,"dept_no")

select dept_name into :ls_deptnm  from baf002 where dept_no = :ls_deptno  ;

//select comp_name_a into :ls_compnm from pu_company where comp_no = :ls_compno     

using sqlca;

if ls_compnm <> ''

tab_1.tabpage_1.dw_1.setitem( row, "dept_name", ls_deptnm  )

   else

err_msg(2,2,"@@1" + "此~部~門~代~號~不~存~在~﹐請~重~新~輸~入~﹗ " + "@")

tab_1.tabpage_1.dw_1.setitem( row, "dept_no", ""  )

goto itemchanged_exit

   end if


//業務員

// ls_empid, ls_empnm

case "emp_id"

ls_empid = tab_1.tabpage_1.dw_1.getitemstring(row,"emp_id")

select emp_cname into :ls_empnm from baf004 

where emp_id = :ls_empid 

and isnull(baf004.emp_yn,'N') = 'Y' 

and isnull(baf004.leave_date,'') ='';

using sqlca;

if ls_compnm <> ''

tab_1.tabpage_1.dw_1.setitem( row, "emp_cname", ls_empnm  )

   else

err_msg(2,2,"@@1" + "此~員~工~代~號~不~存~在~﹐請~重~新~輸~入~﹗ " + "@")

tab_1.tabpage_1.dw_1.setitem( row, "dept_no", ""  )

goto itemchanged_exit

   end if

[DataSet Bug]無法啟用條件約束。一或多個資料列的值違反非 Null、唯一或外部索引鍵條件約束

在使用TableAdapter作Query時發生 1. 原因為有些資料欄位Query出來後為null值 但是該欄位在dbDataSet的屬性AllowDBNull為False 因此把該欄位(或乾脆把全部欄位屬性AllowDBNull改為True 2. maxLength 檢...