Limit Line support added to B-Line Charting Components 3.0

We just released an updated to B-Line Charting Components 3.0 with added support for limit lines, enhanced Flash Player 6 support, and enhanced version readability.

The limit line support is something that’s often requested and can be used in many scenarios. This functionality allows adding any number of horizontal or vertical lines perpendicular to any axis at a specified value point. Each line has a label which can be placed in one of 22 possible positions. Also each line is individually stylable and the label can be left as the associated value or customized. Here are four charts with limit lines.

We’ve also greatly improved Flash Player 6 compatibility by including an entire second set of components specifically optimized for Flash Player 6. Additionally, all charts now show the version number and target player in their live preview.

All customers can download the latest updates by logging in at http://www.blinex.com. For more information and to purchase the components visit http://www.blinex.com/products/charting.

Sybase SQL not same as Microsoft SQL

I’ve always heard that Sybase SQL Server was essentially the same as Microsoft SQL Server. I’ve even read about developers authoring applications against MSSQL and then deploying to Sybase SQL.

Well, this week I started on my first project with Sybase SQL Server and was amazed at how different they are. Sybase SQL doesn’t support “TOP” syntax and all SQL identifiers (table and field names) are case sensitive. So a query on “SELECT * FROM Documents” will fail if the table is name “DOCUMENTS”. That’s just what I ran into in the first few days.. I’m sure there will be more surprises to come.

So if there are others out there who assumed the two were compatible due to their common root and other community fodder, you are now forewarned.

New Microsoft Office Integration content in Advanced ColdFusion MX 7 Application Development

I just learned that Advanced ColdFusion MX 7 Application Development is shipping. The sites have not been updated yet, but it is shipping.

This update has a ton of great new content, including a whole chapter on MS Office integration which I was very pleased to contribute. This chapter provides more in depth information and new examples compared to what I’ve discussed in my previous presentations on the topic.

Everyone else is linking to the Amazon page, but it’s much cheaper on Overstock.com. Overstock stinks for research–little info and no reviews–but it’s good for the final purchase. You don’t need research for this book anyways, everyone knows it’s wonderful! :-)

Try/Catch and Try/Finally macros for VB.NET

I recently started playing around with macros in Visual Studio .NET 2003 and wrote up two I find very helpful: Wrap Try/Catch and Wrap Try/Finally. Basically, they take the selected text and wrap it in a try/catch block or a try/finally block.

This version supports empty selections (to create a new block) and both full-line and partial selections. It places the insertion point inside the try block for an empty selection and inside the catch block for a text selection.

Enjoy!

Imports EnvDTE
Imports System.Diagnostics

Public Module CodeModifiers

  Sub WrapTryCatch()
    WrapTrySomething("Catch ex As Exception")
  End Sub

  Sub WrapTryFinally()
    WrapTrySomething("Finally")
  End Sub

  Private Sub WrapTrySomething(ByVal middleText As String)

    If DTE.ActiveDocument Is Nothing Then
      Return
    End If

    Dim selection As TextSelection
    Dim startPoint As EditPoint
    Dim endPoint As EditPoint
    Dim insertPoint As EditPoint
    Dim empty As Boolean

    selection = DTE.ActiveDocument.Selection()
    startPoint = selection.TopPoint.CreateEditPoint()
    endPoint = selection.BottomPoint.CreateEditPoint()

    empty = startPoint.EqualTo(endPoint)

    DTE.UndoContext.Open("Wrap Try")
    Try

      Dim insertEndingCrLf As Boolean
      If endPoint.AtEndOfLine Then
        insertEndingCrLf = endPoint.AtStartOfLine
      Else
        insertEndingCrLf = True
      End If

      If Not endPoint.AtStartOfLine OrElse _
        endPoint.EqualTo(startPoint) Then
        endPoint.Insert(ControlChars.CrLf)
      End If

      endPoint.Insert(middleText + ControlChars.CrLf)

      If Not empty Then
        insertPoint = endPoint.CreateEditPoint()
      End If

      endPoint.Insert(ControlChars.CrLf + "End Try")

      If insertEndingCrLf Then
        endPoint.Insert(ControlChars.CrLf)
      End If

      ' insert try
      If Not AtStartOfLineIgnoringWhitepsace(startPoint) Then
        startPoint.Insert(ControlChars.CrLf)
      End If
      startPoint.Insert("Try" + _
                ControlChars.CrLf)

      If empty Then
        insertPoint = startPoint.CreateEditPoint()
      End If

      selection.MoveToPoint(insertPoint)
      selection.Indent()

    Finally
      DTE.UndoContext.Close()
    End Try
  End Sub

  Private Function AtStartOfLineIgnoringWhitepsace( _
                    ByVal point As EditPoint) As Boolean

    If point.AtStartOfLine Then
      Return True
    End If

    Dim p As EditPoint = point.CreateEditPoint()

    Do
      p.CharLeft()
      If Not Char.IsWhiteSpace(p.GetText(1), 0) Then
        Return False
      End If

      If p.AtStartOfLine Then
        Return True
      End If
    Loop

  End Function

End Module

This macro will only work for VB.NET. It can be translated to work with C# code or you can use the wonderful resharper plugin which unfortunately isn’t available for VB.NET.

New PrimalScript Release: CFMX7, CSS, and Double-Extensions and more!

Sapien put out a nice update to their IDE, PrimalScript with a few big additions.

  • ColdFusion MX 7. The PrimalSense files have been updated with all of the new CFMX7 syntax.
  • CSS. PrimalScript now gives PrimalSense on CSS files–it lists a drop-down of all valid CSS property names (use the toolbar button or CTRL-Space).
  • Double-Extensions. This is generic for all server-side code, but is really geared towards CF developers as it’s primarily a CF pratice. PrimalScript now recognizes files that have two extensions and treats the file based on the type of the first extension, not the last. So if you want to protect your css files via CF but still want PrimalScript help while editing them, you can use a name like “site.css.cfm” and PrimalScript will recognize the “.css.cfm” double-extension and treate the file as a CSS file. This is espeically useful for Fusebox developers who use double-extensions for their controller files such as “fusebox.xml.cfm” and “circuit.xml.cfm”.

If you haven’t checked out PrimalScript for CFML and AS development, we’d strongly suggest trying it out.