> ## Content Index
> Fetch the complete content index at: https://nolongerset.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# VBA to T-SQL via TDD: Step 8
- URL: https://nolongerset.com/vba-to-tsql-via-tdd-step-8/
- Published: 2021-09-16T03:30:04.000Z
- Updated: 2026-05-08T13:02:23.000Z
- Description: Step 8. Alter the scalar function to address failures
- Author: Mike Wolfe
- Tags: VBA to T-SQL via TDD, #Import 2026-05-20 02:59

*This is Part 1 of [my series](https://nolongerset.com/vba-to-tsql-via-tdd/) on converting a VBA function to a SQL Server scalar function using test driven development. As a proof of concept, I will be [re-implementing the VBA Round function](https://nolongerset.com/trust-but-verify/) (which uses bankers rounding) as a SQL Server scalar function.*

The key to test-driven development is to start with enough tests to cover every anticipated scenario.

If you do that, then the rest is easy. 

1. Review the failed tests
2. Write code to address the failures
3. Re-run the tests
4. If all tests pass, you're done; otherwise, return to step 1

## Banker's Rounding Example

In [Step 7](https://nolongerset.com/vba-to-tsql-via-tdd-step-7/), we ran our [test query](https://nolongerset.com/vba-to-tsql-via-tdd-step-6/) to verify that all the tests fail when running against a [dummy function](https://nolongerset.com/vba-to-tsql-via-tdd-step-5/) that is hard-coded to always return zero. The test query returned 17 rows. In other words, 17 of our 19 test cases failed....which means that **two test cases passed even with the dummy function**!

![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/09/image-51.png)

Here's our table of test data. It turns out that a dummy function that always returns zero *can* pass some tests. As my high school basketball coach used to say, "Even a blind squirrel finds an acorn once in awhile."

### Addressing the failing tests

Let's start by updating the scalar function to use SQL Server's built-in rounding function. If I didn't already know better, it would be reasonable to believe that using the Round function in T-SQL would generate identical results to the Round function in VBA.

```sql
ALTER FUNCTION [dbo].[VBA_Round](
    @OriginalVal sql_variant,
    @RoundDigits int
)
RETURNS float
AS
BEGIN
    RETURN Round(Cast(@OriginalVal as float), @RoundDigits)
END;
```

WARNING! This is a work-in-progress. It is **NOT** a working prototype for a T-SQL banker's rounding function. (But we will get there.)

---

### Referenced articles

[How to Convert a VBA Function to a SQL Server Scalar FunctionMS Access Developers Can Remove All the Risk From This Complex Process With These 3 Words![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/09/caterpillars-2869783_1920.jpg)](https://nolongerset.com/vba-to-tsql-via-tdd/)

[Trust But VerifyWhat Ronald Reagan’s Words Can Teach Us About the Sample Code We Find on the Internet![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/09/president-67550_1920.jpg)](https://nolongerset.com/trust-but-verify/)

[VBA to T-SQL via TDD: Step 7Step 7\. Execute the test query in SQL Server to verify it fails![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/09/Step7.png)](https://nolongerset.com/vba-to-tsql-via-tdd-step-7/)

[VBA to T-SQL via TDD: Step 6Step 6\. Build a test query in SQL Server to return failing tests![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/09/Step6.png)](https://nolongerset.com/vba-to-tsql-via-tdd-step-6/)

[VBA to T-SQL via TDD: Step 5Step 5\. Create a dummy scalar function in SQL Server![](https://nolongerset.com/favicon.png)No Longer SetMike Wolfe![](https://storage.ghost.io/c/eb/d7/ebd732c1-5f03-4f07-b386-5d08557e15c9/content/images/2021/09/Step5.png)](https://nolongerset.com/vba-to-tsql-via-tdd-step-5/)