在MVC分层体系机构的论述中,提到了可以用excel来加速和简化开发。
例如对用户标来说excel表如下:
项目名称
TYTK
制作人
G_Y
时间
2005-07-24
TABLE名
EMPLOYEE_INFO
功能说明
实体类名
备注
编号
字段名称
中文名称
主类型
长度
NULL
备注
1
ID_I
用户编号
YES
int
5
NO
2
UserName_S
工作人员名
varchar
10
3
Password_S
密码
varchar
10
对应的自动生成分层体系结构中的三层的宏如下:
Public Sub CreatParameter()
Dim s As String
Dim max As Integer
Dim ts As String
max = 100
'information
s = 'Namespace business.??' + CStr(Chr(10)) + CStr(Chr(10))
'import packages
s = s + 'public class ' + Trim(Cells(2, 2).Value) + 'Parameter' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'atrribution
For rwIndex = 5 To max
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' '' + Trim(Cells(rwIndex, 3).Value) + CStr(Chr(10))
'在这里添加类型转换
ts = Trim(Cells(rwIndex, 5).Value)
If ts = 'varchar' Then
ts = 'String'
End If
If ts = 'DATETIME' Then
ts = 'String'
End If
If ts = 'int' Then
ts = 'integer'
End If
s = s + ' Private _' + Trim(Cells(rwIndex, 2).Value) + ' as ' + ts + CStr(Chr(10))
End If
Next rwIndex
s = s + CStr(Chr(10)) + CStr(Chr(10))
'set method
For rwIndex = 5 To max
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' '' + Trim(Cells(rwIndex, 3).Value) + '的set方法' + CStr(Chr(10))
s = s + ' Public Function set_' + Trim(Cells(rwIndex, 2).Value) + '(ByVal _' + Trim(Cells(rwIndex, 2).Value) + ' as String) as String' + CStr(Chr(10))
s = s + ' Me._' + Trim(Cells(rwIndex, 2).Value) + '=_' + Trim(Cells(rwIndex, 2).Value) + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10)) + CStr(Chr(10))
End If
Next rwIndex
s = s + CStr(Chr(10))
'get method
For rwIndex = 5 To max
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' '' + Trim(Cells(rwIndex, 3).Value) + '的get方法' + CStr(Chr(10))
s = s + ' Public Function get_' + Trim(Cells(rwIndex, 2).Value) + '() As String ' + CStr(Chr(10))
s = s + ' return Me._' + Trim(Cells(rwIndex, 2).Value) + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10)) + CStr(Chr(10))
End If
Next rwIndex
s = s + CStr(Chr(10))
s = s + 'End Class' + CStr(Chr(10))
s = s + 'End Namespace' + CStr(Chr(10))
Open 'D:\' + Trim(Cells(2, 2).Value) + 'Parameter' + '.vb' For Output As #1
Print #1, s
Close #1
MsgBox 'Success creating!'
End Sub
Public Function get_CreateTable(tablename As String)
Dim m_str As String
Dim tmp_s As String
Dim tmp1_s As String
Dim tmp2_s As String
Dim val_s As String
Dim max As Integer
max = 200
m_str = ''
m_str = m_str + 'if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[' + tablename
m_str = m_str + ']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)' + ' ' + CStr(Chr(13)) + CStr(Chr(10))
m_str = m_str + 'drop table [dbo].[RY_GW_GENERAL]'
m_str = m_str + ' ' + CStr(Chr(13)) + CStr(Chr(10))
m_str = m_str + ' ' + CStr(Chr(13)) + CStr(Chr(10))
m_str = m_str + 'CREATE TABLE ' + tablename + ' (' + CStr(Chr(13)) + CStr(Chr(10))
m_str = m_str + 'ID_I INT IDENTITY (1, 1) NOT NULL,' + CStr(Chr(13)) + CStr(Chr(10))
For rwIndex = 6 To max
tmp_s = Trim(Cells(rwIndex, 2).Value)
If tmp_s <> '' Then
tmp1_s = Trim(Cells(rwIndex, 7).Value)
tmp1_s = UCase(tmp1_s)
If tmp1_s = 'NO' Then
tmp1_s = ' NOT NULL'
Else
tmp1_s = ''
End If
val_s = Trim(Cells(rwIndex, 5).Value)
val_s = UCase(val_s)
If InStr(1, val_s, 'VARCHAR', vbTextCompare) > 0 Then
tmp2_s = Trim(Cells(rwIndex, 6).Value)
If tmp2_s = '' Then tmp2_s = '50'
val_s = tmp_s + ' ' + val_s + ' (' + tmp2_s + ')' + tmp1_s + ','
Else
val_s = tmp_s + ' ' + val_s + tmp1_s + ','
End If
m_str = m_str + val_s + CStr(Chr(13)) + CStr(Chr(10))
End If
Next rwIndex
m_str = m_str + ') ;' + CStr(Chr(13)) + CStr(Chr(10))
get_CreateTable = m_str
End Function
Public Sub CreatTableSqlScript()
Dim m_str As String
Dim tablename As String
Dim seqname As String
tablename = Trim(Cells(2, 2).Value)
m_str = m_str + get_CreateTable(tablename)
Open 'D:\' + tablename + '.txt' For Output As #1
Print #1, m_str
Close #1
MsgBox 'Success creating!'
End Sub
Public Sub CreatEntity()
Dim s As String
Dim max As Integer
Dim ts As String
max = 100
'import packages
s = 'Imports System.Data' + CStr(Chr(10)) + CStr(Chr(10))
s = s + 'Namespace EntityClass' + CStr(Chr(10)) + CStr(Chr(10))
s = s + 'public class ' + Trim(Cells(2, 2).Value) + 'Entity' + CStr(Chr(10))
s = s + ' Inherits BaseEntity' + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' Const ARRAYLENGTH = 100' + CStr(Chr(10))
s = s + ' Dim array1(ARRAYLENGTH) As String' + CStr(Chr(10))
s = s + ' Dim array2(ARRAYLENGTH, 1) As String' + CStr(Chr(10))
s = s + ' Dim sqlarray(ARRAYLENGTH,1) As String' + CStr(Chr(10))
s = s + ' Dim len1 As Integer = 0' + CStr(Chr(10))
s = s + ' Dim len2 As Integer = 0' + CStr(Chr(10))
s = s + ' Dim sqllen As Integer = 0' + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' Private mydataset As New DataSet' + CStr(Chr(10)) + CStr(Chr(10))
'atrribution
For rwIndex = 5 To max
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' '' + Trim(Cells(rwIndex, 3).Value) + CStr(Chr(10))
'在这里添加类型转换
ts = Trim(Cells(rwIndex, 5).Value)
If ts = 'varchar' Then
ts = 'String'
End If
If ts = 'DATETIME' Then
ts = 'String'
End If
'这里修改了int 到string
If ts = 'int' Then
'ts = 'integer'
ts = 'String'
End If
s = s + ' Public ' + Trim(Cells(rwIndex, 2).Value) + ' as ' + ts + CStr(Chr(10))
End If
Next rwIndex
s = s + CStr(Chr(10)) + CStr(Chr(10))
'对Array2赋初值
s = s + ''对Array2赋初值' + CStr(Chr(10))
s = s + ' Private Sub SetArray2()' + CStr(Chr(10))
Dim myindex As Integer
For rwIndex = 5 To max
myindex = rwIndex - 5
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' ' + 'array2(' + Str(myindex) + ', 0)=' + CStr(Chr(34)) + Trim(Cells(rwIndex, 2).Value) + CStr(Chr(34)) + CStr(Chr(10))
End If
Next rwIndex
s = s + CStr(Chr(10)) + CStr(Chr(10))
For rwIndex = 5 To max
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' ' + 'array2(' + Str(rwIndex - 5) + ', 1)=' + Trim(Cells(rwIndex, 2).Value) + CStr(Chr(10))
End If
Next rwIndex
s = s + ' End Sub' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'通过读取数据库中的列名,对array1赋值
s = s + ''通过读取数据库中的列名,对array1赋值' + CStr(Chr(10))
s = s + ' Private Sub SetDBColoum()' + CStr(Chr(10))
s = s + ' LoadDynamicDataset(mydataset)' + CStr(Chr(10))
s = s + ' Dim m_i As Integer = 0' + CStr(Chr(10))
s = s + ' Dim m_len As Integer = 0' + CStr(Chr(10))
s = s + ' m_len = Me.mydataset.Tables.Item(0).Columns.Count' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' For m_i = 0 To m_len - 1' + CStr(Chr(10))
s = s + ' array1(m_i) = Me.mydataset.Tables.Item(0).Columns(m_i).ColumnName.ToString' + CStr(Chr(10))
s = s + ' Next' + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' End Sub' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'通过array1和array2的处理,对sqlarray赋值;最后的结果是sqlarray中,依次对应数据库中的列的值
s = s + ''通过array1和array2的处理,对sqlarray赋值;最后的结果是sqlarray中,依次对应数据库中的列的值' + CStr(Chr(10))
s = s + ' Public Function SetDynamicColoum()' + CStr(Chr(10))
s = s + ' SetArray2()' + CStr(Chr(10))
s = s + ' SetDBColoum()' + CStr(Chr(10))
s = s + ' len1 = 0' + CStr(Chr(10))
s = s + ' len2 = 0' + CStr(Chr(10))
s = s + ' sqllen = 0' + CStr(Chr(10))
s = s + ' Dim i As Integer' + CStr(Chr(10))
s = s + ' Dim j As Integer = 0' + CStr(Chr(10))
s = s + ' For i = 0 To ARRAYLENGTH' + CStr(Chr(10))
s = s + ' If Not array1(i) Is Nothing Then' + CStr(Chr(10))
s = s + ' len1 = len1 + 1' + CStr(Chr(10))
s = s + ' Else' + CStr(Chr(10))
s = s + ' Exit For' + CStr(Chr(10))
s = s + ' End If' + CStr(Chr(10))
s = s + ' Next' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' For i = 0 To ARRAYLENGTH' + CStr(Chr(10))
s = s + ' If Not array2(i, 0) Is Nothing Then' + CStr(Chr(10))
s = s + ' len2 = len2 + 1' + CStr(Chr(10))
s = s + ' Else' + CStr(Chr(10))
s = s + ' Exit For' + CStr(Chr(10))
s = s + ' End If' + CStr(Chr(10))
s = s + ' Next' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' For i = 0 To len1 - 1' + CStr(Chr(10))
s = s + ' For j = 0 To len2 - 1' + CStr(Chr(10))
s = s + ' If array1(i) = array2(j, 0) Then' + CStr(Chr(10))
s = s + ' sqlarray(i, 0) = array2(j, 0)' + CStr(Chr(10))
s = s + ' sqlarray(i,1) = array2(j, 1)' + CStr(Chr(10))
s = s + ' Exit For' + CStr(Chr(10))
s = s + ' End If' + CStr(Chr(10))
s = s + ' Next' + CStr(Chr(10))
s = s + ' Next' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' For i = 0 To ARRAYLENGTH' + CStr(Chr(10))
s = s + ' If Not sqlarray(i,0) Is Nothing Then' + CStr(Chr(10))
s = s + ' sqllen = sqllen + 1' + CStr(Chr(10))
s = s + ' End If' + CStr(Chr(10))
s = s + ' Next' + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'得到对应数据库中的表的信息
s = s + ''得到对应数据库中的表的信息' + CStr(Chr(10))
s = s + ' Public Sub LoadDynamicDataset(ByRef dataset As DataSet)' + CStr(Chr(10))
s = s + ' MyBase.strSql = ' + CStr(Chr(34)) + 'select * from ' + Trim(Cells(2, 2).Value) + CStr(Chr(34)) + CStr(Chr(10))
s = s + ' MyBase.database.SelectSqlSrvRows(dataset, MyBase.strSql)' + CStr(Chr(10))
s = s + ' End Sub' + CStr(Chr(10)) + CStr(Chr(10))
'count
s = s + ' Public Function Count() As Integer' + CStr(Chr(10))
s = s + ' Return Convert.ToInt32(MyBase.database.ReadOneLog(' + CStr(Chr(34)) + 'select count(*) from ' + Trim(Cells(2, 2).Value) + CStr(Chr(34)) + '))'
s = s + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10)) + CStr(Chr(10))
'NEW
s = s + ' Public Sub New()' + CStr(Chr(10))
s = s + ' ' TODO: 在此处添加构造函数逻辑' + CStr(Chr(10))
s = s + ' Me.Init()' + CStr(Chr(10))
s = s + ' SetDynamicColoum()' + CStr(Chr(10))
s = s + ' End Sub' + CStr(Chr(10)) + CStr(Chr(10))
'Init()
s = s + ' Public Function Init()' + CStr(Chr(10))
For rwIndex = 5 To max
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' Me.' + Cells(rwIndex, 2).Value + ' =' + CStr(Chr(34)) + CStr(Chr(34))
s = s + CStr(Chr(10))
End If
Next rwIndex
s = s + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10)) + CStr(Chr(10))
'根据id得到一条信息
s = s + ''根据id得到一条用户信息' + CStr(Chr(10))
s = s + ' Public Shadows Function Load() As Integer' + CStr(Chr(10))
s = s + ' MyBase.strSql = ' + CStr(Chr(34)) + 'select * from ' + Trim(Cells(2, 2).Value) + ' where ID_I=' + CStr(Chr(34)) + '+' + ' Me.ID_I' + CStr(Chr(10))
s = s + ' Dim dt As DataTable = MyBase.database.DataTableResult(strSql)' + CStr(Chr(10))
s = s + ' If (dt.Rows.Count > 0) Then' + CStr(Chr(10))
For rwIndex = 5 To max
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' If FindInSqlarray(' + CStr(Chr(34)) + Cells(rwIndex, 2).Value + CStr(Chr(34)) + ', sqlarray) > 0 Then' + CStr(Chr(10))
s = s + ' ' + Cells(rwIndex, 2).Value + ' = dt.Rows(0)(' + CStr(Chr(34)) + Cells(rwIndex, 2).Value + CStr(Chr(34)) + ').ToString()' + CStr(Chr(10))
s = s + ' End If' + CStr(Chr(10)) + CStr(Chr(10))
End If
Next rwIndex
s = s + ' Return dt.Rows.Count' + CStr(Chr(10))
s = s + ' Else' + CStr(Chr(10))
s = s + ' Return 0' + CStr(Chr(10))
s = s + ' End If' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'添加
s = s + ''添加' + CStr(Chr(10))
s = s + ' Public Shadows Function CreatUser() As Integer' + CStr(Chr(10))
s = s + ' Dim i As Integer' + CStr(Chr(10))
s = s + ' Dim col As String' + CStr(Chr(10))
s = s + ' Dim colval As String' + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' For i = 1 To sqllen - 2' + CStr(Chr(10))
s = s + ' col = col + sqlarray(i, 0) + ' + CStr(Chr(34)) + ',' + CStr(Chr(34)) + CStr(Chr(10))
s = s + ' colval = colval + sqlarray(i, 1) +' + CStr(Chr(34)) + '','' + CStr(Chr(34)) + CStr(Chr(10))
s = s + ' Next' + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' col = col + sqlarray(sqllen - 1, 0)' + CStr(Chr(10))
s = s + ' colval = colval + sqlarray(sqllen - 1, 1)' + CStr(Chr(10))
s = s + ' MyBase.strSql =' + CStr(Chr(34)) + 'insert into ' + Trim(Cells(2, 2).Value) + '(' + CStr(Chr(34)) + '+ col +' + CStr(Chr(34)) + ')' + CStr(Chr(34)) + '+ ' + CStr(Chr(34)) + 'values ('' + CStr(Chr(34)) + '+ colval +' + CStr(Chr(34)) + '')' + CStr(Chr(34))
s = s + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' Return MyBase.database.ExecuteNonQuery(MyBase.strSql)' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'更新
s = s + ''更新' + CStr(Chr(10))
s = s + ' Public Shadows Function Updata() As Integer' + CStr(Chr(10))
s = s + ' Dim i As Integer' + CStr(Chr(10))
s = s + ' Dim str As String' + CStr(Chr(10))
s = s + ' For i = 1 To sqllen - 2' + CStr(Chr(10))
s = s + ' str = str + sqlarray(i, 0) + ' + CStr(Chr(34)) + '='' + CStr(Chr(34)) + '+ sqlarray(i, 1) +' + CStr(Chr(34)) + '',' + CStr(Chr(34)) + CStr(Chr(10))
s = s + ' Next' + CStr(Chr(10))
s = s + ' str = str + sqlarray(sqllen - 1, 0) +' + CStr(Chr(34)) + '='' + CStr(Chr(34)) + '+ sqlarray(sqllen - 1, 1) +' + CStr(Chr(34)) + ''' + CStr(Chr(34)) + CStr(Chr(10))
s = s + ' MyBase.strSql =' + CStr(Chr(34)) + 'update ' + Trim(Cells(2, 2).Value) + ' set ' + CStr(Chr(34)) + '+ str +' + CStr(Chr(34)) + ' where ID_I=' + CStr(Chr(34)) + '+ Me.ID_I' + CStr(Chr(10))
s = s + ' Return MyBase.database.ExecuteNonQuery(MyBase.strSql)' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'删除
s = s + ' '删除' + CStr(Chr(10))
s = s + ' Public Shadows Function Delete() As Integer' + CStr(Chr(10))
s = s + ' MyBase.strSql =' + CStr(Chr(34)) + 'delete from ' + Trim(Cells(2, 2).Value) + ' where ID_I=' + CStr(Chr(34)) + '+ Me.ID_I.ToString()' + CStr(Chr(10))
s = s + ' Return MyBase.database.ExecuteNonQuery(MyBase.strSql)' + CStr(Chr(10))
s = s + ' End Function'
s = s + CStr(Chr(10)) + CStr(Chr(10))
'setentity
s = s + ''setentity' + CStr(Chr(10))
s = s + ' Public Function setEntity(ByRef myParameter As business.??.??) As Integer' + CStr(Chr(10))
s = s + ' Try' + CStr(Chr(10))
For rwIndex = 5 To max
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' ' + Cells(rwIndex, 2).Value + '=' + 'myParameter.get_' + Cells(rwIndex, 2).Value + CStr(Chr(10))
End If
Next rwIndex
s = s + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' SetDynamicColoum()' + CStr(Chr(10))
s = s + ' Catch ex As Exception' + CStr(Chr(10))
s = s + ' Return 0' + CStr(Chr(10))
s = s + ' End Try' + CStr(Chr(10))
s = s + ' Return 1' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'FindInSqlarray
s = s + ''FindInSqlarray' + CStr(Chr(10))
s = s + ' Public Function FindInSqlarray(ByVal prop As String, ByVal sqlarray(,) As String) As Integer' + CStr(Chr(10))
s = s + ' Dim m As Integer = 0' + CStr(Chr(10))
s = s + ' For m = 0 To ARRAYLENGTH' + CStr(Chr(10))
s = s + ' If prop.Equals(sqlarray(m, 0)) Then' + CStr(Chr(10))
s = s + ' Return 1' + CStr(Chr(10))
s = s + ' End If' + CStr(Chr(10))
s = s + ' Next' + CStr(Chr(10))
s = s + ' Return 0' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'根据sql语句查询
s = s + ''根据sql语句查询' + CStr(Chr(10))
s = s + ' Public Function GetObjByQry(ByVal str As String, ByRef mp() As business????) As Integer' + CStr(Chr(10))
s = s + ' MyBase.strSql = ' + CStr(Chr(34)) + 'select * from ' + CStr(Chr(34)) + '+' + CStr(Chr(34)) + Trim(Cells(2, 2).Value) + CStr(Chr(34)) + '+' + CStr(Chr(34)) + ' ' + CStr(Chr(34)) + ' + str' + CStr(Chr(10))
s = s + ' Dim dt As DataTable = MyBase.database.DataTableResult(strSql)' + CStr(Chr(10))
s = s + ' Dim m_i As Integer' + CStr(Chr(10))
s = s + ' ReDim mp(dt.Rows.Count - 1)' + CStr(Chr(10))
s = s + ' If (dt.Rows.Count > 0) Then' + CStr(Chr(10))
s = s + ' For m_i = 0 To dt.Rows.Count() - 1' + CStr(Chr(10))
s = s + ' mp(m_i) = New business.????' + CStr(Chr(10))
For rwIndex = 5 To max
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' If FindInSqlarray(' + CStr(Chr(34)) + Cells(rwIndex, 2).Value + CStr(Chr(34)) + ', sqlarray) > 0 Then' + CStr(Chr(10))
s = s + ' mp(m_i).set_' + Cells(rwIndex, 2).Value + '(dt.Rows(m_i)(' + CStr(Chr(34)) + Cells(rwIndex, 2).Value + CStr(Chr(34)) + ').ToString())' + CStr(Chr(10))
s = s + ' End If' + CStr(Chr(10))
End If
Next rwIndex
s = s + ' Next' + CStr(Chr(10))
s = s + ' Else' + CStr(Chr(10))
s = s + ' Return 0' + CStr(Chr(10))
s = s + ' End If' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'结束
s = s + CStr(Chr(10))
s = s + 'End Class' + CStr(Chr(10))
s = s + 'End Namespace' + CStr(Chr(10))
Open 'D:\' + Trim(Cells(2, 2).Value) + '.vb' For Output As #1
Print #1, s
Close #1
MsgBox 'Success creating!'
End Sub
Public Sub CreatLimits()
Dim s As String
Dim max As Integer
Dim ts As String
max = 100
'information
s = s + 'Imports System' + CStr(Chr(10))
s = s + 'Imports System.Data' + CStr(Chr(10))
s = s + 'Imports System.Web' + CStr(Chr(10))
s = 'Namespace business.??' + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' public class ' + Trim(Cells(2, 2).Value) + 'Limits' + CStr(Chr(10))
s = s + ' Private ' + Trim(Cells(2, 2).Value) + ' As New' + ' EntityClass.' + Trim(Cells(2, 2).Value) + 'Entity' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' Public Sub New()' + CStr(Chr(10))
s = s + ' ' TODO: 在此处添加构造函数逻辑' + CStr(Chr(10))
s = s + ' End Sub' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'按id得到纪录
s = s + ''按id得到纪录' + CStr(Chr(10))
s = s + ' Public Function GetObjById(ByVal myid As String) As ' + Trim(Cells(2, 2).Value) + 'Parameter' + CStr(Chr(10))
s = s + ' Me.' + Trim(Cells(2, 2).Value) + '.ID_I = myid' + CStr(Chr(10))
s = s + ' If (Me.' + Trim(Cells(2, 2).Value) + '.Load() > 0) Then' + CStr(Chr(10))
s = s + ' Dim mp As ' + Trim(Cells(2, 2).Value) + 'Parameter' + ' = New ' + Trim(Cells(2, 2).Value) + 'Parameter' + CStr(Chr(10))
For rwIndex = 5 To max
If Cells(rwIndex, 2).Value <> '' Then
s = s + ' mp.set_' + Trim(Cells(rwIndex, 2).Value) + '(Me.' + Trim(Cells(2, 2).Value) + '.' + Trim(Cells(rwIndex, 2).Value) + ')' + CStr(Chr(10))
End If
Next rwIndex
s = s + CStr(Chr(10)) + CStr(Chr(10))
s = s + ' Return mp' + CStr(Chr(10))
s = s + ' Else' + CStr(Chr(10))
s = s + ' Return Nothing' + CStr(Chr(10))
s = s + ' End If' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'增加
s = s + ''增加' + CStr(Chr(10))
s = s + ' Public Function AddObj(ByVal myaddobj As ' + Trim(Cells(2, 2).Value) + 'Parameter)' + CStr(Chr(10))
s = s + ' Me.' + Trim(Cells(2, 2).Value) + '.setEntity(myaddobj)' + CStr(Chr(10))
s = s + ' Try' + CStr(Chr(10))
s = s + ' Me.' + Trim(Cells(2, 2).Value) + '.CreatUser()' + CStr(Chr(10))
s = s + ' Catch ex As Exception' + CStr(Chr(10))
s = s + ' End Try' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'更新
s = s + ''更新' + CStr(Chr(10))
s = s + ' Public Function UpdateObj(ByVal upobj As ' + Trim(Cells(2, 2).Value) + 'Parameter)' + CStr(Chr(10))
s = s + ' Me.' + Trim(Cells(2, 2).Value) + '.setEntity(upobj)' + CStr(Chr(10))
s = s + ' Try' + CStr(Chr(10))
s = s + ' Me.' + Trim(Cells(2, 2).Value) + '.Updata()' + CStr(Chr(10))
s = s + ' Catch ex As Exception' + CStr(Chr(10))
s = s + ' End Try' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'删除
s = s + ''删除' + CStr(Chr(10))
s = s + ' Public Function DelObj(ByVal mydelobj As ' + Trim(Cells(2, 2).Value) + 'Parameter)' + CStr(Chr(10))
s = s + ' Me.' + Trim(Cells(2, 2).Value) + '.setEntity(mydelobj)' + CStr(Chr(10))
s = s + ' Try' + CStr(Chr(10))
s = s + ' Me.' + Trim(Cells(2, 2).Value) + '.Delete()' + CStr(Chr(10))
s = s + ' Catch ex As Exception' + CStr(Chr(10))
s = s + ' End Try' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'根据sql查询语句查询
s = s + ''根据sql查询语句查询' + CStr(Chr(10))
s = s + ' Public Function GetObjByQry(ByVal str As String) As ' + Trim(Cells(2, 2).Value) + 'Parameter()' + CStr(Chr(10))
s = s + ' Dim objlen As Integer' + CStr(Chr(10))
s = s + ' Dim m_i As Integer' + CStr(Chr(10))
s = s + ' Dim mp(objlen - 1) As ' + Trim(Cells(2, 2).Value) + 'Parameter' + CStr(Chr(10))
s = s + ' objlen = Me.' + Trim(Cells(2, 2).Value) + '.GetObjByQry(str, mp)' + CStr(Chr(10))
s = s + ' Return mp' + CStr(Chr(10))
s = s + ' End Function' + CStr(Chr(10))
s = s + CStr(Chr(10)) + CStr(Chr(10))
'结束
s = s + CStr(Chr(10))
s = s + 'End Class' + CStr(Chr(10))
s = s + 'End Namespace' + CStr(Chr(10))
Open 'D:\' + Trim(Cells(2, 2).Value) + 'Limits' + '.vb' For Output As #1
Print #1, s
Close #1
MsgBox 'Success creating!'
End Sub
可以看到,宏只不过是用来根据excel中的内容拼字符串,当然还要首先对各个层中的文件结构以及功能有清楚的了解,一但宏编写好了,那么将极大地提高开发速度。