型 | 内容 | サイズ | .NETの型 |
---|---|---|---|
bit | 1、0、または NULL の値をとる整数型 | 1 | Boolean |
decimal | - 10^38 +1 ~ 10^38 - 1 | 5~17 | Decimal |
numeric | - 10^38 +1 ~ 10^38 - 1 (decimal のシノニム) | 5~17 | Decimal |
bigint | -2^63 (-9,223,372,036,854,775,808) ~ 2^63-1 (9,223,372,036,854,775,807) | 8 | Int64 |
int | -2^31 (-2,147,483,648) ~ 2^31-1 (2,147,483,647) | 4 | Int32 |
smallint | -2^15 (-32,768) ~ 2^15-1 (32,767) | 2 | Int16 |
tinyint | 0 ~ 255 | 1 | Byte |
money | -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807 | 8 | Decimal |
smallmoney | - 214,748.3648 ~ 214,748.3647 | 4 | Decimal |
float | - 1.79E+308 ~ -2.23E-308、0、および 2.23E-308 ~ 1.79E+308 | 4 or 8 | Decimal |
real | - 3.40E+38 ~ -1.18E-38、0、および 1.18E-38 ~ 3.40E+38 | 4 | Decimal |
Date | 0001-01-01 ~ 9999-12-31 | 3 | DateTime |
datetime2 | 0001-01-01 ~ 9999-12-31 00:00:00 ~ 23:59:59.9999999 | 6~8 | DateTime |
datetime | 1753 年 1 月 1 日~ 9999 年 12 月 31 日 00:00:00 ~ 23:59:59.997 | 8 | DateTime |
datetimeoffset | 0001-01-01 ~ 9999-12-31 00:00:00 ~ 23:59:59.9999999 | 8~10 | DateTimeOffset |
smalldatetime | 1900-01-01 ~ 2079-06-06 00:00:00 ~ 23:59:59 | 4 | DateTime |
Time | 00:00:00.0000000 ~ 23:59:59.9999999 | 3~5 | TimeSpan |
char | 固定長の文字列データ | 最大長8000 | String |
text | 可変長の非 Unicode データ (最大長が2^31-1文字) | 最大長2GB | String |
varchar | Unicode ではない可変長の文字列データ | 最大長8000 | String |
nchar | 固定長の Unicode 文字列データ | 最大長8000 | String |
ntext | 文字列の最大長が 2^30 - 1 (1,073,741,823) の可変長の Unicode データ | 最大長2GB | String |
nvarchar | 可変長の Unicode 文字列データ | 最大長8000 | String |
binary | 長さ n バイトの固定長のバイナリ データ | 最大長8004 | Byte[] |
varbinary | 可変長 binary データ | 最大長8004 | Byte[] |
image | 0 ~ 2^31-1 (2,147,483,647) バイトの可変長のバイナリ データ | 最大長2GB | Byte[] |
2015年7月15日水曜日
SQLServerの型と.NET型のマッピング
SQLServerの型と.NET型のマッピング
2015年7月10日金曜日
Visual Studio2010でExcel AddIn開発
Visual Studio2010でExcelのAddInを開発
【環境】
.NET VB (Microsoft Visual Studio 2010(sp1) .NET Framework 4)
Microsoft Excel 2010
【対応】
Visual Studio2010側
1.ファイル>新規作成>プロジェクト>テンプレート>Visual Basic>Office>2010>Excel 2010 アドインを選択
2.SampleExcelAddIn1を作成
ThisAddIn_Startup()、ThisAddIn_Shutdown()が自動生成される。
今回は自動生成された関数を使用せずApplication_WorkbookBeforeSave 関数をApplication.WorkbookBeforeSaveにHandlesし新たに作成
3.デバック実行すると以下のようにExcelが起動されB2セルにセットした文字列が表示される。
4.Excelに配置したボタンからAddInを呼び出すようにする。
「2.」コードを修正
5.他のソリューション(ExcelVBA等)に公開するメンバーを宣言するインターフェイスを定義します。 このインターフェイスをアドイン プロジェクトで定義できます。
SampleExcelAddIn1プロジェクトにAddInUtilities.vbを追加
6.Excelにマクロを作成
Excel側
SampleExcelAddIn1.xlsmを新規作成してボタンを配置
ボタンのイベントのマクロを作成
7.Visual Studio2010側のSampleExcelAddIn1ソリューションをビルド
作成したAddInを設定
開発>COMアドイン
8.ボタンクリックしてAddIn実行
【環境】
.NET VB (Microsoft Visual Studio 2010(sp1) .NET Framework 4)
Microsoft Excel 2010
【対応】
Visual Studio2010側
1.ファイル>新規作成>プロジェクト>テンプレート>Visual Basic>Office>2010>Excel 2010 アドインを選択
2.SampleExcelAddIn1を作成
ThisAddIn_Startup()、ThisAddIn_Shutdown()が自動生成される。
今回は自動生成された関数を使用せずApplication_WorkbookBeforeSave 関数をApplication.WorkbookBeforeSaveにHandlesし新たに作成
Public Class ThisAddIn
Private Sub ThisAddIn_Startup() Handles Me.Startup
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
'Excel保存時
Private Sub Application_WorkbookBeforeSave(ByVal Wb As Microsoft.Office.Interop.Excel.Workbook, ByVal SaveAsUI As Boolean, ByRef Cancel As Boolean) Handles Application.WorkbookBeforeSave
Dim activeWorksheet As Excel.Worksheet = Application.ActiveSheet
If activeWorksheet IsNot Nothing Then
Dim nameCell As Excel.Range = activeWorksheet.Range("B2")
nameCell.Value2 = "Hello ExcelAddIn"
End If
End Sub End Class
Private Sub ThisAddIn_Startup() Handles Me.Startup
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
'Excel保存時
Private Sub Application_WorkbookBeforeSave(ByVal Wb As Microsoft.Office.Interop.Excel.Workbook, ByVal SaveAsUI As Boolean, ByRef Cancel As Boolean) Handles Application.WorkbookBeforeSave
Dim activeWorksheet As Excel.Worksheet = Application.ActiveSheet
If activeWorksheet IsNot Nothing Then
Dim nameCell As Excel.Range = activeWorksheet.Range("B2")
nameCell.Value2 = "Hello ExcelAddIn"
End If
End Sub End Class
3.デバック実行すると以下のようにExcelが起動されB2セルにセットした文字列が表示される。
4.Excelに配置したボタンからAddInを呼び出すようにする。
「2.」コードを修正
Public Class ThisAddIn
Private Sub ThisAddIn_Startup() Handles Me.Startup
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
'Excel保存時
Private Sub Application_WorkbookBeforeSave(ByVal Wb As Microsoft.Office.Interop.Excel.Workbook, ByVal SaveAsUI As Boolean, ByRef Cancel As Boolean) Handles Application.WorkbookBeforeSave
Dim activeWorksheet As Excel.Worksheet = Application.ActiveSheet
If activeWorksheet IsNot Nothing Then
Dim nameCell As Excel.Range = activeWorksheet.Range("B2")
nameCell.Value2 = "Hello ExcelAddIn"
End If
End Sub End Class
Private utilities As AddInUtilities
Protected Overrides Function RequestComAddInAutomationService() As Object
If utilities Is Nothing Then
utilities = New AddInUtilities()
End If
Return utilities
End Function
Private Sub ThisAddIn_Startup() Handles Me.Startup
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
'Excel保存時
Private Sub Application_WorkbookBeforeSave(ByVal Wb As Microsoft.Office.Interop.Excel.Workbook, ByVal SaveAsUI As Boolean, ByRef Cancel As Boolean) Handles Application.WorkbookBeforeSave
Dim activeWorksheet As Excel.Worksheet = Application.ActiveSheet
If activeWorksheet IsNot Nothing Then
Dim nameCell As Excel.Range = activeWorksheet.Range("B2")
nameCell.Value2 = "Hello ExcelAddIn"
End If
End Sub End Class
Private utilities As AddInUtilities
Protected Overrides Function RequestComAddInAutomationService() As Object
If utilities Is Nothing Then
utilities = New AddInUtilities()
End If
Return utilities
End Function
5.他のソリューション(ExcelVBA等)に公開するメンバーを宣言するインターフェイスを定義します。 このインターフェイスをアドイン プロジェクトで定義できます。
SampleExcelAddIn1プロジェクトにAddInUtilities.vbを追加
Imports System.Runtime.InteropServices
Imports System.Windows.Forms
<ComVisible(True)> _
Public Interface IAddInUtilities
Sub ImportData()
End Interface
<ComVisible(True)> _
<ClassInterface(ClassInterfaceType.None)> _
Public Class AddInUtilities
Implements IAddInUtilities
' This method tries to write a string to cell A1 in the active worksheet.
Public Sub ImportData() Implements IAddInUtilities.ImportData
Dim activeWorksheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet
If activeWorksheet IsNot Nothing Then
Dim range1 As Excel.Range = activeWorksheet.Range("C3")
range1.Value2 = "Hello ExcelAddIn ボタン1アクション"
MessageBox.Show("ボタン1アクションでC3セルに値を設定")
End If
End Sub
End Class
Imports System.Windows.Forms
<ComVisible(True)> _
Public Interface IAddInUtilities
Sub ImportData()
End Interface
<ComVisible(True)> _
<ClassInterface(ClassInterfaceType.None)> _
Public Class AddInUtilities
Implements IAddInUtilities
' This method tries to write a string to cell A1 in the active worksheet.
Public Sub ImportData() Implements IAddInUtilities.ImportData
Dim activeWorksheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet
If activeWorksheet IsNot Nothing Then
Dim range1 As Excel.Range = activeWorksheet.Range("C3")
range1.Value2 = "Hello ExcelAddIn ボタン1アクション"
MessageBox.Show("ボタン1アクションでC3セルに値を設定")
End If
End Sub
End Class
6.Excelにマクロを作成
Excel側
SampleExcelAddIn1.xlsmを新規作成してボタンを配置
ボタンのイベントのマクロを作成
Sub ボタン1_Click()
'すでに"追加シート"シートがあるか確認
If Worksheets.Count = 1 Then
Set wkWorkSheet = Worksheets.Add(after:=Worksheets(Worksheets.Count))
wkWorkSheet.Name = "追加シート"
Else
Dim blShoyomst As Boolean
blShoyomst = False
For i = 1 To Worksheets.Count
Set wkWorkSheet = Worksheets(i)
If wkWorkSheet.Name = "追加シート" Then
blShoyomst = True
wkWorkSheet.Select
Exit For
End If
Next
'あらたに"追加シート"を挿入
If Not blShoyomst Then
Set wkWorkSheet = Worksheets.Add(after:=Worksheets(Worksheets.Count))
wkWorkSheet.Name = "追加シート"
End If
End If
Dim addIn As COMAddIn
Dim automationObject As Object
Set addIn = Application.COMAddIns("SampleExcelAddIn1") '← Visual Studioのアドイン
Set automationObject = addIn.Object
automationObject.ImportData '← 5.で作成したインターフェース
End Sub
'すでに"追加シート"シートがあるか確認
If Worksheets.Count = 1 Then
Set wkWorkSheet = Worksheets.Add(after:=Worksheets(Worksheets.Count))
wkWorkSheet.Name = "追加シート"
Else
Dim blShoyomst As Boolean
blShoyomst = False
For i = 1 To Worksheets.Count
Set wkWorkSheet = Worksheets(i)
If wkWorkSheet.Name = "追加シート" Then
blShoyomst = True
wkWorkSheet.Select
Exit For
End If
Next
'あらたに"追加シート"を挿入
If Not blShoyomst Then
Set wkWorkSheet = Worksheets.Add(after:=Worksheets(Worksheets.Count))
wkWorkSheet.Name = "追加シート"
End If
End If
Dim addIn As COMAddIn
Dim automationObject As Object
Set addIn = Application.COMAddIns("SampleExcelAddIn1") '← Visual Studioのアドイン
Set automationObject = addIn.Object
automationObject.ImportData '← 5.で作成したインターフェース
End Sub
作成したAddInを設定
開発>COMアドイン
8.ボタンクリックしてAddIn実行
2015年7月6日月曜日
SPREAD Enterキーでセルのタブ移動
SPREAD for Windows Forms5.0でEnterキーでセルのタブ移動する設定。
【事象】
汎用機等の利用者が旧システムと同様操作ができるようにEnterキーでセルのタブ移動をするようしたいと言う要求があります。
その設定(コード)を書きとめる。
【環境】
.NET VB (Microsoft Visual Studio 2010(sp1) .NET Framework 4)
SPREAD for Windows Forms Version : 5.0.2025.2008(SP3)(グレープシティ株式会社)
【対応】
以下のコードで対応
Enterキーで移動
コンボボックEnterキー押下でTab移動する
【事象】
汎用機等の利用者が旧システムと同様操作ができるようにEnterキーでセルのタブ移動をするようしたいと言う要求があります。
その設定(コード)を書きとめる。
【環境】
.NET VB (Microsoft Visual Studio 2010(sp1) .NET Framework 4)
SPREAD for Windows Forms Version : 5.0.2025.2008(SP3)(グレープシティ株式会社)
【対応】
以下のコードで対応
Enterキーで移動
Private Sub frmTail_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
Dim im As New FarPoint.Win.Spread.InputMap
'Enterキーで移動を追加
'非編集セルでの[Enter]キーを「次行へ移動」とします
im = vaSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
'編集中セルでの[Enter]キーを「次行へ移動」とします
im = vaSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
End Sub
Dim im As New FarPoint.Win.Spread.InputMap
'Enterキーで移動を追加
'非編集セルでの[Enter]キーを「次行へ移動」とします
im = vaSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
'編集中セルでの[Enter]キーを「次行へ移動」とします
im = vaSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
End Sub
コンボボックEnterキー押下でTab移動する
'コンボボックスオブジェクト
Private WithEvents _Combo As New FarPoint.Win.FpCombo()
'Enterキーが押されたフラグ
Dim bEnterKey As Boolean
Private Sub vaSpread1_EditModeOn(sender As System.Object, e As System.EventArgs) Handles vaSpread1.EditModeOn
'セル型がコンボボックス型の場合は、EditingControlをComboにマッピングする
Dim iRow As Integer = vaSpread1.ActiveSheet.ActiveRowIndex
Dim iCol As Integer = vaSpread1.ActiveSheet.ActiveColumnIndex
If TypeOf (vaSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is FarPoint.Win.Spread.CellType.ComboBoxCellType Then
_Combo = CType(vaSpread1.EditingControl, FarPoint.Win.FpCombo)
End If
End Sub
Private Sub _Combo_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles _Combo.KeyDown
' Enterキーが押された場合にフラグを立てる
bEnterKey = (e.KeyCode = Keys.Enter)
End Sub
Private Sub _Combo_DropDown(ByVal sender As Object, ByVal e As FarPoint.Win.DropDownEventArgs) Handles _Combo.DropDown
' フラグが立っている場合は、DropDown処理をキャンセルする
If Not bEnterKey Then
Return
End If
e.Cancel = bEnterKey
bEnterKey = False
' アクティブセルを右隣に移動
SendKeys.Send("{Tab}")
End Sub
'一覧コンボボックで空白選択だできない対応
Private Sub vaSpread1_ComboSelChange(sender As System.Object, e As FarPoint.Win.Spread.EditorNotifyEventArgs) Handles vaSpread1.ComboSelChange
Dim cb As FarPoint.Win.FpCombo = CType(e.EditingControl, FarPoint.Win.FpCombo)
If cb.SelectedItem.Equals(String.Empty) Then
cb.Clear()
End If
End Sub
Private WithEvents _Combo As New FarPoint.Win.FpCombo()
'Enterキーが押されたフラグ
Dim bEnterKey As Boolean
Private Sub vaSpread1_EditModeOn(sender As System.Object, e As System.EventArgs) Handles vaSpread1.EditModeOn
'セル型がコンボボックス型の場合は、EditingControlをComboにマッピングする
Dim iRow As Integer = vaSpread1.ActiveSheet.ActiveRowIndex
Dim iCol As Integer = vaSpread1.ActiveSheet.ActiveColumnIndex
If TypeOf (vaSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is FarPoint.Win.Spread.CellType.ComboBoxCellType Then
_Combo = CType(vaSpread1.EditingControl, FarPoint.Win.FpCombo)
End If
End Sub
Private Sub _Combo_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles _Combo.KeyDown
' Enterキーが押された場合にフラグを立てる
bEnterKey = (e.KeyCode = Keys.Enter)
End Sub
Private Sub _Combo_DropDown(ByVal sender As Object, ByVal e As FarPoint.Win.DropDownEventArgs) Handles _Combo.DropDown
' フラグが立っている場合は、DropDown処理をキャンセルする
If Not bEnterKey Then
Return
End If
e.Cancel = bEnterKey
bEnterKey = False
' アクティブセルを右隣に移動
SendKeys.Send("{Tab}")
End Sub
'一覧コンボボックで空白選択だできない対応
Private Sub vaSpread1_ComboSelChange(sender As System.Object, e As FarPoint.Win.Spread.EditorNotifyEventArgs) Handles vaSpread1.ComboSelChange
Dim cb As FarPoint.Win.FpCombo = CType(e.EditingControl, FarPoint.Win.FpCombo)
If cb.SelectedItem.Equals(String.Empty) Then
cb.Clear()
End If
End Sub
ExcelCreator 8.0でテンプレ-トの関数が有効にならない
【環境】
.NET VB (Microsoft Visual Studio 2010(sp1) .NET Framework 4)
ExcelCreator 8.0 for .NET(アドバンスソフトウェア株式会社)
【事象】
ExcelCreator 8.0でテンプレ-トで設定したExcelの関数が有効にならない。
ExcelCreatorで生成したExcelブックを一度、開いて対象のセルを選択しEnterキーを押下すると反映される。
Excelブックを開いた時に関数を有効にしたい。
【対応】
以下のコードで対応
HELPの説明
詳細情報がインターネット上で検索できななかった。
.NET VB (Microsoft Visual Studio 2010(sp1) .NET Framework 4)
ExcelCreator 8.0 for .NET(アドバンスソフトウェア株式会社)
【事象】
ExcelCreator 8.0でテンプレ-トで設定したExcelの関数が有効にならない。
ExcelCreatorで生成したExcelブックを一度、開いて対象のセルを選択しEnterキーを押下すると反映される。
Excelブックを開いた時に関数を有効にしたい。
【対応】
以下のコードで対応
ExcelCreator.FullCalcOnLoad = True
HELPの説明
ブックオープン時の再計算の有効モードを設定します。
詳細情報がインターネット上で検索できななかった。
登録:
投稿 (Atom)