範例:(有點爛的範例)
資料表名稱:TABLE1
資料表欄位:UserID[PK]、身高
資料表名稱:TABLE2
資料表欄位:UserID[PK]、體重
方法 1:如果只是要檢視的話,可以建立 View,語法如下
SELECT A.UserID, 身高, 體重
FROM [TABLE1] AS A
INNER JOIN [TABLE2] AS B ON A.UserID = B.UserID
方法 2:要將 [TABLE2] 表格刪除,然後只保留 [TABLE1]
步驟 1: [TABLE1] 新增一個欄位 - 體重
步驟 2: 執行以下語法
UPDATE A SET A.體重 = B.體重
FROM [TABLE1] AS A
INNER JOIN [TABLE2] AS B ON A.UserID = B.UserID
2016年6月17日 星期五
2016年5月25日 星期三
Microsoft.ACE.OLEDB.12.0' 提供者並未登錄於本機電腦上
執行環境:OS:Win 7、SQL Server Manager Studio、Office 2010
問題:執行SQL Server 匯出/匯入精靈,在匯入 *.xlsx 時遇到 'Microsoft.ACE.OLEDB.12.0' 提供者並未登錄於本機電腦上。(System Data)
解決方式:在執行精靈的那台電腦安裝 "2007 Office system 驅動程式:資料連線元件",即可。
檔案下載:
.2007 Office system 驅動程式:資料連線元件
.Microsoft Access Database Engine 2010 可轉散發套件
註1:網路上說安裝"Microsoft Access Database Engine 2010 可轉散發套件",可解決,但是我安裝後仍然有問題(不知道跟什麼有關)
註2:下載時需注意,因為"2007 Office system 驅動程式:資料連線元件" 和 "Microsoft Access Database Engine 2010 可轉散發套件",(如果下載32位元版本)下載後的檔名都一樣
問題:執行SQL Server 匯出/匯入精靈,在匯入 *.xlsx 時遇到 'Microsoft.ACE.OLEDB.12.0' 提供者並未登錄於本機電腦上。(System Data)
解決方式:在執行精靈的那台電腦安裝 "2007 Office system 驅動程式:資料連線元件",即可。
檔案下載:
.2007 Office system 驅動程式:資料連線元件
.Microsoft Access Database Engine 2010 可轉散發套件
註1:網路上說安裝"Microsoft Access Database Engine 2010 可轉散發套件",可解決,但是我安裝後仍然有問題(不知道跟什麼有關)
註2:下載時需注意,因為"2007 Office system 驅動程式:資料連線元件" 和 "Microsoft Access Database Engine 2010 可轉散發套件",(如果下載32位元版本)下載後的檔名都一樣
2016年5月5日 星期四
Access 資料取得方式 In C#
如果要將單一個資料表包含100萬筆資料的Access檔案讀到DataTable,必須要有以下兩點
1.在 x64 環境下才能達到
2.連接字串中的Provider 要用 Microsoft.ACE.OLEDB.12.0,例:
<add name="connAccess" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Access檔案路徑(包含副檔名);Persist Security Info=False"/>
/// <summary>
/// 取得Access的表格名稱清單
/// </summary>
/// <returns></returns>
public static KeyValuePair<int, string>[] GetTableNames()
{
List<string> listTableName = new List<string>();
try
{
if (filePath.Length == 0)
throw new Exception("未提供檔案(*.mdb)路徑.");
ADODB.Connection connection = new ADODB.Connection();
ADOX.Catalog tableLog = new ADOX.Catalog();
try
{
connection.Open(defaultConnectionString.Replace("#FilePath#", filePath));
tableLog.ActiveConnection = connection;
for (int i = 0; i < tableLog.Tables.Count; i++)
{
if (((dynamic)tableLog.Tables[i]).Type == "TABLE")
{
listTableName.Add(tableLog.Tables[i].Name);
}
}
}
finally
{
if (connection != null)
connection.Close();
}
}
catch (Exception ex)
{
throw ex;
}
KeyValuePair<int,string>[] ret = new KeyValuePair<int,string>[listTableName.Count];
for (int i = 0; i < listTableName.Count; i++)
{
ret[i] = new KeyValuePair<int, string>(i, listTableName[i]);
}
return ret;
}
1.在 x64 環境下才能達到
2.連接字串中的Provider 要用 Microsoft.ACE.OLEDB.12.0,例:
<add name="connAccess" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Access檔案路徑(包含副檔名);Persist Security Info=False"/>
/// <summary>
/// 取得Access的表格名稱清單
/// </summary>
/// <returns></returns>
public static KeyValuePair<int, string>[] GetTableNames()
{
List<string> listTableName = new List<string>();
try
{
if (filePath.Length == 0)
throw new Exception("未提供檔案(*.mdb)路徑.");
ADODB.Connection connection = new ADODB.Connection();
ADOX.Catalog tableLog = new ADOX.Catalog();
try
{
connection.Open(defaultConnectionString.Replace("#FilePath#", filePath));
tableLog.ActiveConnection = connection;
for (int i = 0; i < tableLog.Tables.Count; i++)
{
if (((dynamic)tableLog.Tables[i]).Type == "TABLE")
{
listTableName.Add(tableLog.Tables[i].Name);
}
}
}
finally
{
if (connection != null)
connection.Close();
}
}
catch (Exception ex)
{
throw ex;
}
KeyValuePair<int,string>[] ret = new KeyValuePair<int,string>[listTableName.Count];
for (int i = 0; i < listTableName.Count; i++)
{
ret[i] = new KeyValuePair<int, string>(i, listTableName[i]);
}
return ret;
}
2016年2月18日 星期四
關鍵字Highlight
// 將內容加上hightlight之後回傳
// Content: 原文
// HighlightText: 要反白的文字
private string AddHightlight(string Content, string HightlightText)
{
// 用正則表示法找出要highlight的字和位置
MatchCollection mc =new Regex(string.Format(@"{0}\b", HightlightText), RegexOptions.IgnoreCase).Matches(Content);
// 從最後一個以移除再加入的方式取代原內容
for (int mcIndex = mc.Count-1; mcIndex >= 0; mcIndex--)
{
Content = Content.Remove(mc[mcIndex].Index, mc[mcIndex].Value.Trim().Length);
Content = Content.Insert(mc[mcIndex].Index, string.Format(@"<span style=""background-color:blue;color:white;"">{0}</span>", mc[mcIndex].Value.Trim()));
}
return Content;
}
註:highlight 的樣式要寫在 程式碼中,不能用 class 的方式,好像有時會套不到
// Content: 原文
// HighlightText: 要反白的文字
private string AddHightlight(string Content, string HightlightText)
{
// 用正則表示法找出要highlight的字和位置
MatchCollection mc =new Regex(string.Format(@"{0}\b", HightlightText), RegexOptions.IgnoreCase).Matches(Content);
// 從最後一個以移除再加入的方式取代原內容
for (int mcIndex = mc.Count-1; mcIndex >= 0; mcIndex--)
{
Content = Content.Remove(mc[mcIndex].Index, mc[mcIndex].Value.Trim().Length);
Content = Content.Insert(mc[mcIndex].Index, string.Format(@"<span style=""background-color:blue;color:white;"">{0}</span>", mc[mcIndex].Value.Trim()));
}
return Content;
}
註:highlight 的樣式要寫在 程式碼中,不能用 class 的方式,好像有時會套不到
2015年9月9日 星期三
2015年9月3日 星期四
如何對欄位和表格做定義
方法一:針對各欄位和整個表格定義
1.選擇需要的資料
2.點選「公式」頁籤中的「從選取範圍建立」
3.選擇相對應的資料
方法二:只定義整個表格
1.選擇需要的資料
2.點選「常用」頁籤中的「格式化為表格」,然後選擇任一個格式
3.會出現以下的詢問,然後按下確定
4.上方工具區會出現「設計」頁籤,然後就可以修改左邊的表格名稱
5.回到「公式」頁籤中,點選「名稱管理員」(方法一的第2點),即可看到上個步驟的定義名稱
註:刪除名稱管理員中針對”表格”的定義
1.將指標focus在該表格的任一儲存格,上方工具區便會出現「設計」頁籤
2.點選「設計」頁籤中的「轉換為範圍」,在跳出的視窗點選確定。
3.表格就被轉換成一般表格(沒有定義名稱),此時「設計」頁籤會消失,且「公式」中的「名稱管理員」裡的該表格名稱也會消失。
PowerPivot 現有連線加入新資料表
訂閱:
文章 (Atom)













