• ILAsoft.net Blog

    Blog

Hint - Automatic Conference Calls

As the number of mobile, remote, and out-of-office workers rises, the most popular offering stays the same- conference calls. A long 800 number, followed by a pause while it connects you and then a very long random set of numbers followed by a pound- oh, how much we all hate dialing and redialing it oh so many times a day…… but what if there was another way??? A 3rd party app or service you ask? An alternative to phone? NO! Any alternative would bring with it side effects and unnecessary confusion, so why suffer, when you can just use what we ALL already have, are used to, and most importantly what works great for ALL of us?? Solution is most simple: use a different format in your emails, notes, and appointments and let the phone handle it all. The following format will have your phone, as well all other users’ of the conference, dial everything completely automatically with no additional work what so ever: phoneXextension# (and other formats are supported too, as well as additional pauses (X) and special symbols (#, *, etc)). For example: 1-800-111-1111×1234#

Again, the beauty of it is that everyone on the call will benefit from this, no app/service is needed, nor is it limited to a certain make and model/OS of the phone. Free, simple, and universal.

Enjoy!

Read More

SQL - Server Table Search

Previously I have shared an extremely powerful method of finding objects such as procedures, functions, and triggers…but what about tables (or views)? MS SQL is, once again, able to do this quite easily and logically without the need for any expensive and limited 3rd party software:

[syntax_prettify linenums="linenums"]USE MyDataBase;
 SELECT
 TABLES.*
 FROM
 information_schema.columns
 JOIN
 information_schema.tables
 ON COLUMNS.TABLE_NAME = TABLES.TABLE_NAME
 WHERE
 (
 column_name LIKE '%SEARCHNEEDLE%'
 )
 AND TABLE_TYPE <> 'VIEW'[/syntax_prettify]
Read More

SQL - Error Handling

Yet another “new” feature of MS SQL 05 is an often overlooked “error handling”. The Transact-SQL Try…Catch is designed to operate similar to the exception handler in the Visual/.NET languages- if an error occurs inside the TRY block of a query, control is passed to another group of statements that is enclosed in a CATCH block (and on)… Or so it should- the handler will not help with errors of severity 20+, KILLs, and, of course, with various warnings and messages, so be careful and remember to test all of the scenarios right away.
[syntax_prettify linenums=”linenums”]BEGIN TRY
SELECT 1/0
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage
END CATCH
SELECT ‘Continue the run’[/syntax_prettify]

Note that this behavior can also be triggered manually, via the RAISERROR command (notice the spelling, with only one E):
[syntax_prettify linenums=”linenums”]RAISERROR(‘Fatal error’,16,1)[/syntax_prettify]

At last, sometimes, when using this functionality, you might need to ensure that you do exit and don’t run the rest of the statements- feel free to add RETURN command in such cases…

Read More

SQL - The Power of APPLY

MS SQL 2005 and up adds support for the APPLY clause, which, in turn, lets you join a table to any dynamic sets, such as table-valued-functions or even derived tables. While we can argue over the benefits and dangers of the latter (another set of article perhaps?), being able to do things more than one way is certainly always awesome.
The two new functions (CROSS APPLY and OUTER APPLY) are essentially INNER and OUTER JOINs for table-functions (you cannot directly join them like tables). Here is just a simple example of the usage (don’t hesitate to expand on it):

[syntax_prettify linenums=”linenums”]SELECT All.CustomerID
FROM
Customer as C
CROSS APPLY
fnSelectAllChildren(C.CustomerID) AS All
WHERE C.Status = 1[/syntax_prettify]

This technique can also be used in more complex queries alongside derived tables, FOR XML, etc., covering the need for things such as inline multi-row CONCAT (multiple rows into a single column):

[syntax_prettify linenums=”linenums”]SELECT
ito.ID,
(
SELECT TOP 1
ISNULL(LEFT(o.list, LEN(o.list) - 1), ‘Unknown’)
FROM
Orders AS ito2
CROSS APPLY (
SELECT
CONVERT(VARCHAR(12), ServiceType) + ‘,’ AS [text language=”()”][/text]
FROM
OrderService AS itos2 (NOLOCK)
JOIN
OrderServiceType AS itost (NOLOCK)
ON
itost.Id = itos2.OrderServiceType
WHERE
itos2.OrderId = ito.ID
FOR
XML PATH(‘’)
) o (list)
WHERE
ito2.ID = ito.ID
) AS AllTypes
FROM
Orders (NOLOCK) ito
WHERE
ito.Status = 0[/syntax_prettify]

Read More

IA Summit 2011: Friday (1 of 3)

IA Summit 2011 was a huge success. The sessions focused on improving skill sets, analytics, cognitive persuasion, holistic experience, and the new world order- helping Information Architects “play nice” and coexist with the rest of the workforce in an agile environment. Each and every world-famous host and attendee worked on helping each other, and me personally, get closer to the acme of perfection. My most humble appreciation goes to Justin Davis, Eric Reiss, Jonathon Colman, Louis Rosenfeld, and the rest of the presenters who also found time for personal attention… It is hard to summarize the amazing and already succinct presentations, let alone great hallway discussions we had, but I have to try, out of mere respect and, if for nothing else, to persuade you to read more about their respective slides and websites.

Read More

Contact Me

Information you submit through the form below will only be used in answering the email.