I-Tech Solutions, meeting tomorrow's challenges today!

Technology Innovators

I-Tech Solutions, Inc., founded in 2005, is an Iowa-based IT consulting firm specializing in Microsoft technologies such as .Net and SQL Server.

I-Tech specializes in technology innovations and applied business solutions. Whether you need help with your existing system or you need help creating a new system, I-Tech is your answer. We are committed to finding ways to improve your productivity and reduce your costs with user-friendly, state-of-the-art solutions.

The I-Tech team provides expert technical support. The team is responsive to your requirements and proactive in researching superior alternatives. Exceeding your goals will be our mission.

The I-Tech Advantage

  • Des Moines metro-based company
  • Professional, dependable and knowledgeable personnel
  • Expert technical support
  • Assurance of prompt on site response
  • Problem solvers and cost savers

RecentPosts

SQL Server - Counting Search Text in a String

by Ben Johnston 14. May 2012 16:06

SQL Server includes a number of system functions that facilitate the manipulation, retrieval and modification of text data. It is usually possible to solve most text searching or modification tasks using the built in functions. Some tasks are difficult to write using pure TSQL or they are just difficult to maintain. Fortunately, Microsoft .NET contains an extensive library of easy to use text functions.

One function that I recently needed was counting the number of times a search string was present in another string. In this particular instance I was searching the metadata tables to find and count the number of times other functions or keywords were used in stored procedures on a server. This could be written in a User Defined Function using TSQL and PATINDEX in a loop. I chose to create the function as a CLR instead, using VB.NET. It is a very clean solution and only requires a few lines of code.

 

<Microsoft.SqlServer.Server.SqlFunction()> _
        Public Shared Function fnStringCountCLR(ByVal Source As String, ByVal Search As String) As SqlInt32
            If String.IsNullOrEmpty(Source) Or String.IsNullOrEmpty(Search) Then Return SqlInt32.Null

            Dim intCount As SqlInt32 = 0
            Dim intIndex As Integer = 0

            Do
                intIndex = Source.IndexOf(Search, intIndex)
                If intIndex = -1 Then Exit Do
                intIndex += Len(Search)
                intCount += 1
            Loop

            Return intCount
        End Function

 

Simply add this function to an existing CLR class and deploy or create a new CLR solution. I have also included the binary - but always use caution deploying binary code on your servers from sources that are unknown or you do not trust.

 

CREATE ASSEMBLY [clrSearch]
AUTHORIZATION [dbo]
FROM 0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C0104006B9BB64F0000000000000000E00002210B01080000080000000E0000000000008E27000000200000004000000000400000200000000200000400000000000000040000000000000000A0000000040000000000000200408500001000001000000000100000100000000000001000000000000000000000003827000053000000006000003008000000000000000000000000000000000000008000000C000000004000001C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000082000004800000000000000000000002E7465787400000094070000002000000008000000040000000000000000000000000000200000602E736461746100006B0000000040000000020000000C0000000000000000000000000000400000C02E727372630000003008000000600000000A0000000E0000000000000000000000000000400000402E72656C6F6300000C00000000800000000200000018000000000000000000000000000040000042000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070270000000000004800000002000500B82000008006000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002602280100000A00002A00001330030050000000010000110002280200000A03280200000A602C087E0300000A0A2B3616280400000A0B160C000203086F0500000A0C08153303002B180803280600000AD60C0717280400000A280700000A0B2BD8070A2B00062A42534A4201000100000000000C00000076322E302E35303732370000000005006C00000028020000237E000094020000E002000023537472696E6773000000007405000008000000235553007C0500001000000023475549440000008C050000F400000023426C6F620000000000000002000001471502000900000000FA0133001600000100000013000000020000000200000002000000150000000E0000000100000001000000030000000000D10201000000000006004F0048000E007D0068000600A50048000A00D30013000600FE00EB000E0036011B0106004B01EB001F005F01000006008E016E010600AE016E010600EB01CC010600F901CC0106000D02480006003502230206005002230206006B02230206008402230206009D0223020600BA02230200000000010000000000010001000100000029003E0005000100010050200000000006185600130001005C20000000001600860017000100000001009700000002009E000900560013001900AC001E001100BA0023001100BF0027001900CB002D002100DB0033001100DF003800290056001300310056001300390056004E00490056005400510056001300590056005900610056005E00690056005E007100560059007900560059008100560059008900560059009100560059009900560059002000430049002E007300BE002E00530063002E005B006C002E00630075002E006B0094002E008B00CA002E007B00C4002E008300BE002E009B00BE002E00AB00E2002E009300E2002E00A300BE0040004B00490041000480000001000000A911055B0000000000003E00000002000000000000000000000001000A00000000000800000000000000000000000A0013000000000002000000000000000000000001005C00000000000000003C4D6F64756C653E006D73636F726C6962004D6963726F736F66742E56697375616C42617369630055736572446566696E656446756E6374696F6E7300636C725365617263680053797374656D004F626A656374002E63746F720053797374656D2E446174610053797374656D2E446174612E53716C54797065730053716C496E74333200666E537472696E67436F756E74434C5200536F757263650053656172636800537472696E670049734E756C6C4F72456D707479004E756C6C006F705F496D706C6963697400496E6465784F6600537472696E6773004C656E006F705F4164646974696F6E0053797374656D2E446961676E6F73746963730044656275676765724E6F6E55736572436F6465417474726962757465004D6963726F736F66742E53716C5365727665722E5365727665720053716C46756E6374696F6E4174747269627574650044656275676761626C6541747472696275746500446562756767696E674D6F6465730053797374656D2E52756E74696D652E436F6D70696C6572536572766963657300436F6D70696C6174696F6E52656C61786174696F6E734174747269627574650052756E74696D65436F6D7061746962696C6974794174747269627574650053797374656D2E52756E74696D652E496E7465726F705365727669636573004775696441747472696275746500436F6D56697369626C6541747472696275746500434C53436F6D706C69616E744174747269627574650053797374656D2E5265666C656374696F6E00417373656D626C7954726164656D61726B41747472696275746500417373656D626C79436F7079726967687441747472696275746500417373656D626C7950726F6475637441747472696275746500417373656D626C79436F6D70616E7941747472696275746500417373656D626C794465736372697074696F6E41747472696275746500417373656D626C795469746C6541747472696275746500636C725365617263682E646C6C000000032000000000008B61D2E4070D144D897E8855B463A4CB0008B77A5C561934E08908B03F5F7F11D50A3A0320000106000211090E0E040001020E03061109050001110908052002080E08040001080E080002110911091109070703110911090804010000000520010111210420010108042001010E04200101020801000301000000000801000800000000001E01000100540216577261704E6F6E457863657074696F6E5468726F7773012901002464316435616261322D313463382D343238332D383231382D333836323135663137643736000005010000000005010001000017010012436F7079726967687420C2A920203230313200000E010009636C7253656172636800000000006027000000000000000000007E2700000020000000000000000000000000000000000000000000007027000000000000000000000000000000005F436F72446C6C4D61696E006D73636F7265652E646C6C0000000000FF2500204000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B9BB64F00000000020000004F0000001C4000001C0C000052534453A3350D4A2336C148B37110887C8B1CC301000000633A5C4465765C434C525C636C725365617263685C636C725365617263685C6F626A5C44656275675C636C725365617263682E706462000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030003000000280000800E000000480000801000000060000080000000000000000000000000000002000200000078000080030000009000008000000000000000000000000000000100007F0000A80000800000000000000000000000000000010001000000C00000800000000000000000000000000000010000000000D80000000000000000000000000000000000010000000000E80000000000000000000000000000000000010000000000F8000000000000000000000000000000000001000000000008010000F8630000E80200000000000000000000E06600002801000000000000000000000868000022000000000000000000000018610000E00200000000000000000000E00234000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE0000010000000100055BA91100000100055BA9113F000000000000000400000002000000000000000000000000000000440000000100560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000000B00440020000010053007400720069006E006700460069006C00650049006E0066006F0000001C02000001003000300030003000300034006200300000003C000A000100460069006C0065004400650073006300720069007000740069006F006E000000000063006C007200530065006100720063006800000040000F000100460069006C006500560065007200730069006F006E000000000031002E0030002E0034003500320031002E0032003300330030003100000000003C000E00010049006E007400650072006E0061006C004E0061006D006500000063006C0072005300650061007200630068002E0064006C006C0000004800120001004C006500670061006C0043006F007000790072006900670068007400000043006F0070007900720069006700680074002000A900200020003200300031003200000044000E0001004F0072006900670069006E0061006C00460069006C0065006E0061006D006500000063006C0072005300650061007200630068002E0064006C006C00000034000A000100500072006F0064007500630074004E0061006D0065000000000063006C007200530065006100720063006800000044000F000100500072006F006400750063007400560065007200730069006F006E00000031002E0030002E0034003500320031002E00320033003300300031000000000048000F00010041007300730065006D0062006C0079002000560065007200730069006F006E00000031002E0030002E0034003500320031002E003200330033003000310000000000280000002000000040000000010004000000000080020000000000000000000000000000000000000000000000008000008000000080800080000000800080008080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007777777777777777777777777777700444444444444444444444444444447004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF47004FFFFFFFFFFFFFFFFFFFFFFFFFFF4700488888888888888888888888888847004444444444444444444444444444470044C4C4C4C4C4C4C4C4C4ECECE49747004CCCCCCCCCCCCCCCCCCCCCCCCCCC40000444444444444444444444444444000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000018000000180000001800000018000000180000001800000018000000180000001800000018000000180000001800000018000000180000001800000018000000180000001800000018000000180000001800000018000000180000003C0000007FFFFFFFFFFFFFFFFFFFFFFFF2800000010000000200000000100040000000000C0000000000000000000000000000000000000000000000000008000008000000080800080000000800080008080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000000000000000077777777777777744444444444444474FFFFFFFFFFFF8474FFFFFFFFFFFF8474FFFFFFFFFFFF8474FFFFFFFFFFFF8474FFFFFFFFFFFF8474FFFFFFFFFFFF8474FFFFFFFFFFFF8474FFFFFFFFFFFF84748888888888888474CCCCCCCCCCCCC47C4444444444444C000000000000000000000000000000000FFFF000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000FFFF0000FFFF00000000010002002020100001000400E8020000020010101000010004002801000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000C000000903700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
WITH PERMISSION_SET = SAFE
GO

 

CREATE FUNCTION [dbo].[fnStringCountCLR](@Source [nvarchar](4000), @Search [nvarchar](4000))
RETURNS [int] WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [clrSearch].[clrSearch.UserDefinedFunctions].[fnStringCountCLR]
GO




Change the name of the assembly if needed.


Simple Usage:

SELECT dbo.fnStringCountCLR('SQL Server CLR test functionality','er') AS StringCount
GO
StringCount
-----------
2

(1 row(s) affected)

Example 2 - finding stored procedures with 'EXEC'. Change the database specified to the correct database for your deploypment (Tools is the database listed below):

USE AdventureWorks
GO

SELECT 
	name
	,Tools.dbo.fnStringCountCLR(text,'EXEC') ExecCount
FROM sys.objects so
	INNER JOIN sys.syscomments sc
		ON so.object_id = sc.id
WHERE so.type = 'p'
GO
name                      ExecCount
------------------------- -------------------------
uspPrintError                0                        
uspLogError                  1                        
uspGetBillOfMaterials        0                        
uspGetEmployeeManagers       0                        
uspGetManagerEmployees       0                        
uspGetWhereUsedProductID     0                        
uspUpdateEmployeeHireInfo    2                        
uspUpdateEmployeeLogin       2                        
uspUpdateEmployeePersonal    2                        

(9 row(s) affected)

Tags: , , , , ,

SQL Server | SQL Server

SQL Server - Counting all the objects on a server

by Ben Johnston 26. April 2012 12:16

 

A client recently asked for a count of all the data objects on a SQL Server instance so they could size an upcoming project. This script uses the sp_msforeachdb function to iterate through all databases and retrieve a summary of the objects by type, by database. A PIVOT is then used to summarize the data.

 

Declaring variables and temporary table for storage:

 Defining the SQL statement used to get the metadata:

The "?" is used by sp_msforeachdb to reference the current database. The defined SQL statement is executed for each database on the server. You must have appropriate permissions in each database to run the defined query.

 

Just running the above statement is useful if you are going to put the output into a report and PIVOT the data later, or if you are going to store the data for future reference. If you want a quick report directly out of SQL the data can be pivoted and output.

Without modifying the data it looks like this:

 

The output is fine, but not as useful as it could be if the object types were defined. The PIVOT function below summarized the object type for each database and puts the correct description on each type. The list of types used in the script was taken from the MSDB site (http://msdn.microsoft.com/en-us/library/ms190324.aspx).

 

This provides output that is usable as-is:

 

The complete script is below:

COUNT_ObjectCountAllDatabase.sql (2.41 kb)

 

Welcome to the I-Tech Blog

by I-Tech 21. October 2011 07:25

We’ve recently redesigned our website to make use of new internet technologies, such as HTML5 and jQuery.  As part of the redesign, we’ve also included a blogging platform, allowing all I-Tech employees to share ideas, tech tips, and projects with the world.

This new design really lets us display our expertise.  Yes, you can read about our knowledge and experience on the site, but by navigating through the site and posting comments in our blog, you are actually experiencing it.

The navigation menu uses jQuery to smoothly guide you through the site, every page is laid out using the newest HTML5 standards, and the blog passes data back and forth from SQL Server 2008 using ASP.NET.

By checking back occasionally to read our blog entries, not only will you learn helpful tech tips, you’ll also be able to learn about the individual people who make up I-Tech.  If you’d like to put some of this expertise to work on your business or website, please visit the contact page.

Please let us know what you think of the new site in the comments below.

 

-The I-Tech Team

Tags:

Application and Website

I-Tech consultants bring a wide range of programming talent to the table. Whether you need to enhance your existing system, solve problems, or convert to the latest technology. We specialize in Windows-based and Internet-based solutions.

Do you have old application software that you would like to see transformed into a .Net application? Maybe you have an Excel VBA solution that you have outgrown. How about an old website that needs replacement?

  • Microsoft .Net – C#, VB.Net, ASP.Net, ADO.Net
  • Microsoft Windows – XP, Windows Server 2003, Windows Server 2008, Vista, Windows 7, Windows 8
  • Application software – design, development, enhancement, conversion
  • Internet – website development, web application development, web services – design, develop, migration

Database

Let I-Tech help you with your database performance problems, enhancements, system design, and auditing. We specialize in Microsoft SQL Server 2005, 2008, and 2012.

Maybe you have an older SQL Server database that you need to migrate to a new platform. Do you have a new Windows server and need help moving your database system to the new platform? Have you outgrown your old MS Access or Excel system and want to transition to SQL Server. Maybe you have another database system and want to replace it with Microsoft SQL Server. Are you are experiencing security issues with your SQL Server database and need someone to solve them for you. Out of disk space and need purchasing advice? I-Tech can help.

  • Microsoft SQL Server 2005 / 2008 / 2012 – T-SQL, Stored Procedures, CLR, Triggers, Constraints, Views, Scalar Functions, Table Functions, Security
  • MS SQL Server design, development, enhancement, migration
  • MS Access and Excel migration to SQL Server
  • Other database migration to SQL Server

I-Tech Consultants

I-Tech consultants have a wide-range of experience but our specialties include the Microsoft .Net Framework and SQL Server. We have created innovative system solutions for variety of businesses from financial institutions to manufacturing companies.

.Net Framework Specialists Our consultants have been working with the Microsoft .Net Framework since its inception. Proficient with C#, VB.Net, and ASP.Net, we build applications and web sites for small, medium, and large businesses.

SQL Server Specialists Our consultants have been working with Microsoft SQL Server since version 6.5. We are experts in SQL Server 2005 / 2008 / 2012, SSIS, SSRS, TSQL, administration and auditing of SQL Server installations. Whether you need database design, data conversion from another database platform, server migration, system audit, or enhancing an existing database, I-Tech Solutions can help

I-Tech Solutions

I-Tech Solutions, Inc. is an independently-owned, Iowa-based IT Consulting firm serving the finest innovative and progressive companies. Our team brings a wealth of diverse experience including

  • Microsoft .Net – C#, VB.Net, ASP.Net, ADO.Net
  • Microsoft SQL Server 2005 / 2008 / 2012 – SSMS, SSIS, SSAS, SSRS, T-SQL, Stored Procedures, CLR, Triggers, Constraints, Views, Scalar Functions, Table Functions, OLAP, OLTP, Data Marts, Data Warehousing, Cubes, Data Mining, Security, Administration
  • Microsoft Windows – XP, Windows Server 2003, Windows Server 2008, Vista, Windows 7, Windows 8
  • Microsoft Office – VBA, Excel, Word, Access, Outlook
  • Crystal Reports - Version 8.0 and above – migration to SSRS
  • Classic VB6 – conversion to VB.Net
  • Quality Assurance – automated QA, system auditing, QA Test Plans
  • Business Analysis – Business Requirements, Systems Design, Specifications
  • Internet – website development, web application development, web services
  • Applications – development, enhancement, QA
  • Technical Writing – web-based, PDF

I-Tech is founded on the premise of building long-term relationships with our clients and providing them with powerful and quality results. No matter the size of your business, we have the expertise to help you with your software and database needs.

Our goal is to help your business operate more efficiently by providing you with the automated system you need, solving your problems, adding new capability, eliminating waste, and improving productivity.

Business Intelligence

Extract information from your business data in a way that enables you to make intelligent business decisions. Analyze the facts about the performance of your business such as cost and revenue and the factors that influence them through data mining. Automate your ETL (Extract, Transform, and Load) process for effortless and consistent data processing. Generate automated reports and on-demand reports. Customize your data processing with stored procedures, functions and CLRs. Secure confidential information by creating views specific to the user role. Build a data warehouse to improve processing, decrease complexity, and improve concurrency.

  • Microsoft SQL Server 2005/2008/2012 – SSIS, SSAS, SSRS, OLAP, OLTP, Data Mart, Data Warehouse, Cubes, Data Mining
  • ETL (Extract, Transform, and Load) – extracting data from multiple sources, data conversion to a consistent format, applying business rules, filtering, splitting or merging, validating data with automated QA rules, loading data into a data warehouse
  • SSIS (SQL Server Integration Services) – ETL solutions, manage SQL Server databases, business intelligence, copy data from one SQL Server instance to another, populate data warehouses and data marts, automate system administration functions such as backups
  • SSAS (SQL Server Analysis Services) – online analytical processing, data mining, OLAP, Cubes
  • SSRS (SQL Server Reporting Services) – create, deploy and manage reports, schedule reports, on-demand reports, ad hoc reports
  • OLTP (Online Transaction Processing) – operations, business strategy, master data, transactions
  • OLAP (Online Analytical Processing) – data mining, data warehouse, analytics, decision making, cubes

Conversion and Migration

Computer systems are ever-changing entities. Systems become obsolete as new technology replaces old. I-Tech can help. Do you have an old Windows server that you are replacing with a new system? Maybe you have an old software application that needs to be rewritten in .Net. Want to convert your old database to MS SQL Server? Is that old ASP, PHP, or FrontPage website holding you back? Let I-Tech convert it to ASP.Net.

Perhaps you already have a team to do the conversion but you need someone to oversee the process or write the requirements document. I-Tech can help.

  • Microsoft Office – VBA, Excel, Word, Access, Outlook
  • Crystal Reports - Version 8.0 and above – migration to SSRS
  • Classic VB6 – conversion to VB.Net
  • Legacy application and database conversions
  • Website conversions and upgrades

Postal address

I-Tech Solutions, Inc.
9001 Hickman Rd, Suite 340
Urbandale, IA 50322
Principal Consultant
Ben Johnston
Phone: (515) 707-4345
e-Mail: Ben.Johnston@ITechDM.com
Account Manager
Billl Spear
Phone: (515)943-6603
e-Mail: Bill.Spear@ITechDM.com

Contact form