2018年5月10日 星期四

[Javascript] Devexpress label SetText

看別人用得很順,


function saveComplete(s, e) {
            var r = e.result;
            var result = r.split(',');
            switch (result[0]) {
                        case "p1":
                        break;
                        case "p2":
                        break;
            }


我套用到自己的程式,


function GetValues(value) {//value="gghh,yyyi"
            var r = value;
            //alert(r);
            var result = r.split(",");
            lb1.SetText(result[0]);
            lb2.SetText(result[1]);
            }


可以alert可是label的Text就是出不來,
試了很久才發現,
原來接進來的r不是字串,
要先將r轉換成字串才不會在split的時候出錯,
在split出錯也不會跳通知,因為是Javascript,
修改成,


function GetValues(value) {//value="gghh,yyyi"
            var r = value;
            //alert(r);
            var result = r.toString().split(",");
            lb1.SetText(result[0]);
            lb2.SetText(result[1]);
            }


就可以了,加油。

2018年3月13日 星期二

[SQL Server 2017-SSIS] OLE DB目的地錯誤輸出,資料存取模式,資料表快速載入的差別

若要知道怎麼使用錯誤輸出可參考以下。
[參考網址1] SSIS-轉檔中如何抓出pk重覆的資料
[參考網址2] [SQL Server 2017-SSIS] 使用OLE DB來源與目的地的資料匯入


此篇用圖來顯示[資料存取模式]中,
[資料表或檢視表]與[資料表或檢視表-快速載入]的錯誤輸出差別,
若選擇[資料表或檢視表-快速載入]則資料列全部都變成錯誤輸出。







改用[資料表或檢視表]沒錯的資料才有進到DB裡,
真正錯誤的資料列才會輸出到txt檔。






以上,
錯誤輸出的目的地,
可以看你需要輸出成怎麼樣的,
我選擇用txt檔案來存。















2018年3月12日 星期一

[SQL Server 2017-SSIS] 使用OLE DB來源與目的地的資料匯入

一開始不管怎麼設,明明DB有2142筆資料,
匯入的筆數始終都只有1325。





在[資料流程工作]的[屬性]中,將參數修改更大一點,問題就解決了。


真的不好解決啊!

2018年3月8日 星期四

[SQL Server 2017-SSMS] WITH AS、 ROW_NUMBER()、PARTITION BY查詢的資料變化

整個語法如下:
WITH TETABLE AS
(
SELECT [TraTitle],[TraDate],[TraTime],[TraNum],[TraContent], ROW_NUMBER() OVER (PARTITION BY [TraTitle],[TraDate],[TraTime],[TraNum],[TraContent] ORDER BY [TraTitle]) AS SORT
 FROM
 [dbo].[ForeignTra]
)
SELECT [TraTitle],[TraDate],[TraTime],[TraNum],[TraContent],SORT
FROM TETABLE WHERE SORT>1


查詢的資料變化如下:
1.




2.




3.




4.


以上方便以後參考。

[SQL Server 2017-SSMS] SQL語法刪除重複資料

因為資料庫為測試資料匯入用,
所以沒有設唯一值(KEY),
裡面有很多重複資料想刪除,
上網找了語法參考了幾篇文章,
我使用的是WITH、PARTITION 與 ROW_NUMBER()的語法搭配,
因為我沒有可參考的ID(流水號)。


[參考文章1] 如何刪除 SQL Server 資料庫中重複的資料 (兩種不同解法)
[參考文章2] [SQL] 於多筆重複資料中取得該重複群組中最新一筆資料


因為我的SQL版本是2017就遇到了資料庫相容性的問題



使用以下語法:


ALTER DATABASE TestDB2  
SET COMPATIBILITY_LEVEL = 90






因SQL2017最低只能相容到100,所以有錯誤訊息。
使用以下語法:


ALTER DATABASE TestDB2  
SET COMPATIBILITY_LEVEL = 100




還是會有錯誤提示,但我發現其實能查詢,那就先這樣吧。


[參考文章3] ALTER DATABASE (TRANSACT-SQL) 相容性層級


WITH和 ROW_NUMBER()語法可參考這邊。


[參考文章4] SQL 中使用 WITH AS 提高性能
[參考文章5] ROW_NUMBER (Transact-SQL)



2018年3月7日 星期三

[SQL Server 2017-SSMS] 無法使用特殊主體 'sa'




因為一開始安裝SQL在新增SQL Server執行個體時,
在[資料庫引擎祖態]的[伺服器組態]的驗證模式中,
[Windows 驗證模式]或[混合模式(SQL Server驗證與Windows驗證)],
選的是[Windows 驗證模式],
所以安裝完後,
SQL Server就將SQL Server驗證的'sa'帳戶設為特殊主體,
導致就算我啟用了'sa'帳號,
我要將'sa'的權限加到資料庫中也是不給加,
Google完後找到的方法真的能使用,
只是這樣以後我新增了新的資料庫,
還是得用語法把'sa'帳號的權限加入到資料庫中,
只好記個筆記了,還有感謝網友。


網友使用的是SQL2008,方式如下:
◆資料庫的相容性層級需要是:90
可用下列的指令調整:
USE [master]
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'資料庫名稱', @new_cmptlevel=90
GO

◆資料庫應該要具備有效的擁有者。
請使用以下的指令來進行調整:
USE master
GO
ALTER AUTHORIZATION ON DATABASE::資料庫名稱 TO sa


USE [資料庫名稱]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

而我使用的是SQL2017,我只使用到如下:
USE master
GO
ALTER AUTHORIZATION ON DATABASE::資料庫名稱 TO sa

就解決了,供參考。






[參考作者]哇哈哈學習筆記

[Javascript] Devexpress label SetText

看別人用得很順, function saveComplete(s, e) {             var r = e.result;             var result = r.split(',');             switch (r...