顯示具有 學習心得 標籤的文章。 顯示所有文章
顯示具有 學習心得 標籤的文章。 顯示所有文章

星期四, 10月 03, 2013

TechDays Taiwsn 2013 Day1

好久沒寫文章了.其實除了除了拿忙當藉口外,其實也不知道該分享些什麼,在經過三天洗禮後發覺需要瞭解的資訊很多,本想上完一天就整理一天的內容,但那幾天的晚上我都很興奮的在實作WP8的程式,二個晚上幾乎都沒有睡覺! 所以只好現在才整理放上一些記憶的KEYWORD,請自行配合GOOGLE服用,應也可以吸收到不少內容‧

再強調我並不是一直做筆記.記筆內容僅就自己不足的部份做重點標示.所以若你期待看到完整內容.那請略過吧

先整理第一天的內容吧

大會開場內容

今年3070人報名.第19屆

趨勢
1.海量資料  2.企業社群 3.雲端 4.行動與裝置(BYOD議題)

WINDOWS 8.1
1.10/17上市
2.8.0可免費升級
3.可以在不刪除任何使用者資料下,直接把系統原還(這個功能光聽就很優)
4.加強BITLOCKER   http://technet.microsoft.com/zh-tw/library/dn306081.aspx
5.Applocker可控管APP的使用
6.群組派送APP選單與安裝
7.WORK PLACE克服無法加入AD控管的設備(BYOD)
8.圖片密碼
9.MAIL APP可以直接開副件
10.單一程式使用模式(使用者無法切換也無法關閉)
11.LOB(企業用APP)
http://technet.microsoft.com/en-us/windows/dn140266.aspx

LYNC 行動分機解決方案
EXCHANGE ONLINE提供信件DLP
SystemCenter管理異質平台,應用程式管

雲的特性: 高可用怕,可動態擴展、你需要時"即可及時"取得

Azure :SQL、虛擬機、通知、AutoScale自動取得平衡
AzurePack內部使用的雲

Excel Power Query中有工具可以分析FACEBOOK社群資料

SQL2014 支持記憶體TABLE(更有效率),使用AMR TOOL可以分析那些TABLE適合放到RAM中, 會有管理界面可把DB備份到AZURE中(2012支持但要自行下指令)

學習資源: MVA, Channel 9

--------------------
課堂內容
Windows Phone較安全.有FIPS 140-2認證
系統要支援HYPER-V(CPU要支援SLAT)
Portable Class Library  http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714086(v=vs.105).aspx
第一個畫面僅量用Panorama 或 pivot
http://apps.windowsstore.com  可快速開發應用程式

SQL交易檔僅量放在RAID 1或10中(循序),MDF放在RAID5為佳
幾個指令  sys.fn_dblog  ,  DBCC LOGINFO

星期日, 4月 15, 2012

Excel Calculation Performance 計算效能

如何加快EXCEL的計算效能呢?
首先.建議你閱讀如下文章
Excel 2010 Performance: Improving Calculation Performance
將我覺得較有用的列出如下(個人為解決ole automation時的效率問題)



1.改變為手動計算  Excel.Calculation := xlCalculationManual;
   自行呼叫EXCEL.Calculate;
2.改變 Excel.WorkBooks[1].ForceFullCalculation := True
3.關閉"multi-threaded calculation"  Excel.MultiThreadedCalculation.Enabled := False;

關於第3點要特別說明,因為發覺EXCEL預設此選項為開啟的,但在實測卻覺得EXCEL的計算並不快速! 查看原文
"You can manually specify the number of threads to run at the same time. This number can be more than the number of processors on the computer. This is useful if, for example, you have XLL user-defined functions dependent on long-running external calls to a database server. If the database server can process multiple requests in parallel, you can effectively use multithreading even on a single-processor system."
可以得知,在特定的情況下開啟才會加快計算效能,而我個人測試.不論是在文章中的"環境"或是最原始的單一EXCEL環境,關閉此選項均比開啟來得快!

星期三, 5月 27, 2009

Fixed Delphi 2009 TClientDataSet locate method (filter) at widestring problem

I have fixed "Clientdataset can't locate TWideStringField" problem!

I find then problem at TExprParser! You solve the problem Step by Step .

  • Add a new class inheritance from TClienDataSet

  • override Locate Method!

function TBearClientDataSet.Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean;
begin
 DoBeforeScroll;
 Result := LocateRecord2(KeyFields, KeyValues, Options, True);
 if Result then
 begin
  Resync([rmExact, rmCenter]);
  DoAfterScroll;
 end;
end;

  • Add private LocateRecord2--Copy From LocateRecord and Change TExprParser to TExprParser2
  • Write TExprParser2

Some Code..

function TFilterExpr2.PutConstant(Node: PExprNode): Integer;
begin
 Result := 0;
 case Node^.FDataType of
  ftString, ftFixedChar, ftGuid: Result := PutConstAnsiStr(AnsiString(Node^.FData));
  ftWideString, ftFixedWideChar: Result := PutConstUnicodeStr(UnicodeString(Node^.FData));
..
end.


function TFilterExpr2.PutConstAnsiStr(const Value: AnsiString): Integer;
var
Str: AnsiString;
Buffer: array[0..255] of Byte;
begin
 if Length(Value) >= SizeOf(Buffer) then Str := Copy(Value, 1, SizeOf(Buffer) - 1)
 else Str := Value;
 FDataSet.Translate(PAnsiChar(Str), PAnsiChar(@Buffer), True);
 Result := PutConstNode(ftString, @Buffer, Length(Str) + 1);
end;

function TFilterExpr2.PutConstUnicodeStr(const Value: UnicodeString): Integer;
var buffer: array of word; Len : Integer;
begin
  Len := Length(Value);
 SetLength(buffer, Len + 1);
 buffer[0] := Len * 2;
 if Value <> '' then Move(Value[1], Buffer[1], Len*2);
 Result := PutConstNode(TFieldType(ftUnknown), @buffer[0], (Len+1)*2);
 SetNodeOp(Result, 0, $1007);
end;

星期二, 5月 12, 2009

受不了Delphi 2009 的 TClientDataSet

在初接觸到程式設計時,那時對於Delphi 5的Midas架構覺得很驚奇,3-Tier、離線模式、Load Balance等功能,都讓我在中歷資策會學習期間,每一天,每一晚都過得很充實!當時的生活真的是累了就睡,起床就學,寫到這就想起好多美好時光,也要感謝很多老師,尤其是教Delphi的DoDo(miss 黃)、連sir,還有一位用課外自己時間教java的王Sir!

在出了社會接觸的幾個產品,多多少少都會用到CDS,尤其是拿來當一些資料的暫存特別好用,可以用資料庫的方式進行一些必要的操作。但一直以來都覺得它的速度實在不快,以往嚐試著用fastmm或是試著自行pack data等方式來改善,但成效總是有限!


在經歷近二年.NET的洗禮,最近又重新接觸MIDAS後,終於有了新的結果!首先以本機進行測試,從PROVIDER餵資料給CDS,這段時間花了9成五以上的時間,有了這樣子的體認,即可以有個初步的方向,即丟掉笨重的data結構。在重新檢視了專案中CDS的用法,發覺有大半的程式只是用來捉取資料(查詢,觀看)取回來的資料並不需要進行編修後再更新,也就是不用保有原cds的資料結構,只要想辦法手動"序列化(serialization)"這段不需要編修的Data資料,讓他到CLINET時可以正確還原到能夠檢視即可!經由這樣子的調整與改變,在有較大量資料的查詢下,速度至少快了將近一半!


寫到好像問題都解決了,沒有什麼受不了的!但試用了d2009後,又發覺cds二個問題

  1. Locate中文會不正常
  2. aggregates中 使用像 min(field1) 此時若field1是widestring會不正常.但string是正常的
說起來這二點應都是改成unicode後才改壞的,爬了一下文發覺也有蠻多人反應這樣子的問題! 而在 ktop上看到一則很久前的帖子發覺或許這個問題己經存在很久.只是之前都沒遇過而己!真希望update4(or 10)能快出來,此二點就先不管了,日後需要正面衝突使用時再來傷腦子了

星期六, 11月 04, 2006

HemiDemi網路書簽

最近使用了 網路共用書簽,也建立了一個.NET學習的群組,歡迎大家可以一起加入來分享書簽! ^^

星期二, 10月 24, 2006

.NET學習筆記--I/O檔案處理(上)

.NET學習筆記--I/O檔案處理(上)



幾個重要的 NameSpace

System.IO

System.IO.Compression




主要的 Class

檔案系統相關(FileSystemInfo)

DriveInfo、DriveType

Directory、DirectoryInfo

File、FileInfo

FileSystemInfo、FileSystemWatcher

Path



串流相關

Stream、FileStream、MemoryStream、BufferedStream



讀寫相關

StringReader、StringWriter

TextReader、TextWriter

StreamReader、StreamWriter

BinaryReader、BinaryWriter



壓縮

DeflateStream、GZipStream




主要功能如下

FileSystemInfo:是 FileInfo與DirectoryInfo的基礎類別,提供檔案目錄共用的資訊

Attributes:唯讀、隱藏、保存等資訊

Extension:副檔名

LastWriteTime、LastAccessTime、CreationTime :相關時間

Refresh():重新讀取


DriverInfo:取得磁碟機的資訊

DriveType:列舉型態,磁碟機是何類型(網路、固定、CDROM..等等)

如下的例子取資系統中所有磁碟機的資訊(可用空間、所有空間、格式、磁碟名稱等資訊)

{
listBox1.Items.Clear();
//取得系統所有磁碟機
DriveInfo[] driveinfos = DriveInfo.GetDrives();
listBox1.Items.Add(string.Format("系統共有{0}部磁碟機", driveinfos.Length));
foreach (DriveInfo di in driveinfos)
{
try
{
listBox1.Items.Add(string.Format("{0} 磁碟資訊如下 ", di.Name));
listBox1.Items.Add(string.Format("型態為:{0} 格式為:{1} 磁碟名稱:{2}",di.DriveType, di.DriveFormat, di.VolumeLabel));
listBox1.Items.Add(string.Format("所有空間:{0},剩餘空間:{1}", di.TotalSize,
di.AvailableFreeSpace));
//AvailableFreeSpace與TotalFreeSpace 最大不同是前者考量了windows的配額!
listBox1.Items.Add(string.Format("根目錄共有{0}個目錄,{1}個檔案", di.RootDirectory.GetDirectories().Length, di.RootDirectory.GetFiles().Length));
}
catch (IOException ee)
{
listBox1.Items.Add(ee.Message);
}
listBox1.Items.Add("");
}
}

Directory:是一個 Helper類別,有多個Static method!
Exists:目錄是否存在
CreateDirectory:建立目錄
Delete(string 檔名, bool 包含目錄中所有):若目錄中有唯讀檔會失敗
Move:移動目錄
取得/設定時間等等

DirectoryInfo: 取得目錄的資訊
Parent:上一層的資訊
Root:根目錄的資訊
MoveTo:搬移目錄
Create:建立目錄
GetDirectories、GetFiles、GetFileSystemInfos ..

例子,用DirectoryInfo判斷目錄是否存在,不存在就建立他:
DirectoryInfo driveinfo = new DirectoryInfo(@"c:\huwk\bert");
if ( !driveinfo.Exists)
driveinfo.Create();

File:是一個Helper類別,有多個Static method!
Copy:複制
Encrypt:加密(只有當前帳戶能解密)
Decrypt:解密
Replace:取代
等等

FileInfo:檔案資訊
Length:檔案大小
IsReadOnly:是否唯讀
等等
Path:是一個Helper類別,有多個Static method!
Combine:組合路徑(第二個參數若包含絕對路徑,會直接回傳第二個)
GetTempPath:取得目前使用者的暫存路徑
GetRandomFileName:取得隨機檔名
GetTempFileName:取得一暫存檔名
ChangeExtension:變更副檔名
HasExtension:是否有副檔名
FileSystemWatcher:檔案系統監視,可以在檔案目錄被異動(新增、刪除、修改、更名)時,及時做出通知

void fw_Changed(object sender, FileSystemEventArgs e)
{
MessageBox.Show(e.FullPath+":被改變");
}

FileSystemWatcher fw = new FileSystemWatcher();
fw.Path = @"c:\"; //監看c槽
//包含子目錄
fw.IncludeSubdirectories = true;
//通知法則為檔案大小與最後寫入時間
fw.NotifyFilter = NotifyFilters.Size NotifyFilters.LastWrite;
//只監看文字檔
fw.Filter = "*.txt";
//掛上異動的事件
fw.Changed += new FileSystemEventHandler(fw_Changed);
//開始接收
fw.EnableRaisingEvents = true;

後記:

1.當裝置未就序時,會發生IOException,所以處理檔案系統最好加上處理

2.當對windows按右鍵點選新增檔案時,其實他是先建立一個"新增xx檔.xx",當你對他改名時,他又做了一次rename,若此時按取消,他會
做一次刪除的動作。

星期五, 10月 20, 2006

微軟技術論壇回答的文章整理


  • 問題:我的要求是:年份是闰年的判断
熊的回答:
闰年的判断
DateTime.IsLeapYear
  • 問題: 跪求:C#中CPU密集运算时如何获取控制权?
熊的回答:使用Application.DoEvents(); 即可!
  • 問題:Structure回收問題
查過資料後structure不是由記憶體回收行程管理,那如何回收?
不回收會不會造成記憶體不足?
自己要寫dispose?
是不是少用structure?
謝謝回答

熊的回答:
Structure算是value type的一種,所以不會有記憶體回收的問題!宣告一個value type他所佔用的空間是固定的,也就是不會因為你的資料量的增加而
佔用空間變多,也不會因為改變了儲存的值改變了容器的大小,而value type佔用的空間是在stack裡。


而記憶體回收主要是針對reference type,為什麼呢?因為他會有二段資料,指向器(存在stack中),而另一段是資料(存在heap中),例如你操作一個字串相加 例如 s + =
"123";
其實他做了如下的動作,將你原來s的資料搬出來後,與123做相加,然後放回了新的一堆記憶體中(heap),然後把你的指向器指向了新的記憶體中間。此
時問題來了,原始記憶體空間並沒有指向器指到那個空間,所以記憶體回收主要是做這一塊。


而stack中的資料是何時被回收呢? 其實當你一個行程結速時,他就會空出空間了,例如你在一個function中定義了個value type,當結束此function時,他就放出了資源。

  • 問題:讀取字串有幾個相同的字
假設我今天有一個字串是"A,B,C,E,F,G,"
我要如何得知 我的字串裡面有幾個 ","
不知道是否有現成的函式可用呢?
還是該如何去解決呢? 希望可以給個指示的方向阿!! 謝謝

熊的回答
善用regex即可~
Imports
System.Text.RegularExpressions

Dim text1 As String = "A,B,C,E,F,G,"
Dim regex1 As New Regex("[,]")
MessageBox.Show(regex1.Matches(text1).Count.ToString)
  • 問題:如果取得目前營幕解析度?
熊的回答:
MSDN中
即有例子,run一下應可以知道!

Bound 指的是營幕設定的解析度~
Private
Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnGetScreenInfo.Click

Dim Index As Integer

Dim UpperBound As Integer

' Gets an array of all the screens connected to the system.

Dim Screens() As System.Windows.Forms.Screen = _

System.Windows.Forms.Screen.AllScreens

UpperBound = Screens.GetUpperBound(0)

For Index = 0 To UpperBound

' For each screen, add the screen properties to a list box.

ListBox1.Items.Add("Device Name: " + Screens(Index).DeviceName)

ListBox1.Items.Add("Bounds: " + Screens(Index).Bounds.ToString())

ListBox1.Items.Add("Type: " + Screens(Index).GetType().ToString())

ListBox1.Items.Add("Working Area: " +Screens(Index).WorkingArea.ToString())

ListBox1.Items.Add("Primary Screen: " +Screens(Index).Primary.ToString())

Next

End
Sub

  • 問題:程式片段
小弟觀摩他人的程式以下片段一直不得搞不懂 不知是否可以指點一二
其Function GetDataSplit 是啥作用呢

If tmp.GetLength(0) > index Then Return tmp(index)又有何目的
略...
熊的回答:
1.Dim tmp As String() = data.Split(Sep),這段是在將字串用step拆解
2.If tmp.GetLength(0) > index Then Return tmp(index)
,判
段你要取回的index是否合理

例如你下 GetDataSplit("abc", "0") 會得到因為在1步時tmp(0) 為a
1為b 2為c
第2步判別陣列大小3比你要取的index值來得大(表示合理值,取用不會出錯), 回傳a
  • 問題:win form內崁 WebBrowser的問題?
請問各位大大
我在win form裡面內崁 WebBrowserControl(與Form同大小),
但我把win form的FormBorderStyle設為None
因此無法移動視窗
雖然有些書說明只要在MouseMove和MouseDown上撰寫相關程式即可解決
但是由於我內嵌WebBrowserControl所以沒有MouseMove和MouseDown事件
請問該如何解決呢?
感謝^^

熊的回答

使用 HtmlElementEventHandler!

private void Document_MouseDown(object sender, HtmlElementEventArgs e)
{

}

private void Document_MouseMove(object sender, HtmlElementEventArgs e)

{
}
private void Document_MouseUp(object sender, HtmlElementEventArgs e)

{
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.MouseDown += new
HtmlElementEventHandler(Document_MouseDown);

webBrowser1.Document.MouseMove += new
HtmlElementEventHandler(Document_MouseMove);

webBrowser1.Document.MouseUp += new
HtmlElementEventHandler(Document_MouseUp);
}

  • 問題: 請教一下Calendar用法

你好,我是一個剛接觸visual studio的初學者.現在我剛好遇到一個問題,就是Calendar的用法不太清楚.
問題如下:
我要設計的是它不可以點選當天以前的時間.如今天是2006年8月11日,那我想設定的是只可以點選8月11日當天或以後的時間.
希望各位前輩可以指導一下用法.
我是不想讓使用者切換到別的月份,只有是過去的月份都不能點.

熊的回答:
Sorry沒注意到你是asp.net版,下面的範例為 只能選取8/1日後的日期.之前也會顯示.但無法選取應符合您的需求~

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
DateTime dt = new DateTime(2006, 08, 1);
if (e.Day.Date >= dt)
{
e.Day.IsSelectable = true;
}
else
{
e.Day.IsSelectable = false;
}
}

  • 問題:關於tabcontrol上的標籤問題

請問一下tabcontrol上的tab能夠在選到他的時候更改它的字型顏色或者是在字的下方加底線,因為想要讓user能更明顯的知道使用的是哪一個tab

熊的回答
1.tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed
2.掛上事件自己畫,想怎麼晝就怎麼畫
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
TabControl tctmp = (TabControl)sender;

Graphics g = e.Graphics;
Pen p = new Pen(Color.Blue);
Font font;
SolidBrush brush;

if (tctmp.SelectedIndex == e.Index)
{
brush = new SolidBrush(Color.Red);
font = new Font("Arial", 8.0f, FontStyle.Underline);
}
else
{
brush = new SolidBrush(Color.Black);
font = new Font("Arial", 8.0f);
}
g.DrawRectangle(p, tctmp.GetTabRect(e.Index));
g.DrawString(tctmp.TabPages[e.Index].Text, font, brush,
(RectangleF)tctmp.GetTabRect(e.Index));
}

  • 問題:CreateSpecificCulture()與New CultureInfo()的差異
請教各位大大:(.Net Framework 2.0)
CultureInfo.CreateSpecificCulture("??-??")與
CurrentCulture = New CultureInfo("??-??")有何差別呢?
例如使用CultureInfo.CreateSpecificCulture("ja")便沒有 exception發生,
但CurrentCulture = New CultureInfo("ja")就發生exception!

熊的回答
基本上二者是相同的..就算是靜態函式CreateSpecificCulture內部也是叫用CultureInfo的建構子~
不同的事情在,當CreateSpecificCulture在呼叫CultureInfo建構子時,若有發生錯訊他會幫你做必要的處理當他發現你的參數是無法建立起來時,他會幫你check是否有此參數開頭相同的名稱若有就幫你建立,所以他也不是無止盡的不出錯,例如你可以試試看

CultureInfo ci = CultureInfo.CreateSpecificCulture("JA-"); //ok不出錯
CultureInfo ci = CultureInfo.CreateSpecificCulture("JA-aaa"); //ok不出錯
CultureInfo ci = CultureInfo.CreateSpecificCulture("J-aaa"); //出錯
所以CreateSpecificCulture只是會幫你額外做檢查而以
對於文化資訊,你可以參考文化資訊的格式說明,與自訂文化資訊,應會有更深的認識~

  • 問題:將記事本檔案的編碼從ANSI 轉成 Unicode
我現在有 100個 純文字檔 每個檔案 約有 10000筆資料
我知道 我的文字檔的編碼方式都是使用 ANSI 但是現在我想要改成Unicode
不知道有沒有什麼比較好的方式 可以轉換呢?
呵呵 總不可能把文字檔打開 另存新檔 選擇 Unicode 的編碼方式
我是使用Visual Basic 2005 來開發的
作業系統 Windows Server 2003
謝謝

熊的回答:
您好給你二段程式參考
我vb比較不熟,您再自己組合一下
Imports System.IO
Imports System.Text
1.
取得特定目錄下所有副檔名為txt的方式

Dim info1 As New DirectoryInfo("c:\")

Dim info2 As FileInfo

For Each info2 In info1.GetFiles("*.TXT")

MessageBox.Show(info2.Extension)

Next
2.將字碼做轉換.由ansi轉為unicode!
Dim reader1 As New StreamReader("C:\TEST-ANSI.txt", Encoding.Default)

Dim writer1 As New StreamWriter("c:\TEST.TXT", True, Encoding.Unicode)
writer1.Write(reader1.ReadToEnd)

writer1.Flush()

writer1.Close()

reader1.Close()

  • 問題:Crystal Report無法處理直式字型?
請問一下,我使用vs2005內的Crystal Report製作報表,因為要列印標籤的關係所以將欄位字型選成直式字型(@細明體),但在CrystalReport viewer中及列印結果均無法顯示成直式字型,奇怪的是如果把它匯出成PDF,就可以正常顯示出直式字型,之前使用vs2003的crystal report不會有此問題,請問這應該如何解決?謝謝.

熊的回答:
我發覺幾件事情
1.在properties windows中點選的字型會選不到@的字型
2.在properties windows無法改變font.gdiverticlfont 與gdicharset!
但若你對text object按右鍵選format object則字型可以選到"@xxx"
而若使用format object的方式去設定.我打印的結果是正常的(使用@細明體)。
  • 問題:如何得知一個控制項目中是否有某一個屬性值
要如何得知一個控制項目中是
否有某一個屬性值,的指令?

因為我想判斷,如何這個控制項有這個屬性的話會去執行某斷指令?
熊的回答
使用PropertyInfo!
imports System.Reflection
Dim info1 As PropertyInfo = xxxx.GetType.GetProperty("Hint")
If (Not info1 Is Nothing) Then
表示有

  • 問題:如何自動編號??
各位高手:我是使用SQL
2000 ,我有二個資料表,我使用SELECT
方式,JOIN出我要的資料,但是如我想要在這些資料中增加一個欄位做自動流水編號,應該要如何下指令?

熊的回答
使用rowid,若你是sql2005那可以使用row_number()!
IF EXISTS
(SELECT * FROM TEMPTABLE)

DROP
Table TEMPTABLE

GO

select
ROWID=IDENTITY(int,1,1), *

INTO
TEMPTABLE

from
YourTable

go

select * from TEMPTABLE;
go
  • 問題:請教如何攔截BindingSource.MoveNext VB2005
BindingNavigator1.BindingSource= BindSource1
當我們按下BindingNavigator1的MoveNextItem
它會自動呼叫BindSource1的MoveNext
並且會針對目前這筆資料作EndEdit動作
我希望能在EndEdit之前先做資料判斷
如果資料錯誤則不要做EndEdit以及MoveNext的動作
請問應該要怎麼做
謝謝

熊的回答:
原生的bindingsource無法做到!
你可以試著使用 datatable.RowChanging
AddHandler Me.dataSet1.TABLENAME.RowChanging, New
DataRowChangeEventHandler(AddressOf Me.TABLENAME_RowChanging)


Private Sub TABLENAME_RowChanging(ByVal sender As Object, ByVal e As
DataRowChangeEventArgs)

do something!

End
Sub

  • 問題:關於SQL時間函數
各位前輩大大
請問在sql server中有 類似 my sql 中的UNIX_TIMESTAMP(date)及FROM_UNIXTIME(unix_timestamp) 的函數用法嗎??
或者 要如何達到這個功能? 煩請各位前輩不吝指導~

熊的回答
你是要計算二個日期間距離的天數、時、分等資料吧? 試試看 datediff吧!
DATEDIFF( datepart , startdate , enddate )
selectDATEDIFF(minute, Convert(DateTime, '2006/01/01'), Convert(DateTime,
'2006/01/02'))

  • 問題:功能表的快速鍵?
請教各位大大一個笨問題
我看書上寫說如果要設定功能表上的快速鍵
只要設定ShortcutKeys的值就好
可是我怎麼設了之後都沒反應呢?
麻煩幫我解惑一下~~感謝^^

熊的回答
若你是要設定最外層的hotkey.你可以試試如下的方式~
ToolStripMenuItem.Text= "熊(&A)"; 在&後的第一個英文字母即MENU的HOTKEY! 按ALT+A即是!
若你是要設定ShortcutKeys,那要設在第一層之下(你可以看看現在IE與OFFICE的操作方式),而按壓的功能即會馬上被觸發才是!
  • 問題:讓程式不會繼續往下執行
熊的回答
使用void的型式,其實都是省略return,所以直拉在你想離開整個處理函式時,下return;(無回傳值)即可!
  • 問題:IErrorInfo.GetDescription 因為 E_FAIL(0x80004005) 而失敗
不好意思我想請問一下
我的ACCESS是2003 但是我現在有個資料庫檔是97的版本
那我用2003可以將資料庫打開但是我用vs.c#2003
去連資料表的時候會發生下面的錯誤
IErrorInfo.GetDescription因為 E_FAIL(0x80004005) 而失敗。
我想請問一下這事什麼原因
謝謝
熊的回答
http://www.dbforums.com/showthread.php?p=4550116
當你的資料表有sql的保留字時,就會發生此問題~不管是tabname或是fieldname~