Call it a code generator, software factory, or just a clever script. If you can write code that writes code - you win, even if just a small victory for humans in this contest we call software development.
For example, I've been working on an ASP.NET application which contains many data entry screens. You know the kind: very simple, table-format with a label and a textbox of a certain width, that may or may not require some validation. In other words, a whole lot of markup like this:
<tr>
<td class="EditLabel">Number</td>
<td class="Edit">
<asp:TextBox ID="txtNumber" runat="Server" Width="200px" MaxLength="20"></asp:TextBox>
</td>
</tr>
Now, if you have to type the above more than once or twice, you will go insane (been there, gone there). More importantly, you will probably introduce a bug or two. So, I opened up SQL Server 2005 Management Studio and wrote the following T-SQL code:
USE SomeDB
GO
DECLARE @Table varchar(128)
DECLARE @Column varchar(128)
DECLARE @Width varchar(10)
DECLARE @Length int
DECLARE @Type int
SET @Table = 'Employer' -- Pass this as a parameter
DECLARE ColumnCursor CURSOR FOR
SELECT C.Name, C.Max_Length, C.User_Type_ID FROM Sys.Columns C
INNER JOIN Sys.Tables T ON C.Object_ID = T.Object_ID
WHERE T.Name = @Table
ORDER BY Column_ID
OPEN ColumnCursor
FETCH NEXT FROM ColumnCursor INTO @Column, @Length, @Type
WHILE @@FETCH_STATUS = 0
BEGIN
IF @Type <> 36 -- No GUIDs
IF @Length < 0 SET @Length = 100
IF @Length < 10
SET @Width = '50px'
ELSE IF @Length < 20
SET @Width = '100px'
ELSE IF @Length < 50
SET @Width = '200px'
ELSE IF @Length < 100
SET @Width = '300px'
ELSE
SET @Width = '400px'
PRINT '<tr>'
PRINT ' <td class="EditLabel">' + @Column + '</td>'
PRINT ' <td class="Edit">'
PRINT ' <asp:TextBox ID="txt' + @Column + '" runat="Server" Width="' + @Width + '" MaxLength="' + CONVERT(varchar(10),@Length) + '"></asp:TextBox>'
PRINT ' </td>'
PRINT '</tr>'
END
CLOSE ColumnCursor
DEALLOCATE ColumnCursor
You get the picture. Feel free to customize this code to introduce additional formatting, a slick UI, or other business rules to the mix.
Remember Me
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.