LoginSignup
0
1

More than 5 years have passed since last update.

VBA: C#(ASP.Net)向けのDtoメンバコード生成

Posted at

ASP.netのDtoコードを生成するための簡易関数

前提

  • postgreSQLとASP.Netを利用した、Dtoソースコードの生成が目標
  • テーブル定義のExcelシートがあり、そこからVLOOKUP等で必要な順に並べ終えていること
  • 型はVARCHARとINTEGERのみを想定(※)

(※表記が異なったり、DateTime等が必要な場合はソースコードの条件文(l.6~12くらい)を変更)

想定

このようなセル指定に対して

  A B C D E F G
1 論理名 物理名(DBカラム名) 型名 文字列長 Not Null - GetSourceCode
2 サンプル数値 sample_num INTEGER (ここに簡易関数を指定)
3 サンプル文字列 sample_str VARCHAR 1024 (ここに簡易関数を指定)

こうなるのが目標

dtoSample.cs
    /// <summary>
    /// サンプル数値
    /// </summary>
    public int? sample_num { get; set; }

    /// <summary>
    /// サンプル文字列
    /// </summary>
    public string sample_str { get; set; }

完成品

引数

  1. logicName: 論理名(日本語名、DBのコメントに記述する名前)
  2. sourceName: 物理名(DB上のカラム名)
  3. typeStr: カラムの型名
  4. charLng(Optional): VARCHARの場合の文字列長
  5. IsNotNullMark(Optional): Not Nullの場合のテーブル定義上の記号等(空でなければNot Nullとする)

ソースコード

GetDtoCode.bas
Public Function GetDtoCode(ByVal logicName As String, ByVal sourceName As String, _
                            ByVal typeStr As String, _
                            Optional ByVal charLng As Long = 0, _
                            Optional ByVal IsNotNullMark As String = "") As String
    Dim tempType As String

    If typeStr = "VARCHAR" Then
        tempType = "string "
    ElseIf IsNotNullMark <> "" Then
        tempType = "int "
    Else
        tempType = "int? "
    End If

    GetDtoCode = vbTab & "/// <summary>" & vbCrLf & _
                vbTab & "/// " & logicName & vbCrLf & _
                vbTab & "/// </summary>" & vbCrLf & _
                vbTab & "public " & tempType & sourceName & " { get; set; }" & vbCrLf
End Function

実行結果

sample
// 出したいセルに以下のように指定
// 指定順は先述の引数の順になるようにする
G2セル(INTEGER): =GetDtoCode(A2,B2,C2)
G3セル(VARCHAR): =GetDtoCode(A3,B3,C3,D3,E3)

// 結果
"   /// <summary>
    /// サンプル数値
    /// </summary>
    public int? sample_num { get; set; }
"
"   /// <summary>
    /// サンプル文字列
    /// </summary>
    public string sample_str { get; set; }
"

これでG列の出力分をコピーしてテキストエディタで少し手直しすれば完成。
※ソースコードへの貼り付け前に、"(ダブルクォーテーション)を置換等で取り除いてください。
(ファイル出力できるようにすれば必要ない)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1